Заметки
Как написать свой коннектор открытых линий
Собственный коннектор нужен, когда внешняя переписка должна попасть в очередь открытой линии: с оператором, историей и связью с CRM. Это двусторонняя интеграция, поэтому одного входящего webhook недостаточно.
Приложение регистрирует канал через imconnector.register, подключает его к выбранной линии и передаёт сообщения через imconnector.send.messages. У входящего сообщения есть три внешних ключа: пользователь, чат и сообщение. Сохраняйте их отдельно от ID объектов Bitrix24.
Например, внешний chat.id должен оставаться одинаковым для продолжения одного диалога. Если генерировать его заново на каждое сообщение, вместо истории получится набор разрозненных обращений. Username клиента тоже не подходит для постоянного ключа: он может измениться.
Ответ оператора приходит в обработчик событий коннектора. Его нужно отправить во внешний канал, сохранить внешний ID результата и передать предусмотренный API статус доставки.
Первый рабочий стенд должен показывать весь круг: клиент → оператор → клиент, затем повторную доставку одного входящего сообщения и ошибку внешнего API. Именно на этих проверках видно, является ли коннектор рабочим каналом, а не односторонней пересылкой.
Для ответа оператора это imconnector.send.status.delivery. В нём внутренние ID из события и внешние ID канала передаются раздельно. Пример JSON и объяснение пустого DATA помогают проверить именно этот шаг.
Документация: imconnector.send.messages.