IM
Сообщения, файлы и поиск в чатах
Чтение истории доступного диалога и различия между сообщением, вложением и файлом Диска.
Сообщения известного диалога
Групповой диалог адресуется строкой chat123. Пример вызывает API от имени пользователя приложения и не обходит доступ к истории.
BX24.init(function () {
BX24.callMethod("im.dialog.messages.get", {
"DIALOG_ID": "chat123",
"LIMIT": 20
}, function (result) {
if (result.error()) {
console.error(result.error());
return;
}
console.log(result.data());
});
});Это одна порция истории. Параметры чтения следующих сообщений и границы доступа определяет метод; пагинацию обычных списков CRM сюда переносить нельзя.
Файл в сообщении
Привязка файла к сообщению, объект Диска и запись b_file имеют разные ID. Сначала разберите файловые данные ответа IM, затем используйте API соответствующего объекта. URL из CFile не подтверждает право читать вложение.
Файл может быть недоступен, даже если сохранился текст сообщения. Проверяйте удаление, права Диска и срок действия ссылки отдельно от факта нахождения сообщения.
Поиск по истории
Поиск текста через LIKE по всей таблице сообщений — дорогое сканирование, а не аналог штатного поискового индекса. Имена таблиц индекса и состав полей меняются между версиями IM; универсального SQL-запроса для всех коробок здесь нет.
Если пишете свой поиск, проверяйте доступ до выдачи фрагмента сообщения или имени файла. Фильтр AUTHOR_ID > 0 сам по себе не исключает все системные сообщения.