Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
abills:docs:manual:sender:telegram:bot [2017/08/11 10:26]
anton
abills:docs:manual:sender:telegram:bot [2017/09/18 16:27] (текущий)
anton [На примере взаимодействия модуля Msgs]
Строка 2: Строка 2:
  
 {{ :​abills:​docs:​manual:​sender:​telegram:​backend-plugin-telegram.png?​nolink |}} {{ :​abills:​docs:​manual:​sender:​telegram:​backend-plugin-telegram.png?​nolink |}}
 +\\
 +Красный - запросы отправки даных (без обработки полученных даных)\\
 +Зеленый - запросы получения даных (получение масива ''​update'',​ даных на сервере Telegram)\\
 +\\
  
 ==== На примере взаимодействия модуля Msgs ==== ==== На примере взаимодействия модуля Msgs ====
  
-Как видим, схема состоит из двух функциональных частей:​ модуля ''​Msgs::​Messaging'',​ ''​Backend::​Plugin::​Telegram''​ и ''​Telegram::​BotAPI''​.\\ ​+Как видим, схема состоит из трёх функциональных частей:​ модуля ''​Msgs::​Messaging'',​ ''​Backend::​Plugin::​Telegram''​ и ''​Telegram::​BotAPI''​.\\ ​
  
 Уведомления присылаются:​ Уведомления присылаются:​
Строка 14: Строка 18:
 ''​data''​ - строка длиной до 64 байт. \\ ''​data''​ - строка длиной до 64 байт. \\
 \\ \\
-Для кнопки ​ответить,​ ''​data''​ содержит значение ''​MSGS:​REPLY:​%MSG_ID%''​. ('​МОДУЛЬ:​ОПЕРАЦИЯ:​ДАННЫЕ'​)+Для кнопки ​тветить", ''​data''​ содержит значение ''​MSGS:​REPLY:​%MSG_ID%''​. ('​МОДУЛЬ:​ОПЕРАЦИЯ:​ДАННЫЕ'​)
 \\ \\
 Когда клиент нажимает на кнопку "​Ответить",​ в ''​Backend::​Plugin::​Telegram''​ попадает update типа callback. Из него вытягивается поле ''​data'',​ и разбивается ​ на части. В зависимости от значения ''​МОДУЛЬ'',​ подгружается нужный ''​ModuleInterface''​ и callback передаётся в его метод process_data(). Если ''​ModuleInterface''​ может обработать ''​ОПЕРАЦИЯ'',​ он возвращает обьект класа Operation, в которую будут приходить все сообщения пользователя,​ пока установлен блокирующий флаг (''​has_operation_lock''​). Когда клиент нажимает на кнопку "​Ответить",​ в ''​Backend::​Plugin::​Telegram''​ попадает update типа callback. Из него вытягивается поле ''​data'',​ и разбивается ​ на части. В зависимости от значения ''​МОДУЛЬ'',​ подгружается нужный ''​ModuleInterface''​ и callback передаётся в его метод process_data(). Если ''​ModuleInterface''​ может обработать ''​ОПЕРАЦИЯ'',​ он возвращает обьект класа Operation, в которую будут приходить все сообщения пользователя,​ пока установлен блокирующий флаг (''​has_operation_lock''​).