imconnector.send.messages
Отправить сообщения в Битрикс24
Описание
Метод imconnector.send.messages принимает сообщения из внешней системы и передает их в открытую линию Битрикс24 через пользовательский коннектор.
В параметрах метода используются значения внешней системы: идентификатор пользователя, идентификатор чата, ссылка на чат и его название в приложении, которое зарегистрировало коннектор.
В результате выполнения метода возвращаются созданные в Битрикс24 идентификатор чата и идентификатор диалога открытой линии.
Метод работает только в контексте приложения.
Параметры
CONNECTOR
string
обязательный
Строковый код коннектора, который задали в параметре ID при вызове imconnector.register
LINE
integer
обязательный
Идентификатор открытой линии.
Идентификатор можно получить методами imopenlines.config.get и imopenlines.config.list.get
MESSAGES
array
обязательный
Массив сообщений. Каждый элемент массива — одно сообщение в формате объекта с тремя обязательными блоками: user, message, chat.
Структура объекта подробно описана ниже
Параметр MESSAGES
user
object
необязательный
Данные пользователя внешней системы.
Структура объекта подробно описана ниже
message
object
необязательный
Данные сообщения внешней системы.
Структура объекта подробно описана ниже
chat
object
необязательный
Данные чата внешней системы.
Структура объекта подробно описана ниже
Примеры запроса
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"CONNECTOR": "myconnector",
"LINE": 107,
"MESSAGES": [
{
"user": {
"id": "ext-user-42",
"last_name": "Иванов",
"name": "Иван",
"picture": {"url": "https://example.ru/u42.png"},
"url": "https://example.ru/users/42",
"gender": "male",
"email": "ivan@example.ru",
"phone": "+79990000000",
"skip_phone_validate": "Y"
},
"message": {
"id": "ext-msg-1001",
"date": 1773265993,
"text": "Добрый день",
"files": [
{"url": "https://example.ru/files/spec.pdf", "name": "spec.pdf"}
],
"disable_crm": "Y"
},
"chat": {
"id": "channel-123",
"name": "Канал поддержки",
"url": "https://example.ru/chats/123"
}
}
],
"auth": "**put_access_token_here**"
}' \
https://**put_your_bitrix24_address**/rest/imconnector.send.messages
// This snippet is an ES module: top-level await requires type="module" or a bundler.
// $b24 is an already-initialized SDK instance (see the SDK "Get started" guide).
import { Text } from '@bitrix24/b24jssdk'
import type { B24Frame } from '@bitrix24/b24jssdk'
declare const $b24: B24Frame
// Shape of the payload returned in result (match the "response handling" section of the page)
type SendMessagesResult = {
SUCCESS: boolean
DATA: {
RESULT: Array<{
user: string
message: {
id: string
date: object
text: string
files: unknown[]
}
chat: {
id: string
name: string
description: string
}
extra: {
skip_phone_validate?: string
disable_tracker?: string
}
SUCCESS: boolean
ERRORS?: string[]
session?: {
ID: string
CHAT_ID: string
}
}>
}
}
try {
const response = await $b24.actions.v2.call.make<SendMessagesResult>({
method: 'imconnector.send.messages',
params: {
CONNECTOR: 'myconnector',
LINE: 107,
MESSAGES: [
{
user: {
id: 'ext-user-42',
last_name: 'Smith',
name: 'John',
picture: { url: 'https://example.com/u42.png' },
url: 'https://example.com/users/42',
gender: 'male',
email: 'john@example.com',
phone: '+79990000000',
skip_phone_validate: 'Y',
},
message: {
id: 'ext-msg-1001',
date: 1773265993,
text: 'Hello',
files: [{ url: 'https://example.com/files/spec.pdf', name: 'spec.pdf' }],
disable_crm: 'Y',
},
chat: {
id: 'channel-123',
name: 'Support channel',
url: 'https://example.com/chats/123',
},
},
],
},
requestId: Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
} else {
const result = response.getData()!.result
console.info('Success:', result.SUCCESS, 'Sessions:', result.DATA.RESULT.map(r => r.session?.CHAT_ID))
}
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
<!-- Load the SDK (UMD build); it is exposed as the global B24Js -->
<script src="https://unpkg.com/@bitrix24/b24jssdk@1/dist/umd/index.min.js"></script>
<script>
async function sendMessages() {
try {
// Initialize the SDK inside a Bitrix24 frame
const $b24 = await B24Js.initializeB24Frame()
const response = await $b24.actions.v2.call.make({
method: 'imconnector.send.messages',
params: {
CONNECTOR: 'myconnector',
LINE: 107,
MESSAGES: [
{
user: {
id: 'ext-user-42',
last_name: 'Smith',
name: 'John',
picture: { url: 'https://example.com/u42.png' },
url: 'https://example.com/users/42',
gender: 'male',
email: 'john@example.com',
phone: '+79990000000',
skip_phone_validate: 'Y',
},
message: {
id: 'ext-msg-1001',
date: 1773265993,
text: 'Hello',
files: [{ url: 'https://example.com/files/spec.pdf', name: 'spec.pdf' }],
disable_crm: 'Y',
},
chat: {
id: 'channel-123',
name: 'Support channel',
url: 'https://example.com/chats/123',
},
},
],
},
requestId: B24Js.Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
return
}
const result = response.getData().result
console.info('Success:', result.SUCCESS, 'Sessions:', result.DATA.RESULT.map(r => r.session?.CHAT_ID))
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
}
document.addEventListener('DOMContentLoaded', sendMessages)
</script>
from b24pysdk.errors import BitrixAPIError, BitrixSDKException
try:
bitrix_response = client.imconnector.send.messages(
connector="myconnector",
line=107,
messages=[
{
"user": {
"id": "ext-user-42",
"last_name": "Smith",
"name": "John",
"picture": {
"url": "https://example.com/u42.png",
},
"url": "https://example.com/users/42",
"gender": "male",
"email": "john@example.com",
"phone": "+79990000000",
"skip_phone_validate": "Y",
},
"message": {
"id": "ext-msg-1001",
"date": 1773265993,
"text": "Hello",
"files": [
{
"url": "https://example.com/files/spec.pdf",
"name": "spec.pdf",
},
],
"disable_crm": "Y",
},
"chat": {
"id": "channel-123",
"name": "Support channel",
"url": "https://example.com/chats/123",
},
},
],
).response
result = bitrix_response.result
print(result)
except BitrixAPIError as error:
print(
"Ошибка Bitrix API",
f"error: {error.error}",
f"error_description: {error.error_description}",
sep="\n",
)
except BitrixSDKException as error:
print(f"Ошибка Bitrix SDK: {error.message}")
except Exception as error:
print(f"Непредвиденная ошибка: {error}")
$result = $b24Service->core->call(
'imconnector.send.messages',
[
'CONNECTOR' => 'myconnector',
'LINE' => 107,
'MESSAGES' => [
[
'user' => [
'id' => 'ext-user-42',
'last_name' => 'Иванов',
'name' => 'Иван',
'picture' => ['url' => 'https://example.ru/u42.png'],
'url' => 'https://example.ru/users/42',
'gender' => 'male',
'email' => 'ivan@example.ru',
'phone' => '+79990000000',
'skip_phone_validate' => 'Y',
],
'message' => [
'id' => 'ext-msg-1001',
'date' => 1773265993,
'text' => 'Добрый день',
'files' => [
['url' => 'https://example.ru/files/spec.pdf', 'name' => 'spec.pdf'],
],
'disable_crm' => 'Y',
],
'chat' => [
'id' => 'channel-123',
'name' => 'Канал поддержки',
'url' => 'https://example.ru/chats/123',
],
],
],
]
);
BX24.callMethod(
'imconnector.send.messages',
{
CONNECTOR: 'myconnector',
LINE: 107,
MESSAGES: [
{
user: {
id: 'ext-user-42',
last_name: 'Иванов',
name: 'Иван',
picture: { url: 'https://example.ru/u42.png' },
url: 'https://example.ru/users/42',
gender: 'male',
email: 'ivan@example.ru',
phone: '+79990000000',
skip_phone_validate: 'Y',
},
message: {
id: 'ext-msg-1001',
date: 1773265993,
text: 'Добрый день',
files: [{ url: 'https://example.ru/files/spec.pdf', name: 'spec.pdf' }],
disable_crm: 'Y',
},
chat: {
id: 'channel-123',
name: 'Канал поддержки',
url: 'https://example.ru/chats/123',
},
},
],
},
function(result) {
console.log(result.data());
}
);
$result = CRest::call(
'imconnector.send.messages',
[
'CONNECTOR' => 'myconnector',
'LINE' => 107,
'MESSAGES' => [
[
'user' => [
'id' => 'ext-user-42',
'last_name' => 'Иванов',
'name' => 'Иван',
'picture' => ['url' => 'https://example.ru/u42.png'],
'url' => 'https://example.ru/users/42',
'gender' => 'male',
'email' => 'ivan@example.ru',
'phone' => '+79990000000',
'skip_phone_validate' => 'Y',
],
'message' => [
'id' => 'ext-msg-1001',
'date' => 1773265993,
'text' => 'Добрый день',
'files' => [
['url' => 'https://example.ru/files/spec.pdf', 'name' => 'spec.pdf'],
],
'disable_crm' => 'Y',
],
'chat' => [
'id' => 'channel-123',
'name' => 'Канал поддержки',
'url' => 'https://example.ru/chats/123',
],
],
],
]
);
// client и ctx уже созданы — см. раздел «SDK для Go»
res, err := client.Core().Call(ctx, "imconnector.send.messages", b24.Params{
"CONNECTOR": "myconnector",
"LINE": 107,
"MESSAGES": []b24.Params{
{
"user": b24.Params{
"id": "ext-user-42",
"last_name": "Иванов",
"name": "Иван",
"picture": b24.Params{
"url": "https://example.ru/u42.png",
},
"url": "https://example.ru/users/42",
"gender": "male",
"email": "ivan@example.ru",
"phone": "+79990000000",
"skip_phone_validate": "Y",
},
"message": b24.Params{
"id": "ext-msg-1001",
"date": 1773265993,
"text": "Добрый день",
"files": []b24.Params{
{
"url": "https://example.ru/files/spec.pdf",
"name": "spec.pdf",
},
},
"disable_crm": "Y",
},
"chat": b24.Params{
"id": "channel-123",
"name": "Канал поддержки",
"url": "https://example.ru/chats/123",
},
},
},
})
if err != nil {
return fmt.Errorf("imconnector.send.messages: %w", err)
}
var item struct {
Success bool `json:"SUCCESS"`
}
if err := json.Unmarshal(res.Result, &item); err != nil {
return fmt.Errorf("разбор ответа: %w", err)
}
fmt.Println(item.Success)
Ответ
HTTP-статус: 200
{
"result": {
"SUCCESS": true,
"DATA": {
"RESULT": [
{
"user": "585",
"message": {
"id": "ext-msg-1001",
"date": {},
"text": "Добрый день",
"files": []
},
"chat": {
"id": "channel-123",
"name": "Канал поддержки",
"description": "Ссылка на исходный пост: https://example.ru/chats/123"
},
"extra": {
"skip_phone_validate": "Y",
"disable_tracker": "Y"
},
"SUCCESS": true,
"session": {
"ID": "323",
"CHAT_ID": "1767"
}
}
]
}
},
"time": {
"start": 1773265993,
"finish": 1773265994.487149,
"duration": 1.4871490001678467,
"processing": 1,
"date_start": "2026-03-11T13:53:13+03:00",
"date_finish": "2026-03-11T13:53:14+03:00",
"operating_reset_at": 1773266593,
"operating": 1.1916680335998535
}
}
Возвращаемые данные
SUCCESS
boolean
Возвращает true в случае успешной отправки сообщения
DATA
object
Данные c информацией об отправленных сообщениях.
Структура объекта подробно описана ниже
time
time
Информация о времени выполнения запроса
Обработка ошибок
HTTP-статус: 400
{
"error": "ERROR_ARGUMENT",
"error_description": "Argument 'MESSAGES' is null or empty"
}
| Код | Описание | Значение |
|---|---|---|
403 |
WRONG_AUTH_TYPE |
Current authorization type is denied for this method Application context required |
400 |
ERROR_ARGUMENT |
Argument 'CONNECTOR' is null or empty |
400 |
ERROR_ARGUMENT |
Argument 'LINE' is null or empty |
400 |
ERROR_ARGUMENT |
Argument 'MESSAGES' is null or empty |
400 |
ERROR_ARGUMENT |
The value of an argument 'MESSAGES' must be of type array |
400 |
ERROR_ARGUMENT |
The MESSAGES parameter must be an array of messages (arrays) |
400 |
ERROR_ARGUMENT |
The incorrect structure of a message inside MESSAGES parameter |
400 |
NOT_ACTIVE_LINE |
Линия c таким ID неактивна или не существует |
400 |
IMCONNECTOR_NO_CORRECT_PROVIDER |
Не удалось найти подходящий провайдер для коннектора |
400 |
IMCONNECTOR_NOT_SPECIFIED_CORRECT_COMMAND |
Не указана корректная команда |

