Как вы знаете, в Битрикс24 есть свой внутренний мессенджер, а также Открытые линии – для общения с клиентами. Чатботы могут пригодиться и там, и там.
Как сделать чатбота
4 мин
Откроем раздел «Добавить чатбот» в инструменте Разработчикам и выберем сценарий «Информировать сотрудников в чате».
Первым шагом, нам нужно добавить бота в наш Битрикс24. Придумаем ему название и укажем адрес обработчика, на который будут приходить сообщения от сотрудников
Доступность из внешней сети
Очень важно, чтобы адрес обработчика был доступен из внешней сети. Никаких localhost, никаких самоподписанных SSL-сертификатов и так далее. Проверяйте доступность вашего URL каким-то сторонними сервисами, не уповайте, пожалуйста, на то, что именно в вашем браузере этот адрес успешно открывается.
Выберем тип чатбота. Интерфейс предлагаем нам 4-е основных типа:
- чатбот для внутреннего мессенджера, который будет отвечать сразу,
- чатбот для внутреннего мессенджера, который будет «делать вид», что он набирает текст ответа,
- чатбот для открытых линий
- и, наконец, специальный вид чатбота, который обычно используется в качестве чатбота -суфлера в групповых чатах.
Для сегодняшнего примера выберем первый тип и нажмем кнопку «Создать бота».
После создания бота мы видим новые поля, самое важное из которых - CLIENT_ID бота. В дальнейшем это потребуется нам для вызовов REST API от имени нашего чатбота.
Мы можем прямо сейчас убедиться, что чатбот работает.
В разделе «Генератор запросов» уже собраны все основные параметры, которые позволят нам отправить сообщение пользователю от чатбота при помощи метода imbot.message.add. Идентификатор пользователя указывается в параметре DIALOG_ID. Нажимаем «Выполнить». Запрос срабатывает, и мы видим, что текущий пользователь получил сообщение от чатбота.
Теперь скачаем пример из урока и загрузим его на сервер так же, как вы это делали ранее, вставив в settings.php код нашего текущего вебхука.
В скачанном примере, помимо стандартных файлов нашего SDK, добавлен файл handler.php c логикой работы чатбота. Чуть позже мы расскажем, что именно он будет делать и как.
Вернемся в интерфейс Битрикс24 и перейдем в диалог с чатботом. Отправим ему сообщение «Привет, как дела?». Чатбот нам тут же отвечает. Прекрасно! Осталось разобраться, как это работает. А значит, пора внимательнее посмотреть на код в файле handler.php – ведь именно сюда, в нашем случае, приходят сообщения от пользователей.
Сообщения приходят в виде POST-запроса с данными определенной структуры. Поскольку код примера сохраняет эти запросы в лог-файле, то сейчас мы можем посмотреть, что содержится внутри.
Как видите, тут все довольно просто. Во-первых, Битрикс24 сообщает нам, что вызвал наш обработчик в результате возникновения события. А именно, события отправки нашему чатботу нового сообщения от пользователя портала. У чатботов есть ряд других событий, которые они могут получать, все они описаны в документации.
Далее, мы видим, в каком диалоге происходило общение, и какой пользователь написал чатботу. Поскольку в нашем случае общение происходит не в групповом чате, а в индивидуальном, идентификатор диалога совпадает с идентификатором пользователя портала. И наконец, мы видим, то самое сообщение, которое только что писали в чате.
Мы можем обработать это сообщение и подготовить ответ. В нашем примере мы просто делаем reply пользователю с текстом его же сообщения при помощи уже известного нам метода rest imbot.message.add.
Вы видите, что в коде указаны нужные параметры – идентификатор чатбота, client_id. Номер диалога берется из данных, которые пришли в обработчик (поскольку с чатботом будут в дальнейшем общаться разные пользователи портала). Текст ответа формируется из сообщения пользователя.
В реальных задачах вы можете анализировать сообщения пользователей, подгружать динамически данные из внешних систем для формирования ответа и многое другое. Чатботы позволяют автоматизировать очень многие рутинные операции, делая их легкодоступными для пользователей Битрикс24.
Список ресурсов
Материалы уроку:
- Пример из урока example13.zip
- SDK CRest перейти
- Чатботы в Битрикс24 перейти