Создание
диалогового приложения |
Инструментарий
Майкрософт предлагает удобную программную абстракцию в виде
Bot Framework, которая позволяет начать достаточно просто
создавать свои чат-боты, работающие сразу со многими
каналами общения.
Создать
своего бота, поддерживающего беседу с пользователем на
английском языке можно с помощью
Microsoft Bot Framework (https://dev.botframework.com/).
Для
работы с ботами используются следующие ключевые элементы:
-
Bot Builder SDK (доступен
для C# и для Node.js)
Предназначен для создания ключевой функциональности
бота.
Основан на WebAPI, и определяет протокол общения бота с
внешним миром.
В рамках SDK есть эмулятор, позволяющий отлаживать
ботов, а также набор классов для упрощения реализации
некоторых ключевых абстракций, таких, как
продолжительные диалоги с состоянием.
-
Cognitive Services (составная
часть Project
Oxford)
Позволяют упростить анализ естественного языка и
выделение смысла из текстовых предложений.
С помощью веб-интерфейса можно определить основные
синтаксические конструкции, и автоматически присвоить им
соответствующие намерения пользователя (intents), на
которые затем будет реагировать бот.
-
Bot
Connector
(конфигурирует
соединение бота на сайте
botframework.com).
Позволяет
привязать бот к одному или нескольким каналам общения,
таким, как Skype, Slack, Telegram и др.
-
Каталог ботов,
в котором со временем можно будет публиковать ссылки на
различные боты.
|
Создание облачного сервиса
Основа
бота – веб-сервис в облаке.
Для создания такого сервиса :
После этого в Visual Studio можно создать новый проект типа Bot
Application:
В созданном проекте за основную функциональность бота
отвечает метод
Post в
файле Controllers/MessagesController.cs.
Для
простейшего Hello-бота этот метод реализуется следующим
образом:
public async Task<Message> Post([FromBody]Message message)
{
if (message.Type == "Message")
{
var reply =
message.Text.ToLower() == "hello" ?
"Hello!" :
"I do not understand you!";
return message.CreateReplyMessage(reply);
}
else
{
return HandleSystemMessage(message);
}
}
|
Тестирование бота
Тестирование бота:
Для
простейшего бота можно использовать порт на C# известной
программы Eliza.
Получившийся чат-бот можно скачать в
репозитории GitHub.
В первой
версии схема построения бота мало чем отличается от
приведенной выше программы, только для формирования ответа
вызывается метод готовой библиотеки Eliza.
Такая простая
реализация не очень подходит для поддержки длительных
диалогов с пользователем, поскольку метод Post используется
для обработки запросов всех пользователей, и нет разделения
состояния между ними.
Чтобы это
сделать, можно в явном виде смотреть на идентификатор сессии
(message.ConversationID),
использовать объекты BotUserData/BotConversationData, или же
задействовать более прогрессивные API с поддержкой диалогов
(о них мы расскажем в дальнейших статьях).
|
Запуск в облако
Чтобы
запустить бота в облаке, нужно:
-
опубликовать получившися Web API в Azure.
-
войти на
сайт
http://dev.botframework.com
-
зарегистрировать нового бота придумав для него
уникальный AppID
-
получить
сгенерированный автоматически App Secret.
-
в файле Web.Config (диалогового
приложения) добавить App ID и App Key:
<configuration>
<appSettings>
<add key="AppId" value="YourAppId" />
<add key="AppSecret" value="YourAppSecret" />
</appSettings>
Теперь можно протестировать работоспособность бота в панели
свойств на сайте Bot Framework (или воспользоваться
эмулятором, для чего надо будет ввести правильные AppID и
App Secret):
Теперь, когда
бот работает в эмуляторе, можно привязать его к различным
каналам связи. Для этого в панели управления ботом на сайте
Bot Framework необходимо добавить и сконфигурировать эти
каналы. Для этого выбираем предпочитаемый канал связи, и
следуем инструкциям:
Например, в
Telegram можно создать
новый бот для беседы со специальным ботом Bot Father, после чего
получить Access Token, и предоставить его сайту Bot
Framework.
После этого
Bot Connector возьмет на себя все посреднические операции
между Telegram API и ботом, и можно общаться с ботом
из Telegram.
13.04.2016
У
Telegram
меньше чем за год с момента запуска
проекта
создано более 3 500
ботов
(список некоторых в магазине).
Функции ботов разные:
17.04.2016
Руководство Telegram
объявило конкурс на
лучшего бота. Призовой фонд конкурса составит миллион
долларов. Разработчики лучших ботов будут получать гранты в
размере от $25000.
Главными требованиями к ботам заявлены очень быстрая работа,
полезность для достаточно большого количества людей, работа
в инлайн-режиме (вызов
бота через его никнейм из строки ввода в любом чате).
Среди областей разработки ботов - искусственный
интеллект и обработка естественных языков.
|
Еще подробнее!
Очень подробно и обстоятельно про создание бота с нуля с
помощью Bot Framework
см. в
докладе в BUILD
(видео 1 час +)
|
Skype Bot API
Murphy
Murphy
создан в рамках проекта
http://www.projectmurphy.net/.
Зайдя на
сайт, можно установить Murphy себе в Skype (если
используете последнюю версию, которая поддерживает ботов)
и начать с ним общаться.
Murphy
можно задавать вопросы вида
|
Чат-бот для
Facebook
12.04.2016
На конференции F8 Facebook представила платформу для
разработки ботов для своего мессенджера.
Чат-боты в
Facebook построены на основе личных сообщений с публичной
страницей от имени пользователя и
для создания бота нужно создать:
-
публичную страницу, с которой будут общаться
пользователи (ее название будет соответствоать имени
бота)
-
зарегистрировать и
настроить приложение в
в аккаунте разработчика
(для доступа к API)
зайдя по ссылке developers.facebook.com/apps,
нажав на добавление нового приложения, выбрав настройки
вручную
-
в левом меню перейти на
вкладку Messenger и «Начать».
-
выбрав страницу, созданную
для бота, и копируя token (сохранить его где-нибудь, он
пригодится дальше). -
настроить webhook для обработки входящих сообщений
закачав на сервер, где будет размещен бот, скрипт (в
переменную $verify_token добавить какой-то текст):
<?php
$verify_token = ""; // Verify token
if (!empty($_REQUEST['hub_mode']) && $_REQUEST['hub_mode']
== 'subscribe' && $_REQUEST['hub_verify_token'] == $verify_token)
{
echo $_REQUEST['hub_challenge'];
}
-
на вкладке Messenger в блоке «Webhooks» нажать «Setup
Webhooks» и в поле «Обратный URL-адрес» указать адрес
бота (SSL — сертификат обязателен)
-
в поле «Поля подписки» выбрать, уведомления получаемые
на webhook:
message_deliveries — уведомления о доставке сообщения
messages — сообщения, написанные пользователем боту
и др...
-
связать приложение и страницу
-
найти в мессенджере бота, отправить ему любое сообщение
и получить от него ответ.
Бот будет доступен только для владельца аккаунта. Чтобы бот
был доступен для всех, нужно:
запросить модерацию мессенджера
(на вкладке Messenger, в блоке «App Review for Messenger»
- кнопка «Request Permissions» - выбрать «pages_messaging»
и нажать «Add items».
дождаться модерации
(несколько дней....)
см.
также:
|
kmp |