При добавлении сообщения в чат открытой линии OnOpenLineMessageAdd
Выберите инструмент для разработки с AI-агентом:
- используйте Битрикс24 Вайбкод, чтобы создать приложение для Битрикс24 по описанию задачи без знания языков программирования. Агент напишет код и разместит приложение на сервере без ручной настройки хостинга
- используйте MCP-сервер, чтобы разрабатывать интеграцию через REST API в своем проекте. Агент будет обращаться к официальной REST-документации
Scope:
imopenlinesКто может подписаться: любой пользователь
Событие OnOpenLineMessageAdd сработает при добавлении сообщения в чат открытой линии:
- клиент написал сообщение через коннектор или онлайн-чат
- Битрикс24 передал коннектору сообщение оператора или системное сообщение, в том числе отправленное методом imopenlines.crm.message.add
Для сообщений оператора в онлайн-чате событие не отправляется.
Подписаться на событие можно только через приложение. Событие приходит по всем каналам связи открытых линий, а не только по коннектору приложения. Чтобы обрабатывать только свои сообщения, проверяйте код коннектора в DATA.connector.connector_id.
События не будут отправляться в приложение, пока установка не завершена. Проверьте установку приложения
Что получает обработчик
Данные передаются в виде POST-запроса
Состав data зависит от того, кто написал сообщение.
Сообщение клиента. В data приходит только ключ DATA:
{
"event": "ONOPENLINEMESSAGEADD",
"event_handler_id": 145,
"data": {
"DATA": {
"connector": {
"connector_id": "livechat",
"line_id": 1,
"chat_id": 10585,
"user_id": 1985
},
"chat": {
"id": 10585
},
"message": {
"id": 80964,
"date": "",
"text": "Здравствуйте, нужна консультация",
"files": [],
"attach": "",
"system": "N",
"user_id": 1985
},
"ref": [],
"extra": {
"EXTRA_URL": ""
}
}
},
"ts": 1714649632,
"auth": {
"access_token": "s6p6eclrvim6da22ft9ch94ekreb52lv",
"expires_in": 3600,
"scope": "imopenlines",
"domain": "some-domain.bitrix24.com",
"server_endpoint": "https://oauth.bitrix24.tech/rest/",
"status": "F",
"client_endpoint": "https://some-domain.bitrix24.com/rest/",
"member_id": "a223c6b3710f85df22e9377d6c4f7553",
"refresh_token": "4s386p3q0tr8dy89xvmt96234v3dljg8",
"application_token": "51856fefc120afa4b628cc82d3935cce"
}
}
Сообщение оператора или системы. Кроме DATA, в data приходят ключи CONNECTOR и LINE:
{
"event": "ONOPENLINEMESSAGEADD",
"event_handler_id": 145,
"data": {
"CONNECTOR": "my_connector",
"LINE": 1,
"DATA": {
"connector": {
"connector_id": "my_connector",
"line_id": 1,
"user_id": 1985,
"chat_id": "ext-chat-42"
},
"message": {
"id": 80970,
"chat_id": 10587,
"user_id": 1,
"text": "Добрый день! Чем могу помочь?",
"files": [],
"attachments": [],
"params": [],
"system": "N"
},
"no_session": "N"
}
},
"ts": 1714649640,
"auth": {
"access_token": "s6p6eclrvim6da22ft9ch94ekreb52lv",
"expires_in": 3600,
"scope": "imopenlines",
"domain": "some-domain.bitrix24.com",
"server_endpoint": "https://oauth.bitrix24.tech/rest/",
"status": "F",
"client_endpoint": "https://some-domain.bitrix24.com/rest/",
"member_id": "a223c6b3710f85df22e9377d6c4f7553",
"refresh_token": "4s386p3q0tr8dy89xvmt96234v3dljg8",
"application_token": "51856fefc120afa4b628cc82d3935cce"
}
}
Обязательные параметры отмечены *
|
Параметр |
Описание |
|
event* |
Символьный код события. В данном случае — |
|
event_handler_id* |
Идентификатор обработчика события |
|
data* |
Объект с данными добавленного сообщения. Структура описана ниже |
|
ts* |
Дата и время отправки события из очереди событий |
|
auth* |
Объект, содержащий параметры авторизации и данные о Битрикс24, на котором произошло событие. Структура описана ниже |
Параметр data
|
Параметр |
Описание |
|
CONNECTOR |
Код коннектора, которому Битрикс24 передал сообщение. Приходит только для сообщения оператора или системы |
|
LINE |
Идентификатор открытой линии. Приходит только для сообщения оператора или системы |
|
DATA* |
Объект с данными сообщения. Для сообщения клиента структура описана ниже, для сообщения оператора или системы — ниже |
DATA для сообщения клиента
|
Параметр |
Описание |
|
connector* |
Объект с информацией о коннекторе. Структура описана ниже |
|
chat* |
Объект с информацией о чате, который передал коннектор. Структура описана ниже |
|
message* |
Объект с информацией о сообщении клиента. Структура описана ниже |
|
ref* |
Массив с кодом трекера |
|
extra* |
Объект с дополнительной информацией. Структура описана ниже |
Параметр connector
|
Параметр |
Описание |
|
connector_id* |
Код коннектора. Для онлайн-чата — |
|
line_id* |
Идентификатор открытой линии |
|
chat_id* |
Идентификатор чата, который передал коннектор. Для внешнего канала связи это идентификатор чата во внешней системе, для онлайн-чата — идентификатор чата онлайн-чата в Битрикс24 |
|
user_id* |
Идентификатор клиента в Битрикс24 |
Параметр chat
Объект chat содержит поля чата в том виде, в котором их передал коннектор, например методом imconnector.send.messages.
|
Параметр |
Описание |
|
id* |
Идентификатор чата. Совпадает с |
Параметр message
Объект message содержит поля сообщения в том виде, в котором их передал коннектор. Для онлайн-чата набор полей показан в примере.
|
Параметр |
Описание |
|
id* |
Идентификатор сообщения. Для внешнего канала связи это идентификатор сообщения во внешней системе |
|
date |
Дата и время сообщения. Для онлайн-чата приходит пустая строка |
|
text |
Текст сообщения |
|
files |
Файлы сообщения |
|
attach |
Вложение сообщения. Приходит для онлайн-чата |
|
system |
Отметка, что сообщение системное: |
|
user_id* |
Идентификатор клиента в Битрикс24 |
Параметр extra
|
Параметр |
Описание |
|
EXTRA_URL |
Адрес сайта из профиля клиента. Приходит для онлайн-чата |
DATA для сообщения оператора или системы
|
Параметр |
Описание |
|
connector* |
Объект с информацией о коннекторе и чате клиента. Структура описана ниже |
|
message* |
Объект с информацией о сообщении в Битрикс24. Структура описана ниже |
|
no_session* |
Отметка, что сообщение отправлено без привязки к сессии: |
Параметр connector
|
Параметр |
Описание |
|
connector_id* |
Код коннектора |
|
line_id* |
Идентификатор открытой линии |
|
user_id* |
Идентификатор клиента в Битрикс24 |
|
chat_id* |
Идентификатор чата во внешней системе |
Параметр message
|
Параметр |
Описание |
|
id* |
Идентификатор сообщения в Битрикс24. Передайте его в метод imconnector.send.status.delivery, чтобы подтвердить доставку |
|
chat_id* |
Идентификатор чата открытой линии в Битрикс24 |
|
user_id* |
Идентификатор автора сообщения в Битрикс24 |
|
text* |
Текст сообщения |
|
files* |
Файлы сообщения |
|
attachments* |
Вложения сообщения |
|
params* |
Дополнительные параметры сообщения |
|
system* |
Отметка, что сообщение системное: |
Параметр auth
Обязательные параметры отмечены *
|
Название |
Описание |
|
access_token |
Токен авторизации OAuth 2.0 |
|
expires_in |
Время в секундах до истечения срока действия токена |
|
scope* |
Скоуп, в рамках которого произошло событие |
|
domain* |
Адрес Битрикс24, на котором произошло событие |
|
server_endpoint* |
Адрес сервера авторизации Битрикс24, необходимый для обновления токенов OAuth 2.0 |
|
status* |
Статус приложения, подписавшегося на это событие:
|
|
client_endpoint* |
Общий путь для вызовов методов REST API для Битрикс24, на котором произошло событие |
|
member_id* |
Идентификатор Битрикс24, на котором произошло событие |
|
refresh_token |
Токен продления авторизации OAuth 2.0 |
|
application_token* |
Токен для безопасной обработки событий |
Токены авторизации не всегда передаются в обработчик события. Если хит, инициировавший событие, не удалось привязать к конкретному пользователю Битрикс24, токены не передаются. Обязательно проверяйте содержимое ключа auth в коде.
Рекомендуем хранить токены, полученные ранее при установке приложения. Используйте их при работе с интерфейсом приложения в виде встроек, виджетов и так далее.
Продолжите изучение
- События: обзор методов и событий
- Зарегистрировать новый обработчик события event.bind
- При изменении сообщения в чате открытой линии OnOpenLineMessageUpdate
- При удалении сообщения в чате открытой линии OnOpenLineMessageDelete
- При создании сессии открытой линии OnSessionStart
- При закрытии сессии открытой линии OnSessionFinish