[Из песочницы] BotMan знакомство

Хочу рассказать о PHP фреймворке для создания ботов BotMan (Сайт). Botman можно использовать и как библиотеку, и как расширение Laravel (BotMan Studio).

dgtqihmpuod1owjdseao0dux5h4.gif


Преимущество данного фреймворка в том, что код для бота может работать для множества платформ:

  • Amazon Alexa
  • Cisco Spark
  • Facebook Messenger
  • Hangouts Chat
  • HipChat
  • Microsoft Bot Framework
  • Nexmo
  • Slack
  • Telegram
  • Twilio
  • Web
  • WeChat
  • VK


Пример кода:

hears('Hello BotMan!', function($bot) {
    $bot->reply('Hello!');
    $bot->ask('Whats your name?', function($answer, $bot) {
        $bot->say('Welcome '.$answer->getText());
    });
});

$botman->listen();

Результат:

vnljvmgzq7bhotetbwzyw52apoa.png

Установка 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.

e-kqrqsu2uvg9mwpcsihxcz1efs.png

oa4yikarsl2irthngczquwqktrw.png

Все бот зарегистрирован и у нас есть токен.

В первую очередь необходимо установить драйвер 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


Удачи всем. Делайте ботов.

© Habrahabr.ru