
Знакомство с Bot Template Framework.
С появлением и ростом популярности чатботов, все чаще возникает вопрос «Какой инструмент использовать при разработке чатбота?». Если ответить кратко — тот который подходит вашим потребностям больше всего. Один способ — использовать платформы (такие как Chatfuel или Manychat), второй же — программированием собственного приложения. При этом при первом способе у нас есть большие ограничения по работе и улучшению бота, а при втором способе — мы теряем гибкость настройки чатбота в визуальном редакторе, и часто теряем драгоценное время на написание сценариев прямиком в коде. В Beedevs мы не описываем сценариев чатботов прямиком в коде. Для этих целей мы используем Bot Template Framework. Это фреймворк который позволяет нивелировать недостатки второго способа, упростив и уменшив время описания сценария чатбота до минимума. Как использовать фреймворк? Давайте рассмотрим ниже..
Узнать больше о графических компонентах можно во второй части.
Написание простого бота Hello World
Описание сценария бота на Bot Template Framework начинается с создания json файла и описания начальных полей.
1 2 3 4 5 6 7 |
{ "name": "My Hello World Bot", "blocks": [ ], "drivers": [ ] } |
Сейчас нам нужно добавить новый блок в раздел «blocks». Блок — это одно сообщение, которое отправит чатбот по определенному событию, это может быть текст, рисунок, файл или кнопочное меню. Всего фреймворк имеет 17 типов блоков:
text, image, menu, audio, video, file, location, attachment, carousel, list, request, ask, intent, if, method, extend, idle
Также нам нужно добавить новый драйвер в раздел «drivers». Драйвер — это настройка платформы на которой будет работать наш бот. На момент написания статьи, Bot Template Framework поддерживает 6 драйверов:
Facebook, Telegram, Viber, Skype, Dialogflow, Alexa
Для демонстрационных целей будем делать чатбот на Telegram. Поэтому описываем наш драйвер
1 2 3 4 |
{ "name": "telegram", "token": "635222000:AAGulXNIfCfG3KYZpSq3LUvnn0000000000" } |
И добавим текстовый блок который возвращает «Hello World!»
1 2 3 4 5 |
{ "name": "My First Text Block", "type": "text", "content": "Hello World!" } |
Как вы уже видите, в «content» мы помещаем ответ чатбота. Объязательно нужно указать тип блока — «text».
Весь сценарий чатбота выглядит так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
{ "name": "My Hello World Bot", "blocks": [ { "name": "My First Text Block", "type": "text", "content": "Hello World!" } ], "drivers": [ { "name": "telegram", "token": "635222000:AAGulXNIfCfG3KYZpSq3LUvnn0000000000" } ] } |
Если сейчас перейти в наш чатбот, он ничего не ответит, почему? Потому что нет события которое определяет когда нужно отравить блок «My First Text Block». Поэтому добавим «template» поле, в котором описываються ключевые слова на которые чатбот ответит нашим блоком. Для примера добавим hi, а также /start (это комманда которую отправляет Telegram при старте чатбота). И так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
{ "name": "My Hello World Bot", "blocks": [ { "name": "My First Text Block", "type": "text", "template: "hi;/start", "content": "Hello World!" } ], "drivers": [ { "name": "telegram", "token": "635222000:AAGulXNIfCfG3KYZpSq3LUvnn0000000000" } ] } |
Смотрим результат работы:
Всё работает нормально. Теперь давайте усложним задачу и отправим следующим сообщением рисунок с кнопкой-переходом на наш блог.
Image блок в Bot Template Framework
Опишим новый блок с рисунком и кнопкой (хорошо что блок «рисунок» поддерживает кнопки).
1 2 3 4 5 6 7 8 9 10 11 |
{ "name": "My Second Image Block", "type": "image", "content": { "text": "Visit our blog webpage", "url": "http://nonprofitorgs.files.wordpress.com/2010/07/blog.jpg", "buttons": { "https://blog.beedevs.com": "Website" } } } |
Как раньше уже упоминалось, блоку необходимо событие при котором Bot Template Framework отправит его в чат. Но на этот раз, добавим наш блок в очередь вторым сообщением после «Hello World!». Для этого добавим поле «next» в первый блок с именем второго блока — «My Second Image Block». И так, полный сценарий чатбота:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
{ "name": "My Hello World Bot", "blocks": [ { "name": "My First Text Block", "type": "text", "template: "hi;/start", "content": "Hello World!", "next": "My Second Image Block" }, { "name": "My Second Image Block", "type": "image", "content": { "text": "Visit our blog webpage", "url": "http://nonprofitorgs.files.wordpress.com/2010/07/blog.jpg", "buttons": { "https://blog.beedevs.com": "Website" } } } ], "drivers": [ { "name": "telegram", "token": "635222000:AAGulXNIfCfG3KYZpSq3LUvnn0000000000" } ] } |
Теперь испытаем наш чатбот:
Как видите все работает нормально. В следующей статье мы попробуем более продвинутые возможности фреймворка.
Заключение
Bot Template Framework — это простой инструмент для описания сценария чатбота в текстовом файле, не используя какие либо навыки программирования. При чем фреймворк поддерживает несколько платформ, для использования которых достаточно добавить описание нового драйвера и… Вуаля, у нас новый чатбот на Facebook или Viber.