323  /  330

Сервис видеозвонков на сайте

Просмотров: 1670 (Статистика ведётся с 06.02.2017)
Дата последнего изменения: 23.09.2015

Рассмотрим пример использования модуля Веб-мессенджер для организации видеозвонков на сайте. Предполагаемый сценарий заказа видео-консультации специалиста:

  1. Запрос на консультацию осуществляется из расписания или в отдельной форме.
  2. После подтверждения администратором заказа производится оплата услуги (если это предусмотрено).
  3. После оплаты в Личном кабинете пользователя становится доступна кнопка Позвонить или специалист добавляется в контакт мессенджера пользователя.
  4. После этого пользователь в своем мессенджере увидит специалиста он сможет написать или позвонить ему.

Предлагаемый сценарий при необходимости можно усложнить под конкретные запросы заказчика, например: дополнительно активировать кнопку чата, звонка или истории на специальной странице. В нашем примере все подобные усложнения рассматриваться не будут. Так же не будут рассматриваться реализация первого и второго пункта сценария. Рассмотрим только как реализовать непосредственно подключение возможности позвонить пользователю.

Для реализации функционала необходимо дописать код и настроить параметры системы.

Код

Чтобы реализовать функционал видеозвонка в плане кода надо осуществить:

  1. проверку можно ли специалисту позвонить;
  2. проверка можно ли специалисту написать;
  3. добавление пользователя в контакты специалисту;
  4. вызов диалога со специалистом;
  5. вызов звонка со специалистом;
  6. вызов видеозвонка со специалистом;
  7. удаление пользователя из друзей
  8. вызов истории с доктором

Перед всеми действиями с мессенджером необходимо подключить модуль:

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.

Удаление пользователя из контактов специалиста осуществляется либо:

  • с помощью метода Deleterelation, если с отправкой уведомления в мессенджер клиента.
  • либо без отправки сообщения в два шага:
    1. получаем связь по ID пользователей с помощью Getbyuserid
    2. а затем удаляем связь по ID связи с помощью Delete

Вызов диалога со специалистом:

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.


5
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии