Документация для разработчиков

Веб-мессенджер

Как инструмент номер один, Веб-мессенджер дополняет привычные способы общения - телефон и электронную почту.

Интерактивный инструмент – Веб-мессенджер позволяет эффективно общаться и получать информацию прямо через браузер:

  • пользователи портала общаются посредством мгновенных персональных сообщений (как в интернет-мессенджерах);
  • список контактов формируется согласно структуре компании;
  • центр нотификации выводит информацию о новых событиях на портале;
  • индицируется присутствие сотрудника на портале (онлайн);
  • присутствующие на портале сотрудники ведут «живой» диалог;
  • уведомления о новых сообщениях появляются на любой странице портала;
  • не работающим в текущий момент на портале пользователям сообщения доставляются позже;
  • ведется архив сообщений диалогов пользователей;
  • просмотреть личную переписку сотрудник также может из профиля другого пользователя («Показать переписку»).

Использование Веб-мессенджера отменяет необходимость установки в компании XMPP серверов и специальных Jabber клиентов. Реализован мессенджер с использованием всех инноваций современных браузеров (используется HTML5, local storage и т.д.).

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

Для добавления сообщения в чат, необходимо знать ID нужного чата и выполнить метод отправки сообщения в чат. Для получения ID нужно, нужно в нужном чате отправить сообщение /getChatId и посмотреть номер чата:

В нужном месте кода, вызвать следующие API:

if (CModule::IncludeModule('im'))
{
   $ar = Array(
      "TO_CHAT_ID" => 21441, // ID чата
      "FROM_USER_ID" => 1, // ID пользователя состоящего в чате
      "MESSAGE"     => "Сообщение от пользователя", // Произвольный текст
   );
   CIMChat::AddMessage($ar);
}

Результат:

Отправить системное сообщение:

if (CModule::IncludeModule('im'))
{
   $ar = Array(
      "TO_CHAT_ID" => 21441, // ID чата
      "FROM_USER_ID" => 0, 
      "SYSTEM" => Y, 
      "MESSAGE"  => "Системное сообщение", // Произвольный текст
   );
   CIMChat::AddMessage($ar);
}

Создание чата

<?php 
if (\Bitrix\Main\Loader::includeModule('im')) 
{ 
    $pic = $_SERVER['DOCUMENT_ROOT'] . '/test.jpg'; 
    $avatarId = \CFile::SaveFile(\CFile::MakeFileArray($pic), 'im'); 
    $chat = new \CIMChat; 
    $chat->Add(array( 
        'TITLE' => 'Тестовый чат', 
        'DESCRIPTION' => 'Описание тестового чата', 
        'COLOR' => 'RED',//цвет 
        'TYPE' => IM_MESSAGE_OPEN,//тип чата 
        'AUTHOR_ID' => '1',//владелец чата 
        'AVATAR_ID' => $avatarId,//аватарка чата 
    )); 
}
//TYPE = IM_MESSAGE_CHAT – закрытый чат
//список доступных цветов: \Bitrix\Im\Color::getSafeColors()

Приглашение в чат

<?php 
//приглашение в чат
if (\Bitrix\Main\Loader::includeModule('im'))  { 
    $chat = new \CIMChat; 
    $chat->AddUser(<chat id>, <user id>, true); // true - показывать историю, false - не показывать.
}

//поиск чата по определенным параметрам
if (\Bitrix\Main\Loader::includeModule('im'))  { 
    $chat = new \CIMChat; 
    $res = \Bitrix\Im\chatTable::getList(array( 
        'filter' => array( 
            'TITLE' => '%красный%' 
        ) 
    )); 
    if ($row = $res->fetch()) 
    { 
    } 
}

Написать в чат

<?php 
if (\Bitrix\Main\Loader::includeModule('im'))  { 
    \CIMChat::AddMessage(array( 
        'FROM_USER_ID' => 1,  //id автора
        'TO_CHAT_ID' => 19,  //id чата
        'MESSAGE' => 'Пишу в чат #19' 
    )); }
if (\Bitrix\Main\Loader::includeModule('im'))  { 
    \CIMChat::AddSystemMessage(array( 
        'FROM_USER_ID' => 1,  //id автора
        'CHAT_ID' => 19,  //id чата
        'MESSAGE' => 'Шлю системное уведомление' 
    )); 
} 

Написать в чат лично

<?php 
if (\Bitrix\Main\Loader::includeModule('im'))  
{  
    \CIMMessage::Add(array(  
        'FROM_USER_ID' => 1,  
        'TO_USER_ID' => 21, 
        'MESSAGE' => 'Пишу в чат тебе', 
    ));  
}


Пользовательские комментарии

Пользовательские комментарии не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.

Добавлять комментарии могут только зарегистрированные пользователи. Сообщения для просмотра появляются после модерации.
2
Роберт Басыров
Работа с уведомлениями.
Дополнительно:
Как программно удалить сообщения, если известно только начало тега, но не известна последняя часть.
Решение:

Есть поле дополнительный тег - NOTIFY_SUB_TAG, который не участвует в группировке сообщения, как это делает NOTIFY_TAG. Он служит в основном для массовых удалений сообщений.
Для удаления по этому тегу, вызовите метод:
Код
CIMNotify:: DeleteBySubTag($notifySubTag, $authorId = false)
© «Битрикс», 2001-2017, «1C-Битрикс», 2017