Часто при старте диалога необходимо передать в Sherlock Platform ряд параметров клиента, определяющих дальнейшую логику работы. Например, такими параметрами могут быть email или идентификатор клиента, источник клиента, язык, а также другие параметры.
Формат передачи входного параметра зависит от канала и описан в статье Формат ссылок для запуска ботов и передача входных параметров (Deeplink). В случае чата на сайт необходимые значения указываются в секции params переменной json, используемой для инициализации чата. Например, ClientADName в примере ниже:
{ params:{ 'ClientADName': 'Test' }, settings: { channelsIds: ["<Guid 1>", "<Guid 2>"], } }
Входные параметры далее передаются в контекст бота по следующим правилам:
Входной параметр мессенджера сохраняется в переменной System.Deeplink
Входные параметры чата на сайт сохраняются в соответствии с заданным именем. Например, для кода выше ClientADName
При повторном переходе в мессенджер значение переменной System.Deeplink обновляется
Дополнительно в Sherlock Platform реализованы следующие механизмы:
В случае перехода в мессенджер из виджета или чата на сайт, все стартовые параметры чата на сайт автоматически передаются для диалога в мессенджере. Это обеспечивается за счет автоматической подстановки параметра (Deeplink), идентифицирующего диалог, в ссылку виджета. И далее - чтение данных параметров при старте диалога.
Для входного параметра в мессенджерах можно передавать json как строку, кодированную base64. Такая строка будет расшифрована и реквизиты json сохраняются в переменные контекста бота. Например, для json {"e":"[email protected]","id":"123"} в контексте бота будут созданы переменные System.Deeplink.e и System.Deeplink.id со значениям [email protected] и 123 соответственно.
При необходимости передавать значительное число параметров в мессенджер необходимо сохранить параметры через API по аналогии с логикой работы чата на сайт. Для этого используется контроллер Widget.