Идея следующая:
- телеграм присылает на веб-хук сообщение,
- с минимальными обработками помещаем сообщение в регистр сведений,
- чем-то проверяем записи регистра,
- обрабатываем,
- отвечаем.
Вроде бы ничего сложного, но "подводных камней" оказалось нормально так... Например, как для каждой пары "бот-пользователь" вести диалог не перепутав одно с другим? Или такое - как собрать все данные диалога и до окончания диалога не растерять их?
По идее можно на один веб-хук повесить несколько ботов (не проверял). Для бота в справочнике "Константы" создать запись, где "Наименование" должно быть такое же как при установке веб-хука.
Например у меня HTTP-сервис опубликован с шаблоном "/telegram/*", веб-хук одного бота вешаем на https://<адресСервера>:<port>/TestBase/hs/webhook/telegram/Bot_Name_1, веб-хук второго бота вешаем на https://<адресСервера>:<port>/TestBase/hs/webhook/telegram/Bot_Name_2
В справочнике "Константы" создаем две записи:
Bot_Name_1, значение = ТокенБота1
Bot_Name_2, значение = ТокенБота2
Таким образом мы сможем понять, от какого бота пришло сообщение на HTTP-сервис.
Саму обработку сообщений вынес в обработку "ОбработчикБОТ" (простите за тавтологию). Там собственно и строится диалог с пользователем.
Выглядит это так:
В сухом остатке, так сказать "подытожим":
1. Все полученные сообщения накапливаются в регистр сведений "ТелеграмСобытия"
2. Диалоги с пользователем ведем с помощью регистра "ТелеграмСтекРазговоров"
3. Диалоги и набор диалогов - эта два справочника "БотДиалоги" и "БотСтекДиалогов"
4. На сейчас все сырое, много идей в голове, но все как-то сумбурно ))) Хотел еще диалоги о предоставлении файликов и всякие действия. Но пока отложу... С мыслями надо собраться...
Плюс мысль - в самих диалогах тексты, наборы кнопок сделать динамическими, формирующимися по результатам предыдущих диалогов. Ну и обработку ответов еще надо обдумать.