Интеграция собственной CRM с телефонией Novofon

Если вы разрабатываете (или поддерживаете) собственную CRM-систему, то знаете насколько важна в ней автоматизация процесса общения менеджеров и клиентов.

Несмотря на развитие соцсетей и альтернативных каналов связи, большая часть продаж по-прежнему совершается в ходе телефонных переговоров. Это говорит нам о том, что CRM почти в обязательном порядке должна поддерживать интеграцию с IP-телефонией.

В этой инструкции мы подробно расскажем вам о том, как внедрить в свою систему телефонию Novofon и какие преимущества это вам даст.

Основные функции интеграции.

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

  • звонки в один клик из интерфейса CRM;
  • при входящих и исходящих вызовах будет появляться всплывающее окно с информацией о клиенте и ссылкой на его карточку;
  • подробная статистика звонков и возможность прослушать запись разговоров в карточке клиента;
  • при звонке от нового клиента контакт/лид будет создан автоматически;
  • если клиент уже известен, то можно перенаправлять входящие от него на ответственного менеджера;
  • при использовании в работе IP-телефона, можно отображать имя звонящего на экране устройства;
  • настройка уведомлений о пропущенных вызовах.

Настройка интеграции со стороны Novofon.

Само взаимодействие с API можно условно разделить на две части:

  • POST и GET запросы со стороны CRM к API Novofon;
  • webhook-уведомления и POST-запросы с информацией о звонках со стороны API к CRM.

Сама интеграция начинается с личного кабинета Novofon. Для начала необходимо сгенерировать ключи авторизации API и настроить виртуальную АТС (обязательно наличие внутренних номеров с записью разговоров, равном количеству менеджеров CRM, и создан сценарий “без нажатия” в IVR).

Для интеграции аккаунта Novofon и вашей CRM-системы, необходим отдельный URL-адрес на модуль телефонии.

В дальнейших примерах мы будем указывать https://myowncrm.ru/novofon.

Теперь заходим в личный кабинет Novofon, открываем раздел “Настройки”, страница “Интеграции и API”. Во вкладке “Все интеграции” выбираем “Уведомления о событиях”.

