NAME

Telegram::BotKit - Set of Perl classes for creation of interactive and dynamic Telegram bots. Now bots can only process text, but work in progress :)

VERSION

version 0.03

KEY FEATURES

1. State machine in JSON file

Allows to create a simple bots for house even for housewife

2. Support of dymanic screens

screen = text [and/or] image [and/or] document [and/or] voice [and/or] location [and/or] reply markup

3. Independent and prev msg dependent screens

Screens can be shown just according sequence in JSON or can depends on previous user reply (callback_msg property)

4. Data validation

Bot can automatically control is last user reply valid and show pre-defined message if reply is not valid

5. Smart serialization

At last screen bot is calling some perl function that uses some external API.

Bot store sequence of user inputs and can process data before calling serialize function

6. Auto 'Go back' key

For convenience

STATE DIAGRAM

CONFIGURATION EXAMPLE

Here is example of simple booking bot

{ "screens" : [ { "name": "item_select", "start_command": "/book", "welcome_msg": "Please select an item to book", "keyboard": [ { "key": "Item 1", "answ" : "Good" }, { "key": "Item 2", "answ" : "Well" }, { "key": "Item 3", "answ" : "Fine" } ] }, { "name": "day_select", "parent": "item_select", "welcome_msg": "Please select a day", "keyboard": [ { "key": "today" }, { "key": "tomorrow" } ] }, { "name": "time_range_select", "parent": "day_select", "welcome_msg": "Please select atime range", "keyboard": [ { "key": "morning", "answ" : "You are early bird" }, { "key": "day", "answ" : "Good choice" }, { "key": "evening", "answ" : "Owl" } ] }, { "name": "morning_time_range_select", "parent": "time_range_select", "callback_msg": "morning", "kb_build_func": "dynamic1_build_func" }, { "name": "dynamic2", "parent": "time_range_select", "callback_msg": "day", "kb_build_func": "dynamic2_build_func" }, { "name": "info", "start_command": "/info", "welcome_msg": "Get info", "kb_build_func": "info_build_func" } ] }

AUTHOR

Pavel Serikov <pavelsr@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2017 by Pavel Serikov.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.