Внешние события – это механизм Sherlock Platform позволяющий информировать бота из внешних систем. Внешние события могут использоваться:
Для получения call-back уведомлений при интеграции с сервисами оплаты или другими внешними системами, когда часть этапов единого процесса выполняются вне бота
Для информирования одного пользователя бота о действиях другого пользователя внутри Sherlock Platform
Для отправки триггерных уведомлений из внешних систем
Основное отличие от прямого использования методов отправки сообщений API Sherlock Platform заключается в том, что логика обработки внешних событий настраивается и меняется на стороне Sherlock Platform, включая все доступные команды. И в том числе может зависеть от текущего состояния диалога пользователя.
Для вызова внешнего события необходимо на API Sherlock Platform отправить один из следующих методов:
Где
RequestID, channel/profile, ExternalID, ClientID - используются для идентификации диалога в который направляется событие следующим образом:
RequestID и пара channel/profile однозначно идентифицируют требуемый диалог
ClientID - идентифицирует клиента. В случае нескольких открытых диалогов у клиента, уведомление отправляется в последний
ExternalID - внешний идентификатор, который должен быть привязан в базе. Ниже приведен пример запроса к базе, который привязывает email в качестве внешнего идентификатора
INSERT INTO tbl_ExternalObjectMapping(ExternalID, InternalID, ObjectTypeID, ExternalSystemID)
VALUES('#ClientEmail#','#Request.ID#', 3, '81683a9c-3c34-476c-8b0f-0cd274a925b1')
text - идентификатор события. Используется для выбор конкретного внешнего события внутри Sherlock Platform. Настройка внешних событий внутри Sherlock Platform выполняется с помощью событий бота. Смотрите Настройка событий бота
ExtraParameters – дополнительные параметры, которые сохраняются в контекст бота. Параметры должны быть переданы в JSON следующего формата: {“Ключ 1”:”Значение 1”,“Ключ 2”:”Значение 2”}
JSON должен быть закодирован через URL Encoded. Смотрите http://www.codenet.ru/services/urlencode-urldecode/
Вызов методов может выполняться через GET или POST. Для POST тело запроса пишется в переменную POST_Result контекста бота.