В разделе приведено описание настроек взаимодействия ECSS-10 c системой для ведения проектов, работы с клиентами и настройки бизнес-процессов — CRM Битрикс-24.

Общее описание

Интеграция CRM Битрикс-24 с телефонией ECSS-10 осуществляется с помощью приложения, встраиваемого на веб-страницу CRM Битрикс-24 и сервиса ecss-crm-server. Данное приложение обеспечивает работу таких функций как click to call, управление вызовами (принять/отклонить/отбить), список текущих активных вызовов, всплывающие нотификации, информирующие об активных вызовах и их фазах, а также определение контакта по номеру телефона.

Для того чтобы приложение могло взаимодействовать с системой ECSS-10 посредством ECSS-10 Call API, необходимо:

  • активировать CSTA в системе ECSS-10 (без этого приложение не будет отображать вызовы, инициированные не со страницы CRM Битрикс-24);
  • настроить сертификат для установки защищенного соединения между приложением и системой ECSS-10 (см. Интеграция с CRM Битрикс-24);
  • добавить в домене интеграцию для аутентификации приложения (см. Добавление интеграции);
  • добавить соответствующее разрешение для абонента, номер которого будет использоваться для осуществления вызовов из CRM Битрикс-24 (см. Интеграция с CRM Битрикс-24);
  • установить и настроить сервис ecss-crm-server;
  • инсталлировать приложение и указать настройки подключения к системе ECSS-10.


Активация CSTA

Для того чтобы интеграция могла отображать вызовы, инициированные не со страницы CRM Битрикс-24, нужно убедиться, что в системе активирован функционал CSTA. Это можно сделать командой CoCon:

/api/csta/set enabled true

И в свойствах домена параметр vats_type должен быть выставлен в private:

admin@mycelium1@ecss1:/$ domain/nick/properties/info     
┌───────────────────────────────────────┬───────────┬───────────────────────────────────────┐
│               Property                │  Domain   │                 Value                 │
├───────────────────────────────────────┼───────────┼───────────────────────────────────────┤
...
│vats_type                              │nick       │private                                │

Настройка сертификата

При инсталляции пакета ecss-node автоматически генерируется самоподписанный сертификат. Опции ssl_certificate размещаются в /etc/nginx/sites-available/ecss-call-api.conf:

