Download the PHP package talanoff/telegram-bot-dialogs without Composer
On this page you can find all versions of the php package talanoff/telegram-bot-dialogs. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download talanoff/telegram-bot-dialogs
More information about talanoff/telegram-bot-dialogs
Files in talanoff/telegram-bot-dialogs
Package telegram-bot-dialogs
Short Description Telegram Bot API PHP SDK extension that allows to implement dialogs in bots
License MIT
Informations about the package telegram-bot-dialogs
Dialogs for Telegram Bot SDK
The extension for Telegram Bot API PHP SDK that allows to implement dialogs in bots
This library allows to make simple dialogs for your Telegram bots that based on the Telegram Bot SDK.
Installation
You can easy install the package using Composer:
composer require okaufmann/telegram-bot-dialogs
You can publish the config-file with:
php artisan vendor:publish --provider="BotDialogs\DialogsServiceProvider" --tag="config"
Each dialog should be implemented as class that extends basic Dialog as you can see in example bellow:
For initiate new dialog you have to use Dialogs class instance to add new dialog implementation. And for execute the first and next steps you have to call Dialogs::proceed() method with update object as an argument. Also it is possible to use dialogs with Telegram commands and DI through type hinting.
And code in the webhook controller
For storing dialog information(also for the data that pushed by the Dialog::remember() method) using Redis.
Advanced definition of the dialog steps
You can define default text answers for your dialog steps. For this you have to define the step as an array with name and response fields.
In this case, if you don't need any logic inside the step handler - you can don't define it. Just put the response inside the step definition. It works good for welcome messages, messages with tips/advices and so on. If you want format response with markdown, just set markdown
field to true
.
Also, you can control dialog direction in step by defining jump
and end
fields. jump
acts as jump()
method - dialog jumps to particular step. end
field, is set to true
, ends dialog after current step.
Also, you can use is_dich
(is it a dichotomous question) option of the step. If this option set to true, you can use yes
and no
fields of the Dialog instance to check user answer. For example:
In the config/dialogs.php
you can modify aliases for yes/no meanings.
Often in dichotomous question you only need to send response and jump to another step. In this case, you can define steps with responses and set their names as values of 'yes', 'no' or 'default' keys of dichotomous step. For example:
Access control with in dialogs
You can inherit AuthorizedDialog class and put Telegram usernames into \$allowedUsers property. After that just for users in the list will be allowed to start the dialog.
Available methods of the Dialog class
start()
- Start the dialog from the first stepproceed()
- Proceed the dialog to the next stepend()
- End dialogjump($step)
- Jump to the particular stepremember($value)
- Remember some information for the next step usage (For now just a "short" memory works, just for one step)isEnd()
- Check the end of the dialog
Available methods of the Dialogs class
add(Dialog $dialog)
- Add the new dialogget(Telegram\Bot\Objects\Update $update)
- Returns the dialog object for the existing dialogproceed(Telegram\Bot\Objects\Update $update)
- Run the next step handler for the existing dialogexists(Telegram\Bot\Objects\Update $update)
- Check for existing dialog
Steps configuration in separate files
You can define dialog configuration in separate yaml or php files. To do this, set scenarios
in dialogs configuration file, using dialog class name as key and path to config file as value, for example:
Configuration from files in production environment stored in default cache instance. Because of this, you shall add php artisan cache:clear
to your deployment script.
All versions of telegram-bot-dialogs with dependencies
ext-redis Version *
illuminate/contracts Version ^7.0 || ^8.0
illuminate/support Version ^7.0 || ^8.0
irazasyed/telegram-bot-sdk Version ^3.0
symfony/yaml Version 5.*