Заметки
Как написать свой коннектор открытых линий
Базовая схема своего коннектора открытых линий: imconnector.register, установка приложения, входящие и исходящие сообщения.
Свой коннектор открытых линий — это приложение, а не один обработчик. Нужно зарегистрировать коннектор, принять входящие сообщения, обработать исходящие события и хранить связь внешнего клиента с CRM.
Задача
Свой коннектор нужен, когда штатных каналов не хватает или внешний сервис должен работать через открытые линии как полноценный источник обращений.
Коннектор отвечает за две стороны обмена: принимает сообщения из внешнего канала и передаёт их в открытую линию, а исходящие сообщения операторов отправляет обратно во внешний канал.
Для пользователя внутри Битрикс24 это должно выглядеть как обычный диалог открытой линии: очередь, оператор, CRM, история, статусы.
Регистрация коннектора
Начинается всё с приложения и метода imconnector.register. Коннектор регистрируется в контексте приложения.
BX24.callMethod(
'imconnector.register',
{
ID: 'custom_telegram',
NAME: 'Custom Telegram',
ICON: {
DATA_IMAGE: 'data:image/png;base64,...'
},
ICON_DISABLED: {
DATA_IMAGE: 'data:image/png;base64,...'
},
PLACEMENT_HANDLER: 'https://example.com/connector/settings.php',
},
function (result) {
console.log(result.error() || result.data());
}
); После регистрации коннектор появляется в контакт-центре и может иметь страницу настроек. На этой странице обычно выбирают линию, токены внешнего сервиса и параметры канала.
Установка приложения
Коннектор не должен быть просто скриптом с вебхуком. Нужна нормальная установка приложения и хранение токенов.
// install.php приложения:
// 1. зарегистрировать коннектор;
// 2. подписаться на события исходящих сообщений;
// 3. сохранить auth и параметры установки;
// 4. открыть страницу настройки коннектора. На установке важно сохранить данные авторизации, зарегистрировать обработчики событий и подготовить страницу настроек. Без этого исходящие сообщения операторов некуда будет отправлять.
Входящие и исходящие сообщения
Входящее сообщение приходит из внешнего канала, а исходящее — из Битрикс24 через событие коннектора.
Входящее сообщение нужно привести к формату открытой линии: внешний пользователь, чат, ID сообщения, текст и линия.
$payload = [
'CONNECTOR' => 'custom_telegram',
'LINE' => 1,
'MESSAGES' => [
[
'user' => [
'id' => 'telegram_1001',
'name' => 'Иван',
],
'message' => [
'id' => 'tg_555',
'text' => 'Здравствуйте',
],
'chat' => [
'id' => 'telegram_chat_1001',
],
],
],
]; Исходящие сообщения обрабатываются через события коннектора. Обработчик получает сообщение оператора и отправляет его во внешний сервис через его API.
CRM и идентификация клиента
Хороший коннектор сразу решает, как внешний клиент будет сопоставляться с CRM.
Если канал знает телефон или email, их лучше передавать в CRM-логику, чтобы Битрикс мог найти контакт или создать новый. Если известен только внешний ID, его нужно сохранять как техническую связку.
Для Telegram username не должен быть единственным ключом: он может измениться или отсутствовать. Лучше хранить внешний ID и отдельно проверенный телефон, если он был получен.