[Из песочницы] BotMan знакомство
Хочу рассказать о PHP фреймворке для создания ботов BotMan (Сайт). Botman можно использовать и как библиотеку, и как расширение Laravel (BotMan Studio).
Преимущество данного фреймворка в том, что код для бота может работать для множества платформ:
- Amazon Alexa
- Cisco Spark
- Facebook Messenger
- Hangouts Chat
- HipChat
- Microsoft Bot Framework
- Nexmo
- Slack
- Telegram
- Twilio
- Web
- VK
Пример кода:
hears('Hello BotMan!', function($bot) {
$bot->reply('Hello!');
$bot->ask('Whats your name?', function($answer, $bot) {
$bot->say('Welcome '.$answer->getText());
});
});
$botman->listen();
Результат:
Установка BotMan Studio
Создадим новый проект в папке botman:
composer create-project --prefer-dist botman/studio botman
Можно проверить работу через командную строку:
$ php artisan botman:tinker
You: test
BotMan: hello!
Или проверить через браузер. Запустим тестовый сервер:
php artisan serve
Laravel development server started:
Откроем в браузере 127.0.0.1:8000/botman/tinker
И напишем hi или start conversation для проверки.
Как создать бота для telegram?
В первую очередь необходимо зарегистрировать бота у @BotFather.
Все бот зарегистрирован и у нас есть токен.
В первую очередь необходимо установить драйвер telegram:
composer require botman/driver-telegram
Вариант А, если вы используете BotMan Studio:
php artisan botman:install-driver telegram
В файле
config/botman/telegram.php
добавить ваш токен Telegram
'telegram' => [
'token' => 'YOUR-TELEGRAM-TOKEN-HERE',
]
Вариант Б, если вы не используете BotMan Studio:
DriverManager::loadDriver(\BotMan\Drivers\Telegram\TelegramDriver::class);
// Create BotMan instance
BotManFactory::create($config);
Регистрируем Webhook в Telegram
Чтобы Telegram знал, как он может общаться с вашим ботом BotMan, нужно зарегистрировать URL-адрес, по которому работает BotMan, в Telegram.
Вы можете сделать это, отправив POST-запрос на этот URL:
https://api.telegram.org/bot/setWebhook
Для этого запроса POST требуется только один параметр url с URL-адресом, указывающим на роут BotMan. Если вы используете Botman Studio, это будет:
https://site.domain/botman
HTTPS обязателен по соображениям безопасности.
Вместо ручной отправки запроса в Telegram вы можете использовать консольную команду для регистрации вашего Webhook. Можно передать --output флаг, чтобы увидеть json Telegram ответа.
$ php artisan botman:telegram:register
Удачи всем. Делайте ботов.