Интеграция 3CX с собственной CRM-системой: генератор шаблонов CRM +6


Начиная с v15.5 SP2 в АТС 3CX появился механизм серверной CRM интеграции. Он позволяет передать входящий Caller ID в CRM-систему и найти в ней соответствующую запись о клиенте. При этом 3CX получает имя и фамилию клиента из CRM, добавляет их в корпоративную адресную книгу АТС и показывает на IP-телефоне пользователя. Веб-клиент 3CX также показывает эти данные и кнопку, по которой можно перейти в полную карточку клиента непосредственно в интерфейсе CRM.

3CX «из коробки» поставляется с обширным набором модулей интеграции для популярных CRM-систем. Однако в каждом регионе и отрасли существуют собственные популярные системы, и невозможно обеспечить поддержку каждой из них. Поэтому мы пошли другим путем — создали генератор шаблонов, в котором любой пользователь с базовыми навыками программирования может создать шаблон интеграции с REST API выбранной CRM, а затем установить его на сервере АТС.

В шаблоне интеграции определяются методы аутентификации, URL авторизации, URL и методы вызова данных контакта. Этот шаблон используется серверным «движком» 3CX для обращения к CRM.

В этой статье мы рассмотрим использование генератора шаблонов 3CX для создания шаблона интеграции с новой CRM-системой. Для успешной интеграции, CRM-система должна иметь RESTFul API с хорошей документацией и поддерживать режимы аутентификации Basic или oAuth.

URL-запросы к API CRM


Серверная CRM-интеграция использует API-вызовы в виде URL ссылок для трех задач:
Аутентификация, например:

https://login.salesforce.com/services/oauth2/token

Нахождение соответствия контакта, например:

[Url]/services/data/v37.0/search/?q=FIND {[Number]} IN PHONE FIELDS RETURNING Contact(Id,FirstName,LastName,AssistantPhone,Fax, HomePhone, MobilePhone, OtherPhone, Phone, Email,AccountId)

Получение имени контакта. Некоторые CRM-системы используют единую URL как для названия компании, так и для имени контакта. В этом случае необходимо настраивать отдельные URL, например:

[Url]/services/data/v37.0/query/?q=SELECT name from Account where Id = '[AccountId]'

Параметры запроса


Параметры используются для передачи в CRM необходимой информации, позволяющей ей формировать ответы. Например, для CRM Salesforce они описаны здесь. В генераторе шаблонов добавим следующие параметры (клик правой кнопкой мыши на Parameters — Add):

  • Name = ClientId, Title = Consumer Key:
  • Name = ClientSecret, Title = Consumer Secret:
  • Name = UserName, Title = Username:
  • Name = Password,Title = Password:
  • Name = SecurityToken, Title = Security Token:

Аутентификация


В разделе Scenarios создайте сценарий аутентификации (правая кнопка мыши > Add)


В разделе Rule Groups создайте новую Rule Group. Установите ее параметры:

  • Path = instance_url
  • Type = Any

В разделе Variables добавьте переменные:

  • key = Url, Path = instance_url
  • key = AccessToken, Path = access_token

В разделе Outputs создайте:

  • Type = Bearer, Value = [AccessToken]

Перейдите в раздел Authentication и установите:

  • Type = Scenario
  • Scenario = Auth (из выпадающего списка).

Поиск соответствия контакта


В разделе Scenarios > Add > Matching Scenario установите:

  • Request Type = Get
  • URL = [Url]/services/data/v37.0/search/?q=FIND {[Number]} IN PHONE FIELDS RETURNING Contact(Id,FirstName,LastName,AssistantPhone,Fax, HomePhone, MobilePhone, OtherPhone, Phone, Email,AccountId)

В разделе Rule Groups создайте Rule Group с параметрами:

  • Path = searchRecords.Id, Type = Any

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

  • Key = Id, Path = searchRecords.Id
  • Key = Phone, Path = searchRecords.Phone
  • Key = OtherPhone, Path = searchRecords.OtherPhone
  • Key = MobilePhone, Path = searchRecords.MobilePhone
  • Key = HomePhone, Path = searchRecords.HomePhone
  • Key = Fax, Path = searchRecords.Fax
  • Key = FirstName, Path = searchRecords.FirstName
  • Key = LastName, Path = searchRecords.LastName
  • Key = Email, Path = searchRecords.Email
  • Key = AcccountId, Path = searchRecords.AccountId

Тестирование интеграции


Чтобы проверить созданный шаблон непосредственно в генераторе шаблонов, установите входные значения параметров. Для этого перейдите в раздел Parameter Values и заполните параметры нужными значениями.



Укажите номер телефона (Caller ID), звонок с которого будет эмулироваться, в свойстве Number (в редакторе свойств).



Установив параметры, кликните правой кнопкой мыши на разделе Parameter Values и выберите  Run. Под разделом Parameter Values появится новый раздел (он получит имя по дате и времени выполнения), в котором будут видны результаты работы вашего шаблона CRM-интеграции. Выбрав вверху вкладку Request/Response, можно увидеть запрос и JSON ответ, содержащий данные контакта из CRM.



Ответ представлен в виде дерева и из него можно увидеть, что контакты расположены по пути response.result.Contacts.row.FL. Это массив, в котором присутствуют значения имени, фамилии, номера телефона и т.п.

Добавим переменные со значениями, которые нам нужны. Например, чтобы добавить имя контакта, кликните правой кнопкой мыши по ветке content = ‘Test’ и выберите Add Variable. Измените имя переменной на FirstName (имя по умолчанию — content).



В дереве шаблона CRM перейдите в раздел Scenario и кликните правой кнопкой мыши на разделе Outputs. Добавьте новый «ответ», измените его тип на ContactUrl и установите значение, которое нам необходимо получить (т.е. которое мы нашли выше для имени контакта).

Если после этого запустить шаблон интеграции еще раз, мы увидим, что все необходимые поля контакта корректно заполнились в полученном «ответе» (вкладка Output).



Генерация и установка XML файла шаблона


После генерации (сохранения) XML-файла шаблона, скопируйте его в соответствующие папки на сервере 3CX и перезапустите сервисы 3CX Management Console и System.

  • 3CX для Windows c:\ProgramData\3CX\Instance1\Data\Http\Templates\crm
  • 3CX для Linux: /var/lib/3cxpbx/Instance1/Data/Http/Templates/crm

Теперь номер входящего вызова будет передан в CRM для поиска совпадения. Если совпадение найдено, веб-клиент 3CX отобразит имя контакта и кнопку перехода к полной карточке контакта в интерфейсе CRM системы.



Заключение


В заключение отметим, что возможности серверной интеграции будут постепенно расширяться. Так, ожидается журналирование вызовов CRM-системе, т.е. сохранение истории вызовов, привязанной к контакту (в клиентской CRM-интеграции через клиент 3CX для Windows эта возможность есть и сейчас). Если у вас возникли какие-либо вопросы по реализации собственной интеграции, задайте их на специальном форуме для разработчиков. А если вы считаете, что ваша CRM-система должна официально поддерживаться 3CX, подайте заявку здесь и, вполне возможно, разработчики включат шаблон этой CRM в следующий релиз.   




К сожалению, не доступен сервер mySQL