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

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

Описание

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

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

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

Использование Веб-мессенджера отменяет необходимость установки в компании 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,//аватарка чата 
		'USERS' => false,
	)); 
}
//TYPE = IM_MESSAGE_CHAT – закрытый чат
//список доступных цветов: \Bitrix\Im\Color::getSafeColors()

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

<?php 
//приглашение в чат
if (\Bitrix\Main\Loader::includeModule('im'))  { 
	$chat = new \CIMChat; 
	$chat->AddUser($chatId, $userId, $hideHistory = null, $skipMessage = false); 
//userId - может быть массивом пользователя; 
//hideHistory - скрыть сообщения которые были до момента входа, true/false - по умолчанию берется то значение, 
//которое выставлено в настройках модуля, для Б24 по умолчанию скрыть, для БУС показать. 
//skipMessage - пропустить стандартное сообщение о включении участника, по умолчанию 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' => 'Пишу в чат тебе', 
	));  
}


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

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

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

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
0
Кирилл Митрошин
Сообщение не промодерировано, возможны ошибки и неточности.
Цитата
пишет:
[QUOTE] пишет:
Подскажите, как узнать id чата, Ваш вариант "/getChatId" не срабатывает, либо нужны какие-то дополнительные манипуляции о которых не было сказано..[/QUOTE] После недавнего обновления интерфейса чатов - команда `/getChatId` перестала работать.
Через просмотр кода элемента можно найти <div data-id="chat23439" class="--selected bx-im-list-recent-item__wrap">, где chat23439 и есть id чата
1
jabir_sabitov
Сообщение не промодерировано, возможны ошибки и неточности.
Цитата
пишет:
Подскажите, как узнать id чата, Ваш вариант "/getChatId" не срабатывает, либо нужны какие-то дополнительные манипуляции о которых не было сказано..
После недавнего обновления интерфейса чатов - команда `/getChatId` перестала работать.
0
Виталий Медведев
Сообщение не промодерировано, возможны ошибки и неточности.
Подскажите, как узнать id чата, Ваш вариант "/getChatId" не срабатывает, либо нужны какие-то дополнительные манипуляции о которых не было сказано..
4
Роберт Басыров
Работа с уведомлениями.
Дополнительно:
Как программно удалить сообщения, если известно только начало тега, но не известна последняя часть.
Решение:

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