Блог Горошко Андрея Bitrix24 Добавить сообщение im.message.add

Добавить сообщение im.message.add

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Добавить сообщение im.message.add». Вы узнаете экспертные методики работы с im.message.add и научитесь избегать типичных ошибок начинающих разработчиков.

Добавить сообщение im.message.add

Тут может не хватать некоторых данных — дополним в ближайшее время

  • нужны правки под стандарт написания
  • не указаны типы параметров
  • отсутствуют примеры

> Scope: im
>
> Кто может выполнять метод: любой пользователь

Метод im.message.add отправляет сообщение от текущего пользователя в чат.

ПараметрПримерОписаниеРевизия
*DIALOG_ID^^
string
chat13
или
256
Идентификатор диалога. Формат:
— chatXXX – чат получателя, если сообщение для чатах
—
XXX – идентификатор получателя, если сообщение для приватного диалога
18
MESSAGE^^
text
Текст сообщенияТекст сообщения.
Поддерживается форматирование
18
SYSTEM
boolean
NОтображать сообщения в виде системного сообщения. По умолчанию ‘N’.

Сообщение с признаком системного нельзя изменить или удалить

18
ATTACH
object
ПримерВложение18
URL_PREVIEW
boolean
YПреобразовывать ссылки в rich-ссылки, необязательное поле, по умолчанию ‘Y’18
KEYBOARD
object
ПримерКлавиатура18
MENU
object
ПримерКонтекстное меню18

Практические примеры использования в коде

  • cURL (Webhook)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{DIALOG_ID: "chat5",MESSAGE: "Сообщение [B]с вложением[/B] цвета primary и поддержкой [I]bb-кодов[/I]",ATTACH: [{MESSAGE: "API будет доступно в обновлении [B]im 24.0.0[/B]"}]}' \
    https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webbhook_here**/im.message.add
  • cURL (OAuth)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{DIALOG_ID: "chat5",MESSAGE: "Сообщение [B]с вложением[/B] цвета primary и поддержкой [I]bb-кодов[/I]",ATTACH: [{MESSAGE: "API будет доступно в обновлении [B]im 24.0.0[/B]"}]}' \
    https://**put_your_bitrix24_address**/rest/im.message.add
  • JS
    try
    {
    	const response = await $b24.callMethod(
    		'im.message.add',
    		{
    			DIALOG_ID: "chat5",
    			MESSAGE: "Сообщение [B]с вложением[/B] цвета primary и поддержкой [I]bb-кодов[/I]",
    			ATTACH: [
    				{
    					MESSAGE: "API будет доступно в обновлении [B]im 24.0.0[/B]"
    				},
    			],
    		}
    	);
    	
    	const result = response.getData().result;
    	console.log('response', result.answer);
    	if (result.error())
    		alert("Error: " + result.error());
    	else
    		console.log(result);
    }
    catch( error )
    {
    	console.error('Error:', error);
    }
  • PHP
    try {
        $response = $b24Service
            ->core
            ->call(
                'im.message.add',
                [
                    'DIALOG_ID' => "chat5",
                    'MESSAGE' => "Сообщение [B]с вложением[/B] цвета primary и поддержкой [I]bb-кодов[/I]",
                    'ATTACH' => [
                        [
                            'MESSAGE' => "API будет доступно в обновлении [B]im 24.0.0[/B]"
                        ],
                    ],
                ]
            );
    
        $result = $response
            ->getResponseData()
            ->getResult();
    
        echo 'Success: ' . print_r($result, true);
        echo 'response: ' . $result['answer'];
    
        if ($result['error']) {
            echo 'Error: ' . $result['error'];
        } else {
            echo 'Data: ' . print_r($result['data'], true);
        }
    
    } catch (Throwable $e) {
        error_log($e->getMessage());
        echo 'Error adding message: ' . $e->getMessage();
    }
  • BX24.js
    BX24.callMethod(    
        'im.message.add',
        {
            DIALOG_ID: "chat5",
            MESSAGE: "Сообщение [B]с вложением[/B] цвета primary и поддержкой [I]bb-кодов[/I]",
            ATTACH: [
                {
                    MESSAGE: "API будет доступно в обновлении [B]im 24.0.0[/B]"
                },
            ],
        },
        function(result) {
            console.log('response', result.answer);
            if(result.error())
                alert("Error: " + result.error());
            else
            console.log(result.data());
        }
    );
  • PHP CRest
    require_once('crest.php');

    $result = CRest::call(
        'im.message.add',
        [
            "DIALOG_ID" => "chat20921",
            "MESSAGE"   => "Сообщение [B]с вложением[/B] цвета primary и поддержкой [I]bb-кодов[/I]",
            "ATTACH":   => [
                [
                    "MESSAGE" => "API будет доступно в обновлении [B]im 24.0.0[/B]"
                ],
            ],
        ]
    );

    echo '<pre>';
    print_r($result);
    echo '</pre>';

Ответ в случае успеха

{
    "result": 11
}

Результат выполнения: идентификатор сообщения MESSAGE_ID или ошибка.

Ответ в случае ошибки

{
    "error": "USER_ID_EMPTY",
    "error_description": "Идентификатор получателя не задан в случае отправки сообщения в чат один-на-один"
}

Описание ключей

  • error – код возникшей ошибки
  • error_description – краткое описание возникшей ошибки

Возможные коды ошибок

КодОписание
USER_ID_EMPTYИдентификатор получателя не задан в случае отправки сообщения в чат один-на-один
CHAT_ID_EMPTYИдентификатор чата получателя не задан в случае отправки сообщения в чат
ACCESS_ERRORНедостаточно прав для отправки сообщения
MESSAGE_EMPTYНе передан текст сообщения
ATTACH_ERRORВесь переданный объект вложения не прошел валидацию
ATTACH_OVERSIZEПревышен максимально допустимый размер вложения (30 Кб)
KEYBOARD_ERRORВесь переданный объект клавиатуры не прошел валидацию
KEYBOARD_OVERSIZEПревышен максимально допустимый размер клавиатуры (30 Кб)
MENU_ERRORВесь переданный объект меню не прошел валидацию
MENU_OVERSIZEПревышен максимально допустимый размер меню (30 Кб)
PARAMS_ERROR*Что-то пошло не так

Ссылки по теме

  • Как работать с набираемыми клавиатурами
  • Как работать с вложениями
  • Форматирование сообщений
  • Работа с контекстным меню

💡 Экспертное мнение и рекомендации

Ключевые выводы по теме «Добавить сообщение im.message.add»:

Использование современных стандартов D7 при работе с im.message.add позволяет писать чистый, масштабируемый и безопасный код. Не забывайте обрабатывать исключения (try/catch) и проверять права доступа текущего пользователя перед выполнением критических операций.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Related Post

Навигация и заголовокНавигация и заголовок

Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Навигация и заголовок». Мы подготовили подробный разбор принципов работы и развернутые примеры интеграции. Навигация и

Удалить единицу измерения crm.measure.deleteУдалить единицу измерения crm.measure.delete

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Удалить единицу измерения crm.measure.delete». Вы узнаете экспертные методики работы с crm.measure.delete и научитесь

Получить информацию о деле обзвона crm.calllist.getПолучить информацию о деле обзвона crm.calllist.get

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Получить информацию о деле обзвона crm.calllist.get». Вы узнаете экспертные методики работы с crm.calllist.get