Обработа - демо пример чат-бота для WhatsApp на базе 1С, который может быть взят за основу для написания своих чат-ботов. Интеграция сделана с использованием http сервиса, предоставляемого Green API.
- Платформа 1С не ниже версии 8.3.10
- Два номера с учетками WhatsApp. Номера нужны, чтобы отправлять сообщения как бы "самому себе". При этом первый номер будет тот, с которого мы будем писать команды чат-боту (далее
клиентский номер
), а второй номер - с которого будет отвечать сам бот (далееномер бота
). Отправлять с одного номера не получится. - Аккаунт в сервисе Green API. Подойдет бесплатный тариф "Разработчик".
-
Устанавливаем на телефон два приложения - обычный WhatsApp и Whatsapp Business.
-
Один номер телефона регистрируем в WhatsApp, а другой в Whatsapp Business.
-
Скачиваем обработку чат-бота,
-
Открываем обработку в режиме 1С Предприятие, переходим на вкладку
Настройки
и нажимаем наПомощник подключения
. Далее следуем инструкциям помощника. В помощнике будет предложено сканировать QR код. Сканируем его дляномера бота
, с которого чат-бот будет писать на нашклиентский номер
.
- Переходим на вкладку
Чат-бот
и нажимаем кнопкуЗапустить бота
. - Открываем WhatsApp, на котором зарегистрирован
клиентский номер
и пишем любое сообщение наномер бота
. Бот отвечает приветственным сообщением:
- Бот запущен. Теперь мы можем с ним общаться. Например, если написать в ответ цифру 1, то получим список номенклатуры:
Чат-бот работает в режиме ожидания получения сообщений - 20 сек. Далее переходит в режим бездействия - 10 сек. В реальных условиях режим бездействия можно сократить, чтобы работа чат-бота не прерывалась. Рекомендуется перенести код в фоновое задание на сервер.
На время работы чат-бота ваш телефон должен быть заряжен и подключен к Интернет. Если телефон выключиться, то работа чат-бота прекратится.
Сообщения и ответы бота можно настроить в коде обработки под себя. С помощью бота можно запрашивать у клиента информацию по шагам, уточняя свой вопрос с каждым новым ответом клиента.
Также поддерживаются глобальные команды. Например, если написать боту текстом слово Выход
, то диалог сбросится и начнется с самого начала. Эту функцию можно использовать для реализации команд типа Отписаться
, Стоп
и т.п.
- Открываем обработку в режиме конфигуратора.
- В модуле объекта смотрим на функцию
ПодготовитьШаблоныСообщений()
. Эта функция содержит все сообщения, которые пишет сам бот в ответ на сообщения пользователя. - Чтобы добавить новый ответ внутри этой функции вызываем метод
НовыйОтветБота
по аналогии как это сделано в демо-примере:
Функция ПодготовитьШаблоныСообщений(КоллекцияШаблонов, КоллекцияГлобальныхШаблонов)
ОтветПоНоменклатуре = НовыйОтветБота(НовоеСообщение, "1", "Выводим
список товаров...", "Подключаемый_ВывестиНоменклатуру");
КонецФункции
Если нужно, то прописываем обработчик, который срабатывает после того, как клиент ответил боту верной командой. Обработчик должен быть в модуле объекта и иметь два входных параметра, например как в демо:
Процедура Подключаемый_ВывестиНоменклатуру(Чат, Шаблон)
ОтправитьСообщениеВЧат(Чат.ИдЧата,
"Арт: 123456, Чайник Электролюкс; цена: 1 200 руб; на складе: 12 шт,
|Арт: 12223, Холодильник Хайер; цена: 45 000 руб; на складе: 4 шт
|Арт: 54656, Телевизор Самсунг; цена: 110 000 руб; на складе: 2 шт");
КонецПроцедуры
Чтобы сделать вложенный ответ, используем тот же метод НовыйОтветБота()
, но только в качестве первого параметра передаем результат родительского
метода, например как в демо:
// Родительский ответ
ОтветПоНоменклатуре = НовыйОтветБота(НовоеСообщение, "1", "Выводим
список товаров...", "Подключаемый_ВывестиНоменклатуру");
// Вложенный ответ
ОтветМенеджер = НовыйОтветБота(ОтветПоНоменклатуре,, "Хотите связаться с менеджером (Да/Нет)?");
Чтобы прописать глобальную команду, используем метод НовыйГлобальныйОтветБота()
и первым параметром в него передаем переменную КоллекцияГлобальныхШаблонов
. Пример:
Функция ПодготовитьШаблоныСообщений(КоллекцияШаблонов, КоллекцияГлобальныхШаблонов)
НовыйГлобальныйОтветБота(КоллекцияГлобальныхШаблонов, "Выход", "Работа с чат ботом завершается...", "Подключаемый_ВыключитьЧатБот");
КонецФункции