Дата последнего изменения: 23.09.2015
Рассмотрим пример использования модуля Веб-мессенджер для организации видеозвонков на сайте. Предполагаемый сценарий заказа видео-консультации специалиста:
Предлагаемый сценарий при необходимости можно усложнить под конкретные запросы заказчика, например: дополнительно активировать кнопку чата, звонка или истории на специальной странице. В нашем примере все подобные усложнения рассматриваться не будут. Так же не будут рассматриваться реализация первого и второго пункта сценария. Рассмотрим только как реализовать непосредственно подключение возможности позвонить пользователю.
Для реализации функционала необходимо дописать код и настроить параметры системы.
Чтобы реализовать функционал видеозвонка в плане кода надо осуществить:
Перед всеми действиями с мессенджером необходимо подключить модуль:
CModule::IncludeModule('im');
Проверка можно ли специалисту позвонить:
/* Проверка может ли пользователь позвонить другому пользователю $arFields['TO_USER_ID'] - ID доктора $arFields['FROM_USER_ID'] - ID пользователя */ if (!IsModuleInstalled('intranet') && CModule::IncludeModule('socialnetwork')) { if (CIMSettings::GetPrivacy(CIMSettings::PRIVACY_CALL, $arFields['TO_USER_ID']) == CIMSettings::PRIVACY_RESULT_CONTACT && CSocNetUser::IsFriendsAllowed() && !CSocNetUserRelations::IsFriends($arFields['FROM_USER_ID'], $arFields['TO_USER_ID'])) { echo "ERROR_PRIVACY"; return false; } }
Проверка можно ли специалисту написать:
/* Проверка может ли пользователь написать сообщение другому пользователю $arFields['TO_USER_ID'] - ID доктора $arFields['FROM_USER_ID'] - ID пользователя */ if (!IsModuleInstalled('intranet') && CModule::IncludeModule('socialnetwork')) { if (CIMSettings::GetPrivacy(CIMSettings::PRIVACY_MESSAGE, $arFields['TO_USER_ID']) == CIMSettings::PRIVACY_RESULT_CONTACT && CSocNetUser::IsFriendsAllowed() && !CSocNetUserRelations::IsFriends($arFields['FROM_USER_ID'], $arFields['TO_USER_ID'])) { echo "ERROR_PRIVACY"; return false; } }
Добавление пользователя в контакты специалисту осуществляется с помощью метода Add. Здесь в RELATION
необходимо использовать значение константы SONET_RELATIONS_FRIEND
.
Удаление пользователя из контактов специалиста осуществляется либо:
Вызов диалога со специалистом:
if (BXIM) { BXIM.openMessenger(111); // 111 - идентификатор доктора }
Вызов звонка со специалистом:
if (BXIM) { BXIM.callTo(111, false); // 111 - идентификатор доктора }
Вызов видеозвонка со специалистом:
if (BXIM) { BXIM.callTo(111); // 111 - идентификатор доктора }
Вызов истории общения со специалистом:
if (BXIM) { BXIM.openHistory(111); // 111 - идентификатор доктора }
У специалиста, проводящего консультацию по видеозвонку, должны стоять настройки на приём сообщений и звонков только "от контактов". Тем самым переписка со специалистом будет доступна пользователю в мессенджере в течении 30 дней (или бессрочно, если на странице будет кнопка "Показать историю").
Видеозвонки осуществляются через веб-сервер 1С-Битрикса. Однако, если по соображениям безопасности использовать публичные сервера не представляется возможным, то можно создать и настроить собственный видеосервер. И указать его параметры в настройках модуля Веб-мессенджер:
Основной критерий для использования видеосервера: он должен находиться за пределами локальной сети организации, оказывающей услуги своими специалистами. Сервер не должен быть закрыт по видео-портам и VPN.