В поля “О звонках в АТС” и “О событиях” нужно вставить ссылку, о которой мы говорили выше (https://myowncrm.ru/novofon).

Для того чтобы ссылка прошла проверку, необходимо добавить на сайт PHP-скрипт. Его пример находится на этой же странице:

<?php if (isset($_GET['zd_echo'])) exit($_GET['zd_echo']); ?>

После этого нажатие на кнопку “Добавить” проведет валидацию ссылки. Механика работы следующая: на ссылку будет отправлен произвольный набор символов, который должен вернуться, причем в изначальном виде (без дополнительных символов и пробелов).

Если валидация не проходит, то нужно проверить какое значение возвращает ссылка и отправить curl запрос, добавив ?zd_echo=1234567 (где 1234567 последовательность отправленных символов).

В итоге это будет выглядеть так:

curl https://https://myowncrm.ru/novofon/novofon?zd_echo=1234567

В ответ должно вернуться значение 1234567.

Если вы хотите повысить уровень безопасности, то рекомендуем разрешить доступ к ссылке только с IP-адреса 185.45.152.42. В таком случае каждый запрос будет содержать дополнительный заголовок Signature, по которому можно сверить подлинность и целостность данных.

Настройка интеграции со стороны CRM.

После подтверждения ссылок в личном кабинете Novofon необходимо сохранить эти данные в CRM. Для этого нужна отдельная страница для настройки интеграции. Условно назовем ее “Настройка телефонии”. На ней обязательно должны быть следующие элементы:

  • поля для ввода ключей авторизации (key и secret, которые создаются в личном кабинете Novofon (раздел “Настройки” - “Интеграция и API”, вкладка “Ключи и API”);
  • ссылка на модуль телефонии, которую указывали ранее (https://myowncrm.ru/novofon);
  • список пользователей, которые будут работать с телефонией. Дополнительно нужна возможность каждому менеджеру назначать свой собственный (уникальный) номер АТС.

Сам список внутренних номеров для использования можно получить с помощью метода GET /v1/pbx/internal/. Далее из полученного списка сформировать контекстное меню, с помощью которого присвоить номер пользователю. Только обязательно установите ограничение – каждый номер должен быть присвоен только одному сотруднику.

Также рекомендуем назначить одного из пользователей ответственным по умолчанию. Для этого создайте отдельный чекбокс на своей странице “Настройки телефонии”. Здесь необходимо сказать пару слов о том, для чего это требуется.

Ответственный сотрудник – это менеджер, который будет назначаться ответственным для событий без заданного ответственного. На первый взгляд это кажется сложным, потому рассмотрим на примере.

Предположим, вам поступил вызов от нового клиента. Он будет направлен одновременно на пять внутренних номеров (то есть пять пользователей CRM). Но никто не ответил на вызов. Разумеется, терять потенциального клиента не хочется и вы в системе создаете событие (или задачу, или лид, неважно). Но если назначить это событие на всех пятерых сотрудников, то можно получить на выходе пять обратных звонков, что плохо. В таком случае проще назначить событие на одного сотрудника (например, на руководителя отдела продаж), который уже сам определит, кому позвонить.

Но если в вашей CRM-системе есть пул неразобранных лидов и сотрудники вручную могут брать их оттуда (или они автоматически распределяются среди менеджеров), то опцию ответственного по умолчанию можно не использовать.

Другим важным аспектом является доступ к настройкам телефонии. Мы рекомендуем предоставить его только пользователю с правами администратора или руководителя. Ему так же будет полезна возможность просмотра баланса личного кабинета Novofon прямо на странице настроек. Получить его можно методом GET /v1/info/balance/.

Исходящие звонки из интерфейса CRM.

Есть два способа совершения таких вызовов. С помощью WebRTC или обратным звонком (Callback). Расскажем о каждом подробнее.

  • Виджет для звонков из браузера с помощью WebRTC.

Перед настройкой важно учесть несколько факторов. Во-первых, вы можете встроить виджет только если CRM-система использует в работе протокол https. Во-вторых, не размещайте виджет в открытом доступе в сети, иначе через него сможет позвонить любой желающий. В-третьих, при каждой загрузке страницы со стороны серверного кода, вам необходимо генерировать новый ключ для WebRTC (используется метод GET /v1/webrtc/get_key). Время жизни ключа – 72 часа.

В личном кабинете Novofon откройте раздел “Настройки”, страница “Интеграции и API”. Откройте вкладку WebRTC. Введите домен вашей CRM и задайте параметры виджета (внешний вид, расположение).

В итоге вы получите код, который нужен для интеграции в вашу CRM. Выглядеть он будет примерно так:

Вместо YOUR_KEY нужно подставить сгенерированный вами API ключ. Вместо YOUR_SIP нужно вписать ваш SIP-номер или полный логин внутреннего номера АТС, с которого будут совершаться звонки.

  • Звонки с помощью callback.

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

Все исходящие в таком случае будут осуществляться по принципу callback. Но будьте внимательны: на внутреннем номере АТС, с которого будут совершаться вызовы, должен быть настроен софтфон или IP-телефон.

Механизм работы всей системы выглядит следующим образом: пользователь в CRM нажимает на заранее добавленную иконку рядом с номером (или на кнопку вызова в веб-телефоне), после чего со стороны CRM отправляется callback по методу GET /v1/request/callback/. В параметрах передается:

  • from – это трехзначное число, обозначающее внутренний номер АТС, который назначен конкретному менеджеру;
  • to – номер телефона, на который звонит пользователь.

Затем менеджер получит входящий вызов на свой софтфон и после ответа на него будет ожидать соединение с номером, на который он изначально хотел позвонить.

Настройка всплывающих уведомлений о звонках в интерфейсе CRM.

Операторам будет очень удобно работать, если при работе со звонками они будут видеть уведомление с информацией о вызове. При реализации функционала важно помнить, что оно должно показываться только у того пользователя, кто участвует в разговоре, и может содержать следующую информацию:

  • номер телефона;
  • имя контакта (название компании, временная метка лида). Очень удобно, если оно будет ссылкой для уже известных собеседников и будет вести непосредственно к подробной карточке;
  • если вызов от нового клиента, то хорошей идеей будет добавить в уведомление кнопку создания контакта;
  • имя ответственного сотрудника, если он назначен конкретному клиенту;
  • виртуальный номер, на который поступил вызов (номер в сервисе Novofon).

Появление всплывающего уведомления вызывается триггером NOTIFY_INTERNAL (это начало входящего звонка на внутренний номер АТС) или NOTIFY_OUT_START (это начало исходящего звонка с АТС).

После того как трубка будет снята и начнется разговор, сработает NOTIFY_ANSWER (это ответ на звонок на внутренний или внешний номер). Этот триггер, в свою очередь, является событием для появления всплывающего уведомления. После его получения в уведомлении можно запустить таймер, который будет показывать длительность звонка в реальном времени. При желании, можно поменять заголовок и отображать “Разговор с 84951111111”, а не “Звонок от 84951111111” (или другой вариант, который подходит вам).

После завершения разговора отправляется уведомление NOTIFY_END (это окончание входящего звонка на внутренний номер АТС) или NOTIFY_OUT_END (это окончание исходящего звонка с внутреннего номера АТС). После получения этих уведомлений, всплывающее окно должно закрыться.

Настройка записи разговоров и работа со статистикой.

Для загрузки записей разговоров из Novofon в вашу CRM, необходимо включить запись звонков в облако. Сделать это можно в личном кабинете, раздел “Моя АТС”, страница “Внутренние номера”. Затем открыть нужный внутренний номер и в пункте “Запись и аналитика разговоров” нажать “Настроить”. Поставьте галочку напротив соответствующего пункта.

После завершения звонка и подготовки записи, в CRM придет уведомление NOTIFY_RECORD (это запись готова для скачивания).

В параметре уведомления call_id_with_rec содержится идентификатор, с помощью которого можно получить непосредственно запись. Делается это с помощью метода GET /v1/pbx/record/request/. В ответном сообщении будет ссылка на файл.

Если в вашей CRM есть собственное облако для хранения записей, то запись можно автоматически загружать туда. В другом случае можно просто добавить кнопку Play, нажатие на которую будет воспроизводить запись из ссылки.

Если вам нужна общая статистика по прошедшим звонкам, то используйте информацию из уведомлений NOTIFY_END и NOTIFY_OUT_END.

Автоматическое создание контакта при звонке с неизвестного номера.

Автоматическое создание сущностей (это может быть как лид, так и компания, так и сделка) при звонках с неизвестного номера позволит сэкономить время менеджера и гарантирует, что лид не потеряется.

Работает это следующим образом: при поступлении входящего (или при начале исходящего), номер телефона сверяется с базой данных контактов в CRM. Если совпадений не обнаружено, то будет предложено создание новой сущности и возможность привязать ее к сотруднику, который работает со звонком. Мы со своей стороны рекомендуем вам делать отдельные функции для каждого направления вызова.

Для исходящего звонка создавать информацию можно после наступления NOTIFY_OUT_START (инициация вызова), NOTIFY_ANSWER (звонок отвечен) или NOTIFY_OUT_END (завершение звонка). Во всех случаях номер телефона, на который был совершен вызов, передается в параметре destination.

Для входящих звонков можно использовать NOTIFY_INTERNAL (поступление звонка на внутренний номер сотрудника. Номер входящего передается в параметре caller_id). Мы рекомендуем создавать сущность непосредственно в начале разговора, чтобы в процессе диалога можно было вносить информацию и делать пометки.

После разговора наступит событие NOTIFY_END (завершение разговора). В параметре internal будет содержаться внутренний номер АТС, который принял звонок, и система сможет на основании этой информации назначить ответственного.

Но стоит отметить, что данный функционал не является обязательным и некоторые компании оставляют за менеджером решение о создании нового контакта.

Автоматическое направление звонка на ответственного.

При входящем вызове от уже известного клиента (номер сохранен в CRM) есть возможность автоматически направлять его на ответственного сотрудника. Причем звонящему не нужно прослушивать голосовое приветствие и как-то взаимодействовать с IVR – все произойдет быстро и автоматически.

Реализуется это с помощью NOTIFY_START. В параметре caller_id передается номер звонящего. Если он указан как контактный для клиента (и по этому клиенту есть ответственный), то можно направить вызов сразу на внутренний номер этого сотрудника.

Отдельным параметром можно указать длительность дозвона до ответственного. Если за это время ответа не поступит, то вызов будет адресован на главное голосовое меню. Сделать это все можно с помощью ответа на POST-запрос NOTIFY_START:

Настройка отображения имени клиента в ip-телефоне (софтфоне).

Настроив этот параметр вы сможете передать имя клиента из CRM на устройство, с которого менеджер работает со звонками. Делается это с помощью NOTIFY_START и ответа на него. В самом уведомлении в параметре caller_id передается номер звонящего и если он закреплен за существующим клиентом, то в ответ на NOTIFY_START можно передать латиницей имя клиента:

Настраиваем уведомления о пропущенных звонках.

При завершении входящего вызова срабатывает уведомление NOTIFY_END. В нем в параметре caller_id передается номер звонящего, по которому можно найти ответственного.

Но если звонок не был отвечен, то в параметре disposition будет статус отличный от answered.

В таком случае вы можете создать задачу/напоминание для ответственного сотрудника о пропущенном звонке.

Работа с черным списком в CRM.

Вы можете создать отдельный список из номеров, звонки с которых будут автоматически отклоняться. Способ реализации остается за вами: это может быть как окно на странице настроек телефонии, так и отдельная кнопка у каждого менеджера.

Делается это на основе триггера NOTIFY_START и ответа на него. Если номер, который находится в параметре caller_id, находится в черном списке, то в ответ передаем:

{

"redirect": "blacklist"

}

В этой статье