server {
    ssl on;
    listen 8088 default_server;
    listen [::]:8088 default_server;
    resolver 127.0.0.1;
    ssl_certificate      /etc/ecss/ssl/ecss10.crt;
    ssl_certificate_key  /etc/ecss/ssl/ecss10.key;
...
JAVA

Однако, современные браузеры не позволяют по умолчанию устанавливать защищенное соединение с ресурсами, предоставляющими самоподписанные сертификаты. Если в случае обычных страниц это не является серьёзной помехой, так как браузер предлагает добавить исключение безопасности при обращении к ресурсу, то в случае с виджетом ситуация несколько иная. Для работы виджета используются кросс-доменные запросы. В случае кросс-доменного запроса браузер блокирует запрос, не предлагая добавить исключение безопасности. 

Для того чтобы можно было добавить исключение безопасности для самоподписанного сертификата, существует страница при переходе на которую браузер предложит добавить исключение безопасности. Страница по умолчанию доступна по адресу, на котором был установлен пакет ecss-node. Порт 8088. Таким образом в адресной строке браузера нужно ввести:

https://<host>:8088/

где <host> — имя или адрес ECSS-10.

После добавления исключения безопасности откроется тестовая страница ECSS Call API:

Если страница будет недоступна, то необходимо проверить состояние сервиса ecss-call-api

sudo systemctl status ecss-call-api.service

При необходимости включить его:

sudo systemctl start ecss-call-api.service

Управление интеграциями

Интеграция представляет собой пару, состоящую из идентификатора клиента и API ключа. Интеграции используются для аутентификации сторонних сервисов, использующих ECSS Call API. Команды управления интеграциями приведены в разделе "Команды управления ключами внешних интеграций".

1. Добавление интеграции

Для добавления интеграции используется команда:

/domain/<DOMAIN>/integrations/add <CLIENT_ID> --service --numbers {<RANGE>}

Добавить новую интеграцию. API ключ будет сгенерирован автоматически.

<CLIENT_ID> — идентификатор клиента, для которого будет создан ключ интеграции

<RANGE> — номера абонентов ecss-10, обслуживаемых интеграцией.

Пример:

admin@[mycelium1@ecss1#test_davidenko]:/$ domain/nick/integrations/add MyCompanyBitrix24 --service --numbers {101,102,103,110-120}
New integration was added.
API key: wQ7iD7nJ2hQiJDY2wkER2qr3lJYaDw2dE24rhl3iHDaQwwwln242rjwHkJPw4DYK

Созданная интеграция должна использоваться строго для одной crm системы

2. Удаление интеграции

Для удаления интеграции используется команда:

/domain/<DOMAIN>/integrations/remove <CLIENT_ID>

Удалить интеграцию

<CLIENT_ID> — идентификатор клиента, для которого будет удалён ключ интеграции

admin@mycelium1@ecss1:/$ domain/nick/integrations/remove tester4           
ok

[exec at: 22.12.2019 13:20:18, exec time: 16ms, nodes: ds1@ecss1]

3. Просмотр списка интеграций

Для просмотра списка интеграций используется команда:

/domain/<DOMAIN>/integrations/list

Просмотреть список интеграций

Список интеграций показывается в виде таблицы, пример:

admin@[mycelium1@ecss1#test_davidenko]:/$ domain/nick/integrations/list
┌─────────────────┬───────┬────────────────────────────────────────────────────────────────┬────────┐
│    Client id    │ Type  │                            API Key                             │Options │
├─────────────────┼───────┼────────────────────────────────────────────────────────────────┼────────┤
│MyCompanyBitrix24│service│wQ7iD7nJ2hQiJDY2wkER2qr3lJYaDw2dE24rhl3iHDaQwwwln242rjwHkJPw4DYK│Numbers:│
│                 │       │                                                                │101     │
│                 │       │                                                                │102     │
│                 │       │                                                                │103     │
│                 │       │                                                                │110     │
│                 │       │                                                                │111     │
│                 │       │                                                                │112     │
│                 │       │                                                                │113     │
│                 │       │                                                                │114     │
│                 │       │                                                                │115     │
│                 │       │                                                                │116     │
│                 │       │                                                                │117     │
│                 │       │                                                                │118     │
│                 │       │                                                                │119     │
│                 │       │                                                                │120     │
└─────────────────┴───────┴────────────────────────────────────────────────────────────────┴────────┘

4. Замена ключа интеграции

Для замены ключа интеграции используется команда:

/domain/<DOMAIN>/integrations/replace <CLIENT_ID>

Заменить ключ интеграции

<CLIENT_ID> — идентификатор клиента, для которого будет заменён ключ интеграции.

Пример работы команды:

admin@mycelium1@ecss1:/$ domain/nick/integrations/replace tester              
Old key was replaced with new one.
New API key: wT5neQJ1hykwvnTQeJ50ywKoFMizeAJcJwhcowFvV5eVe5zf5C1imCvoMFizAKQz

[exec at: 22.12.2019 10:15:31, exec time: 28ms, nodes: ds1@ecss1]

5. Изменение списка обслуживаемых номеров

Для изменения списка обслуживаемых интеграцией номеров используется команда:

/domain/<DOMAIN>/integrations/set <CLIENT_ID> --numbers {<RANGE>}

Изменить список обслуживаемых номеров

<CLIENT_ID> — идентификатор клиента, для которого будет изменен список обслуживаемых номеров.

<RANGE> — новый список номеров абонентов ecss-10, обслуживаемых интеграцией.

Пример работы команды:

admin@[mycelium1@ecss1#test_davidenko]:/$ domain/nick/integrations/set MyCompanyBitrix24 --numbers {101,102,103,104,105}
Integration properties changed
admin@[mycelium1@ecss1#test_davidenko]:/$ domain/nick/integrations/list
┌─────────────────┬───────┬────────────────────────────────────────────────────────────────┬────────┐
│    Client id    │ Type  │                            API Key                             │Options │
├─────────────────┼───────┼────────────────────────────────────────────────────────────────┼────────┤
│MyCompanyBitrix24│service│wQ7iD7nJ2hQiJDY2wkER2qr3lJYaDw2dE24rhl3iHDaQwwwln242rjwHkJPw4DYK│Numbers:│
│                 │       │                                                                │101     │
│                 │       │                                                                │102     │
│                 │       │                                                                │103     │
│                 │       │                                                                │104     │
│                 │       │                                                                │105     │
└─────────────────┴───────┴────────────────────────────────────────────────────────────────┴────────┘

Добавление разрешения абоненту SSW

При выполнении логина в ECSS Call API виджет сообщает ECSS-10 номер телефона абонента, который будет закреплён за этим виджетом. Это требует специального разрешения, активированного у абонента.
Для активации разрешения нужно выставить соответствующему алиасу значение true для свойства api\call\enabled. Например:

Пример:

admin@mycelium1@ecss1:/$ domain/nick/alias/set 240473 loc.gr 240473@biysk.local api\call\enabled true          
There are aliases within domain nick affected by settings property api\call\enabled:
  240473  <->  062743c44271f9e7 

Legend:
   a: Setup alias address
   i: Setup alias inteface
   !: Setup broken. Alias allready exists
   *: Setup broken. Alias not exists
   L: Setup broken. No free subscriber licences.
   x: Setup broken. Unexpected error
   <empty>: Successfull setup

[exec at: 20.12.2019 22:42:09, exec time: 101ms, nodes: ds1@ecss2]

В том случае, если данное свойство не будет выставлено, виджет не сможет выполнить логин в ECSS Call API

Установка ecss-crm-server

Для установки пакета выполните в консоли ОС команды:

sudo apt update
sudo apt install ecss-crm-server

В конце установки пакета проводится его настройка, в ходе которой нужно будет ответить на несколько вопросов, которые приведены в Приложении Д:

Укажите адрес сервера, на котором будет запущен ecss-crm-server. По умолчанию предлагается 127.0.0.1.

Указание 0.0.0.0 вместо адреса сделает невозможным встраивание карточки вызова в интерфейс Битрикс-24.

Укажите номера tcp-портов HTTP и HTTPS, на которых будет слушать сервер ecss-crm-server. Стандартные порты для HTTP (80) и HTTPS (443) не предлагаются пакетом по умолчанию, так как при установке на один сервер с пакетом ecss-node, они будут конфликтовать с веб-конфигуратором ECSS-10. Администратор может самостоятельно указать данные порты при установке пакета, если они не создадут конфликт с другими сервисами.


Описание конфигурации ecss-crm-server

Настройки, указанные при инсталляции, а также некоторые другие, могут быть изменены после инсталляции пакета в файле /usr/share/ecss/ecss-crm-server/src/settings.js.

Вот его содержимое после инсталляции по умолчанию.

var settings = {
    path: '/',
    dist: "/usr/share/ecss/ecss-crm-server/frontend/dist",
    // Если указан proxyGatewayURL, то при монтировании карточки звонка, а также
    // в redirect_uri будет использоваться данный URL.
    // Если proxyGatewayURL указан, то адрес встроенной карточки звонка будет
    // сконструирован следующим образом:
    // ${settings.proxyGatewayURL}/call/call.html
    // Если proxyGatewayURL НЕ указан, то адрес redirect_uri, и адрес встраиваемой
    // карточки звонка, будет сконструирован следующим образом:
    // https://${settings.host}:${settings.proxyPort}/call/call.html
    // proxyGatewayURL: "https://<proxy-origin>:<proxy-port>/bitrix",
    // Если опция активна, то вместо http/https портов будут использованы
    // Unix-сокеты. Используется для работы через проксирующий веб-сервер
    useUnixSockets: false,
    // httpUnixSocket: "/var/lib/ecss/ecss-crm-server/http",
    // httpsUnixSocket: "/var/lib/ecss/ecss-crm-server/https",
    // Запросы на сервер проксируются с помощью nginx.
    host: '127.0.0.1',
    // Адрес SSW задаётся снаружи.
    sswHost: '192.168.116.130',
    hostPort: 8801,
    proxyPort: 8802,
    // Серверу необходимо знать адрес прокси-сервера.
    proxyHost: '192.168.116.130',
    // В случае работы через proxy gateway, т.е по умолчанию, данные сертификаты
    // будут использованы для связи с прокси веб-сервером по https
    sslKeyFilename: "/usr/share/ecss/ecss-crm-server/key.pem",
    sslCertFilename: "/usr/share/ecss/ecss-crm-server/cert.pem",
    // bitrixClientId: "some client id",
    // bitrixClientSecret: "some client secret",
    bitrixTokenHost: "https://oauth.bitrix.info",
    logLevel: 'warn',
    // logLevel: 'debug',
    defaultLogFile: '/var/log/ecss/ecss-crm-server/default.log',
    errorLogFile: '/var/log/ecss/ecss-crm-server/error.log',
    logToConsole: false,
    rebindPlacement: false
};
module.exports = settings;

где:

  • path — HTTP-префикс пути, по которому будет доступен Битрикс-24 коннектор;
  • dist — путь, по которому будут доступны страницы и статические файлы сервера;
  • serverHost — адрес сервера, указываемый при инсталляции;
  • httpPort — HTTP-порт. Игнорируется при работе через proxy gateway;
  • httpsPort — HTTPS-порт. Игнорируется при работе через proxy gateway;
  • sslKeyFilename, sslCertFilename — сертификаты, которые при установке генерирует пакет ecss-crm;
  • bitrixClientId, bitrixClientSecret — если Битрикс-24 коннектор используется для нужд одной компании, то можно можно указать параметры, полученные при регистрации приложения прямо в конфиге. Тогда их не нужно будет указывать при регистрации в браузере (см. Регистрация приложения в Битрикс-24 коннекторе);
  • bitrixTokenHost — хост для авторизации OAuth2.0;
  • logLevel — уровень логов. По умолчанию 'warn'. Поддерживаются следующие уровни логов, в порядке возрастания подробности: error, warn, info, http, verbose, debug, silly, хотя на текущий момент используются не все. Рекомендуется использовать 'warn' при обычной работе и 'debug' при поиске проблем;
  • defaultLogFile — файл, в который пишутся все логи с учетом указанной подробности;
  • errorLogFile — файл, в который пишутся только критические ошибки (уровень подробности error);
  • logToConsole — выводить логи в stdout;
  • rebindPlacement — если из за какой то внутренней ошибки не удалось встроить карточку в интерфейс Битрикс-24 при первом входе в компанию, можно вызвать эту процедуру принудительно, выставив значение параметра rebindPlacement в true. Нужно, однако, помнить, что при каждом повторном встраивании карточки, страница CRM - Битрикс-24 должна быть обновлена, если она открыта в браузере. После успешного встраивания не забудьте выставить значение rebindPlacement обратно в false.

Установка приложения

Интеграция Битрикс-24 не устанавливается из магазина приложений и может быть установлена только вручную.

Ручная установка приложения в облачной версии Битрикс-24

Нам необходимо создать локальное приложение Битрикс-24. Для перехода в меню приложений нужно нажать "Ещё" в меню Битрикс-24 в левой части экрана.

Далее нужно нажать на появившийся пункт меню "Маркет".

В появившемся меню приложений нужно нужно нажать на кнопку "Добавить приложение".

В появившемся меню необходимо выбрать "Другое"

Далее необходимо выбрать "Локальное приложение"

Далее необходимо указать:

  1. Название интеграции (по умолчанию "Локальное приложение")
  2. Тип приложения "Серверное"
  3. Ссылку на ecss-crm-server(<IP>:8802/bitrix)
  4. Галочку "Приложение использует только API".
  5. В графе "Настройка прав" выбрать:
    1. Встраивание приложений (placement);
    2. Пользователи (user);
    3. Телефония (telephony);
    4. Телефония (совершение звонков) (call).

Обратите внимание: Битрикс-24 игнорирует параметр OAuth2.0 redirect_uri и будет отдавать access_code на адрес, указанный вами на этой странице.

Ваше приложение было успешно создано.

Вернитесь к предыдущей странице и выберите вкладку "Интеграции"

Выберите ваше новое приложение в списке

Обратите внимание на значения "Код приложения (client id)" и "Ключ приложения (client secret)", а так же на "Домен компании". Они понадобятся вам при регистрации компании в ecss-crm-server.

Регистрация приложения в ecss-crm-server

Если ecss-crm-server уже установлен, перейдите в браузере по адресу, указанному вами при изначальной настройке. Обратите внимание, что адрес ecss-crm-server, должен совпадать с адресом, настроенным в интерфейсе Битрикс-24 при создании приложения (см раздел Ручная установка приложения в облачной версии Битрикс-24).
Так как это первый вход, нам нужно указать параметры "Код приложения (client id)", "Ключ приложения (client secret)" и "Домен компании". Для этого необходимо нажать на "дополнительные параметры".

В появившихся полях ввода, указываем "Идентификатор клиента", что соответствует параметру "Код приложения" в интерфейсе Битрикс-24, и "Секретный ключ", что соответствует параметру "Ключ приложения" в интерфейсе Битрикс-24 (см. раздел Ручная установка приложения в облачной версии Битрикс-24). Указание этих дополнительных параметров обязательно только на этапе регистрации. В дальнейшем при входе нужно указывать только домен компании Битрикс-24.

Обратите внимание, что регистрация компании и последующее управление ей должны осуществляться пользователем с правами администратора компании Битрикс-24.
После нажатия кнопки "Вход" браузер будет переадресован на страницу авторизации Битрикс-24. После успешного прохождения авторизации, Вы попадёте в интерфейс настройки компании ecss-crm-server.

Настройка компании в интерфейсе ecss-crm-server

В настройках компании вы можете опционально задать имя компании.

Далее вам нужно указать настройки подключения к ECSS-10, полученные у вашего провайдера телефонии.
Если вы являетесь администратором домена SSW, то вам необходимо выполнить команду:

domain<DOMAIN>integrations/list

Пример:

admin@[mycelium1@ecss1#ECSS 010145]:/$ domain/nick/integrations/list              
┌──────────┬───────┬────────────────────────────────────────────────────────────────┬────────┐
│Client id │ Type  │                            API Key                             │Options │
├──────────┼───────┼────────────────────────────────────────────────────────────────┼────────┤
│testbitrix│service│8SGuXEJUMs8SGqn6iAVqkMAuSqGlFM6JGkkUS2Ssg7vVuMrGUVqqku22iukqGvuX│Numbers:│
│          │       │                                                                │107     │
│          │       │                                                                │108     │
└──────────┴───────┴────────────────────────────────────────────────────────────────┴────────┘

Необходимые значения "Client id" и "API Key". Соответственно "Идентификатор клиента" --> "Client id", "Ключ API" --> "API Key", "Адрес Call API" --> https://<IP>:8088, "Домен" --> Используемый домен с интеграцией.


После настройки подключения к ECSS-10 перейдите на вкладку "Настройки подключения к Битрикс-24".
На данной вкладке будет виден индикатор жизни OAuth2.0 токена (токен продлевается автоматически). Для настройки номеров телефонов пользователей нажмите на "пользователи".

В появившемся диалоговом окне можно настроить номера телефонов пользователей. Измененный список номеров сохраняется автоматически при закрытии диалогового окна. При поступлении вызова, коннектор, на основании данного списка определяет, какому пользователю необходимо показать карточку звонка в интерфейсе Битрикс-24.

При регистрации компании в ecss-crm-server список пользователей выгружается из аккаунта Битрикс-24. ecss-crm-server использует номера, указанные в профиле пользователя как "внутренний номер".
При добавлении нового пользователя в аккаунте компании Битрикс-24 он будет учтен ecss-crm-server при открытии списка пользователей, либо при перезапуске сервера ecss-crm-server.

После того как пользователь Битрикс-24 учтен в ecss-crm-server, последующие изменения поля "внутренний номер" в аккаунте Битрикс-24, учитываться не будут.

Активация click 2 call

Для включения click 2 call необходимо в интерфейсе компании в Битрикс-24 перейти на страницу настроек телефонии.

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

Выбираем в поле "номер для исходящего звонка" созданное нами приложение.

Управление вызовами в интерфейсе Битрикс-24

Если всё настроено правильно, то пользователь при входящем или исходящем вызове, должен видеть карточку вызова. Левая часть карточки предоставляется самим Битрикс-24 и содержит интерфейс по управлению контактом. Правая часть карточки принадлежит интеграции с ECSS-10 и содержит номер звонящего (имя, отображаемое на телефонном аппарате) и кнопки управления вызовом: "Отклонить" и, если это входящий вызов, "Принять".

Кнопка "Отклонить" работает для большинства телефонных аппаратов. Кнопка "Принять" работает для телефонных аппаратов, поддерживающих SIP-answer.