Для интеграции окна отправки сообщения по номеру телефона во внешние системы необходимо по кнопке вызвать следующую ссылку
https://<Sherlock_URL>/sendByPhone?phone=<phoneNumber>&externalObjectId=<externalObjectId>&externalSystemCode=<externalSystemCode>
В шаблоне ссылки задаются следующие параметры:
phone – номер телефона для идентификации клиента
email – email для идентификации клиента
-
name – имя клиента. Используется для нового клиента
socialNetworkMessengerId - идентификатор типа канала. Определяет начальную вкладку диалога
userProfileId - канал для отправки сообщения. Актуально, если каналов несколько
templateCode – если передано, то открывать точный шаблон сообщения
url – ссылка для отправки (на документ, изображение, сайт)
CloseDialogAfterSending - если true, то диалог закрывается и переход в модуль диалоги не происходит. Иначе (false) открывается диалог по номеру телефона
externalObjectId – идентификатор для авторизации. Такой идентификатор может формироваться ботом Sherlock Plarform по согласованным правилам или импортироваться из внешней системы. В качестве идентификатора может использоваться ID во внешней системе, email или телефон. Также Sherlock Paltform может формировать временный код для входа и отправлять ссылку с кодом во внешнее API.
externalSystemCode – идентификатор системы с которой идет синхронизация
Другие параметры для подстановки в контекст бота (могут затем использоваться в шаблонах WhatsApp)
params - base64 строка с json, включающим все параметры выше
Для прямой подстановки параметров шаблонов WhatsApp необходимо именовать их 1, 2, 3. Например
1=Иван%20Петров&2=Николай%20Кузнецов&3=Кухонный%20гарнитур
{"1": "Иван Петров","2": "Николай Кузнецов","3": "Кухонный гарнитур"}
Для корректной авторизации необходимо, чтобы в tbl_ExternalObjectMapping была запись с такими значениями
ExternalId - значение, идентичное Query параметру externalObjectId
InternalId - идентификатор пользователя (Id из tbl_User)
ObjectTypeId - всегда 1 для идентификатора пользователя
ExternalSystemId - идентификатор внешней системы (Id из tbl_ExternalSystem)
ExpiresAt - заполнять, если необходимо ограничение срока действия внешнего идентификатора
Для создания такой записи через API доступен следующий метод:
POST https:///api/v2/ExternalObjectMapping/UpdateByCode
В качестве тела запроса передавать Json следующего формата
{ "externalId": "Внешний идентификатор пользователя", "internalId": "Guid – id пользователя", "objectTypeId": 1, // для пользователя всегда 1 "externalSystemId": "Guid – id внешней системы" }
При открытии по ссылке открывается окно отправки сообщения выглядит следующим образом:

Если был передан phone - подставляет номер телефона и выбирает клиента
Если был передан name – подставляет имя клиента (для нового клиента)
Если был выбран templateCode – подставлять соответствующий шаблон
Если был выбран url – подставляет соответствующую ссылку на ресурс
Если были переданы параметры для контекста бота - сохраняет переданные параметры в контекст бота
Если имена параметров 1, 2, так далее, то значения подставляются в параметры шаблона
Окно отправки сообщения предоставляет следующие возможности:
Отображается информация о выбранном шаблоне и пример отправляемого текста
Изменение шаблона
Изменение значений параметров шаблона
Изменение значения номера клиента
Прикрепление файла для отправки, если он не был передан по ссылке и выбранный шаблон позволяет отправку файлов
После отправки сообщения пользователь переходит на страницу диалога с клиентом, также переданные параметры сохраняются в контекст бота, в параметрах шаблона выполняется замена значений по необходимости