Интеграция окна отправки сообщения по номеру телефона во внешние системы

Последние изменения: 29.10.2024

Для интеграции окна отправки сообщения по номеру телефона во внешние системы необходимо по кнопке вызвать следующую ссылку

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, так далее, то значения подставляются в параметры шаблона


Окно отправки сообщения предоставляет следующие возможности:

  • Отображается информация о выбранном шаблоне и пример отправляемого текста

  • Изменение шаблона

  • Изменение значений параметров шаблона

  • Изменение значения номера клиента

  • Прикрепление файла для отправки, если он не был передан по ссылке и выбранный шаблон позволяет отправку файлов


После отправки сообщения пользователь переходит на страницу диалога с клиентом, также переданные параметры сохраняются в контекст бота, в параметрах шаблона выполняется замена значений по необходимости

Помогла ли вам статья?