Работа с чатом
При отправке сообщения отправляет параметр DIALOG_ID - как я понимаю, эта некая абстракция, помогающая указать чат независимо от того, личка это или групповой чат. При личном сообщении DIALOG_ID - ID того пользователя, которому пишется сообщение
Отправка в личку
При отправке в личку в качестве DIALOG_ID передаётся ID того пользователя, кому написано сообщение.
Далее с помощью по этим параметрам получается сам chatId - ID записи из таблицы b_im_chat
Метод делает такой запрос
-- RelationFrom - ID того пользователя, кому адресовано сообщение
-- RelationTo - ID того пользователя, который написал и отправил сообщение
SELECT RelationFrom.CHAT_ID
FROM
b_im_chat Chat,
b_im_relation RelationFrom,
b_im_relation RelationTo
WHERE
Chat.ID = RelationTo.CHAT_ID
and Chat.TYPE = 'P'
and RelationFrom.USER_ID =
and RelationTo.USER_ID = 257
and RelationFrom.MESSAGE_TYPE = 'P'
and RelationTo.MESSAGE_TYPE = 'P'
and RelationFrom.CHAT_ID = RelationTo.CHAT_ID
Отправка сообщения в общий чат
При отправке сообщения в общий чат DIALOG_ID принимает такое значение:
Далее метод Dialog::getChatId($dialogId); достаёт id чата:
/bitrix/modules/im/lib/V2/Controller/BaseController.php
$chatId = Dialog::getChatId($dialogId);
return Chat::getInstance((int)$chatId);
Удаление чатов
Для получения dialogId скопировать ссылку на чат:
\Bitrix\Main\Loader::includeModule('im');
$dialogId = 'chat55555';
$userId = 1;
$chat = \Bitrix\Im\V2\Chat::getInstance(\Bitrix\Im\Dialog::getChatId($dialogId));
new \Bitrix\Im\V2\Chat\Cleanup\ChatContentCollector($chat)->deleteChat($userId);
Форматирование сообщений
https://helpdesk.bitrix24.ru/open/22091486/