🎁 Начинаем весну с цветов и подарков: дарим 10% на тариф "Корпорация" по промокоду VESNA10 до 31 марта 2025 года.

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

Введение

Интеграция CRM с IP-телефонией Novofon позволяет автоматизировать коммуникацию с клиентами, связав ключевые этапы взаимодействия (звонки, SMS, записи разговоров) с базовыми функциями системы управления. Это упрощает работу менеджеров, повышает прозрачность процессов и минимизирует риски потери контактов.

Почему Novofon?

Интеграция с Novofon выгодна по нескольким причинам:

  1. Опыт : более 14 лет на рынке, 2 000 000+ клиентов.
  2. Бесплатность : API и интеграция доступны без доплат.
  3. Тарифы : низкие цены на звонки и тарифные пакеты.
  4. Инструменты : коллтрекинг, распознавание речи, виджет обратного звонка (включены в бесплатный маркетплейс).
  5. Надежность : облачная система с резервированием в дата-центрах РФ, соответствие закону "О связи".
  6. Поддержка : доступна через чат, заявки, телефон или email.
  7. Удобство : для пользователя настройка интеграции занимает 5 минут в личном кабинете.

Основные компоненты взаимодействия

1. Система уведомлений (webhook) : API Novofon отправляет события (например, входящий звонок) в CRM.

2. POST-запросы : CRM взаимодействует с API Novofon для управления вызовами, записями и другими функциями.

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

Подготовка к интеграции

Шаг 1. Регистрация в Novofon

  1. Зарегистрируйтесь на сайте https://novofon.com/sign-up
  2. Пройдите базовые этапы:
  • Подтвердите контактный номер
  • Подпишите договор (для физ. лиц — требуется УКЭП)
  • Пополните счет
  • Подключите виртуальный номер

Шаг 2. Создание API-ключа

В личном кабинете:

  • Перейдите в Пользователи АТС → Редактирование пользователя "Администратор" → Вкладка "API" .
  • Включите "Использовать ключ API" , сгенерируйте Secret и сохраните его.

Шаг 3. Разрешение безопасности

В разделе Настройки → Правила и настройки безопасности → Вкладка "API" добавьте IP-адреса CRM. По умолчанию наш API закрыт для обращений с любых IP-адресов, этот шаг обязателен к выполнению.  

Шаг 4. Укажите URL CRM

CRM должна иметь URL для приема уведомлений (например: https://mytestcrm.ru/novofon). Этот адрес будет использоваться в настройках Novofon.

Настройка уведомлений в личном кабинете Novofon

Добавление уведомления:

Перейдите в Настройки → Уведомления и нажмите Добавить уведомление. Количество уведомлений не ограничено, вы можете добавить столько уведомлений, сколько нужно для решения ваших задач.

Параметры уведомления:

Название: произвольное (например, "Входящий звонок").

Тип события: выберите из списка (см. ниже).

Условия уведомлений: задайте фильтры (например, по виртуальному номеру, направление звонка).

Способ получения: выберите HTTP для интеграции с CRM.

URL: введите адрес CRM (например, https://mytestcrm.ru/novofon).

Метод: GET или POST (в зависимости от требований CRM).

Тело запроса: воспользуйтесь предустановленным шаблоном, либо добавьте/уберите параметры/перепишите уведомление под цели вашей интеграции

Рассмотрим некоторые параметры подробнее ниже.

Тип события

В Novofon доступны следующие типы событий для интеграции. Каждое событие можно настроить как отдельное уведомление в личном кабинете.

Условия уведомлений

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

Можно добавить несколько условий, связанных отношением “и” (+ Добавить группу условий), либо “или” (+Добавить условие). 

Методы передачи данных

Выберите метод — GET или POST — в зависимости от возможностей вашей системы, с которой вы интегрируете телефонию. 

GET-метод

Формат: Query String или JSON (начинается с {).

Пример: https://mytestcrm.ru/novofon?event=call_started&phone=74951234567.

В режиме предпросмотра уведомления GET-запросы будет отображен декодированным, но отправляться он будет в кодировке согласно RFC 3986.

POST-метод

Шаблон должен быть в формате JSON в стандарте RFC 7159. JSON структура может начинаться как с символа «{», так и с символа «[».

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

Тело уведомления

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

Для добавления нового параметра кликните на “Добавить параметр”. 

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

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

Тестирование уведомлений

Кликните "Протестировать уведомление" , чтобы проверить формат данных и доступность CRM.

Если в системе, с которой вы интегрируете телефонию, выполняется проверка по IP-адресу, скопируйте наш адрес из поля “IP-адреса, с которых будут отправляться уведомления” - 37.139.38.215

На случай сбоя во время отправки уведомления предусмотрено четыре 2дополнительных попытки отправки через 2,4,8 и 16 часов.

Пример применения уведомлений

Цель: Автоматическое открытие карточки клиента при входящем звонке.

Настройка:

Тип события: Ожидание ответа.

Условия: Направление звонка = Входящий.

URL CRM: https://mytestcrm.ru/novofon (или ваш URL).

Метод: GET или POST (в зависимости от требований CRM).

Результат: CRM получает данные о звонке и автоматически открывает карточку клиента, если номер уже есть в системе. Для новых клиентов можно добавить триггер создания лида/контакта.

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

На стороне CRM должна быть страница для настройки интеграции, например, “Настройки телефонии Novofon” с основными параметрами:

  • Поле для ввода ключа авторизации (Secret).
  • Ссылка на модуль телефонии в CRM которую мы подтверждали ранее https://mytestcrm.ru/novofon.
  • Список пользователей с возможностью назначить каждому соответствие с сотрудником АТС. 

Список пользователей АТС можно получить методом DATA API "get.employees"

Обязательным параметром данного запроса является только access_token (Secret, который вы создали на этапе “Подготовительные шаги”). 

Из полученного списка пользователей АТС формируем контекстное меню для назначения пользователя АТС каждому пользователю CRM. Для идентификации пользователя АТС можно выводить к выбору имя пользователя из параметра full_name, либо внутренний номер из параметра extension_phone_number, на ваше усмотрение и в зависимости от того, как будет удобно вашим конечным пользователям. 

Если пользователь АТС уже сопоставлен с пользователем CRM, этот пользователь АТС больше не должен быть доступен для выбора и назначения другому пользователю CRM.

Рекомендуем одного из пользователей назначать ответственным по умолчанию, создав соответствующий чекбокс на странице настроек телефонии. Ответственный по умолчанию - это сотрудник, который будет назначаться ответственным по событиям у которых нет явного ответственного. Например: Входящий звонок от нового клиента направлен одновременно на 5 внутренних номеров (5 пользователей CRM), и никто из них не снял трубку. Потенциального клиента не хотелось бы терять, для этого в CRM можно создать событие, задачу или лид “Пропущенный звонок с номера”. Но на кого из пользователей его назначить? Если назначить на всех пятерых пользователей, то клиенту могут перезвонить 5 раз, что не очень хорошо. В этом случае можно назначать событие на сотрудника ответственного по умолчанию (например, на руководителя отдела продаж). Если у вас в CRM есть пул неразобранных лидов,  и пользователи сами берут оттуда лиды, или они назначаются пользователям автоматически, согласно внутреннему алгоритму, опцию ответственного по умолчанию можно не использовать.

Настройки телефонии в CRM обычно доступны только пользователю с правами администратора/руководителя. 

Функционал, который можно реализовать в рамках интеграции

1. Исходящие вызовы из интерфейса CRM с помощью обратного звонка

В интерфейсе CRM возле каждого номера телефона добавляем иконку/кнопку для инициации звонка на этот номер телефона, также рекомендуем реализовать веб-телефон с номеронабирателем для звонка на новый номер, ранее не сохраненный в CRM. Исходящие звонки осуществляются по принципу обратного звонка. То есть пользователь в CRM кликает на иконку рядом с номером телефона или на кнопку звонка в веб-телефоне, со стороны CRM отправляется обратный звонок. Вызов поступает на сопоставленного пользователя АТС, пользователь АТС отвечает на этот звонок, далее идет дозвон до абонента, после этого их соединяет в разговор. На пользователе виртуальной АТС должно быть настроено ПО/оборудование (например, IP телефон или софтфон), либо переадресация на внешний номер для осуществления таких звонков. 

Метод для осуществления обратного звонка есть метод Call API “start.employee_call” 

Обязательные параметры: 

access_token – Secret, который мы создали в разделе “Подготовительные шаги”.

first_call – определяет номер, на который нужно дозвониться в первую очередь:

employee - сотрудник;

contact - вызываемая сторона (обычно клиент);

В большинстве случаев в данном параметре выбирается employee.

virtual_phone_number – виртуальный номер, арендуемый клиентом. Формат номера должен соответствовать международному стандарту E.164 (например, 74993720692). Всегда используется в качестве номера звонящего при звонке на номер, указанный в параметре contact. Используется в качестве номера звонящего при звонке на номер, указанный в параметре employee, если параметр show_virtual_phone_number имеет значение true (по умолчанию всегда true). Список всех виртуальных номеров пользователя можно получить с помощью DATA API метода - Получение списка виртуальных номеров. Для того, чтобы при обратном звонке отобразить виртуальный номер, который выбран у конкретного пользователя АТС в качестве номера для исходящих, его можно получить методом DATA API get.sip_lines в параметре virtual_phone_number, и по параметру employee_id можно сопоставить, какому сотруднику какой виртуальный номер назначен для исходящих вызовов. 

contact – номер абонента на который совершается вызов. Формат номера должен соответствовать международному стандарту E.164 (например, 74951270777). 

В employee необходимо заполнить параметр id - id сотрудника, можно получить методом DATA API get.employees  из параметра id.

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

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

  • Номер телефона
  • Имя контакта/компании/лида, если номер телефона ранее сохранен в CRM, имя является ссылкой для перехода непосредственно к сущности (контакт/компания/лид)
  • Если звонок от нового клиента - кнопка создания контакта/компании/лида
  • Имя ответственного сотрудника, если звонок от существующего клиента
  • Виртуальный номер, на который поступил входящий звонок (номер подключенный в Novofon)

Триггером для появления всплывающего уведомления является событие “Ожидание ответа” (начало входящего звонка на пользователя АТС), либо событие “Исходящий звонок” (начало исходящего звонка с АТС). 

Когда снимут трубку и начнется разговор, в CRM будет отправлено уведомление “Начало разговора” (ответ при звонке на внутренний или на внешний номер), которое в свою очередь является триггером для всплывающего уведомления/карточки клиента. При получении события “Начало разговора” в уведомлении может запуститься отсчет времени показывающий длительность звонка в реальном времени.

Когда звонок завершен, будет отправлено уведомление “Завершение звонка”. 

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

Соответственно уведомления “Ожидание ответа”, “Исходящий звонок”, “Начало разговора”, “Завершение звонка” должны быть настроены в личном кабинете Novofon в разделе Настройки - Уведомления. Подробно настройка уведомлений описана в разделе “Настройка уведомлений о событиях в личном кабинете Novofon”. 

3. Аудиозаписи и статистика звонков

Для того, чтобы аудиозаписи в принципе были в личном кабинете Novofon необходимо включить запись звонка в разделе Телефония - Пользователи АТС - открыть редактирование пользователя АТС - вкладка “ВАТС и данные для стороннего оборудования” - поле “Запись разговора”. По умолчанию опция включена. 

Ссылка на аудиозапись отправляется в событии “Записанный разговор”, когда запись звонка готова, в параметре file_link. 

Если есть необходимость запрашивать записи звонков по API, для этого вы можете использовать метод DATA API get_calls_report в параметре call_records  - уникальный идентификатор ссылки на записанный разговор. Можно прослушать запись, вызвав запрос в браузере: https://app.novofon.ru/system/media/talk/{communication_id}/{уникальный индентификатор ссылки на записанный разговор}/ )

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

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

Для формирования общей статистики звонков в CRM можно использовать информацию о звонках полученную из уведомления “Завершение звонка”. Либо можно использовать метод DATA API get_calls_report. Подробнее о том, какие в целом есть методы для запроса отчета, вы можете найти в документации https://novofon.github.io/data_api/reports/ 

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

При поступлении входящего звонка или инициации исходящего звонка, номер телефона сверяется с базой данных из CRM и если номер не найден, можно создавать новый контакт/лид/сделку/заявку и назначать эту сущность пользователю который совершал звонок. Рекомендуем делать отдельные опции автосоздания событий для входящих и исходящих звонков. Для исходящего звонка создавать сущность можно: когда звонок инициирован (уведомление “Исходящий звонок”), когда звонок отвечен (уведомление “Начало разговора”), по завершению звонка (уведомление “Завершение звонка”). Номер телефона, на который совершается звонок передается в параметре contact_phone_number. 

Для входящего звонка создавать сущность можно когда звонок поступил на внутренний номер пользователя CRM (уведомление “Ожидание ответа”, номер звонящего передается в параметре contact_phone_number) для того чтобы во время разговора пользователь уже мог открыть только что созданную карточку звонящего клиента, редактировать её, вносить пометки и т.д. По завершении входящего звонка будет отправлено уведомление “Завершение звонка”, в котором в параметре employee_id будет передан id пользователя АТС, который принял этот звонок, сопоставив этот идентификатор с списком пользователей CRM, система поймет какого пользователя назначить ответственным. Некоторые CRM системы не используют автоматическое создание сущностей, давая возможность менеджеру принявшему звонок определить целевой звонок или нет и вручную создать лид/контакт/задачу.

5. Автонаправление входящего звонка на ответственного сотрудника

Данная задача может быть реализована с помощью операции “Интерактивная обработка вызова” (ИОВ). Как это работает? 

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

В этой операции нужно задать: 

  • URL, по которому можно связываться с обработчиком запросов; 
  • метод отправки запроса: GET или POST (в зависимости от вашей платформы);
  • параметры, которые необходимо включать в запрос (call_session_id, start_time, input_result, numa, numb); длину кода доступа, если требуется получать от звонящего DTMF.

Это может быть реализовано, например, так: 

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

Настоятельно рекомендуем для вариантов “Ошибка http-запроса”, “Сообщение проиграно”, “Переадресация не удалась” устанавливать далее переадресацию на сотрудника, либо на группу сотрудников, чтобы не потерять звонки в случаях, когда ответственный не будет найден в CRM.

После того, как сценарий настроен, в разделе Телефония - Виртуальные номера в строке виртуального номера в колонке “Переадресация на” нужно выбрать вариант “Сценарий” - ваш подготовленный сценарий.

После того, как вы все настроите, при входящих вызовах на виртуальный номер на указанный URL в рамках настройки операции ИОВ будут приходить события по входящим вызовам от виртуальной АТС, которые содержат параметры:

call_session_id — идентификатор звонка;

start_time — время начала звонка;

input_result — введенные звонящим коды DTMF;

numa — номер звонящего;

numb — номер, на который звонят. 

Сервер должен прислать успешный (со статусом 200) http-ответ, в котором будет инструкция для виртуальной АТС — JSON-структура в формате переадресации. 

Например: 

{

  "phones": список номеров,

  "message_name": имя файла в базе

  или

  "text": текст для произнесения

  "operator_media": "op_hint.mp3"

  или

  operator_text”: текст для произнесения

}

где в "phones" указан sip-логин ответственного сотрудника, либо его номер переадресации, на который далее переадресовывается вызов. Sip-логин и номер переадресации можно получить методом DATA API get.employees в параметре phone_numbers, также для каждого телефонного номера в рамках пользователя АТС есть параметр status, в котором указано активен ли этот sip-логин и/или номер переадресации, в соответствии с этой информацией можно отправлять вызов на sip-логин, либо на номер переадресации.

Параметры "message_name" или "text" включают воспроизведение сообщения для абонента.

text - текстовое сообщение абоненту воспроизведенное через синтезатор речи Text-to-Speech

message_name - имя файла для воспроизведения абоненту (берется из учетной записи Novofon из раздела Телефония - Настройки - База файлов - "Звуковые файлы" - загруженные файлы в формате .mp3)

Если одновременно диктуются две инструкции text и message_name, то воспроизведено будет message_name. 

Параметры “operator_text” и “operator_media” включают воспроизведение сообщения для пользователя АТС. 

operator_text - текстовое сообщение оператору воспроизведенное через синтезатор речи Text-to-Speech

operator_media - имя файла для воспроизведения оператору (берется из учетной записи Novofon из раздела Телефония - Настройки - База файлов - "Звуковые файлы" - загруженные файлы в формате .mp3)

Если одновременно диктуются две инструкции operator_media и operator_text, то воспроизведено будет operator_media. 

Больше возможностей, как можно использовать операцию ИОВ, вы можете прочитать подробнее в документации https://novofon.github.io/interactive_call_processing/ 

6. Создание задачи по пропущенным звонкам

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

7. Черный список в CRM

Сотрудник CRM может вносить номера в “Черный список” в личном кабинете в разделе Телефония - Настройки - Черный список, а также непосредственно во время звонка с помощью функционала “Опции разговора”. Опции разговора задаются в разделе Телефония - Настройки - Опции разговора. На каждую клавишу можно задать определенную опцию, например, при нажатии на цифру 2 во время разговора можно задать действие “Сохранить АОН” - “Черный список”. 

Либо можно на стороне CRM реализовать кнопку, по которой номер абонента отправляется в “Черный список” с помощью взаимодействия с методом DATA API create.phone_number_to_blacklist

Обязательные параметры в запросе: 

access_token - Secret, который мы создали в разделе “Подготовительные шаги”.

phone_number - номер телефона, который вы хотели бы добавить в “Черный список”. 

8. Коллтрекинг

Если со стороны клиентов поступает запрос, что хотели бы в вашей CRM видеть utm-метки по звонкам, URL страницы обращения, либо другие параметры, связанные с сервисом коллтрекинг, вы можете добавить соответствующие параметры в уведомлении о событии “Входящий звонок на виртуальный номер”. Подробнее о настройке уведомлений по событиям описано в шаге “Настройка уведомлений о событиях в личном кабинете Novofon”. 

Наиболее часто спрашиваемые параметры: communication_page_url (URL страницы обращения), utm_campaign (название кампании), utm_content (содержание рекламной кампании), utm_medium (канал рекламной кампании), utm_referrer (UTM-метка Referrer), utm_source (источник рекламной кампании), utm_term (ключевое слово рекламной кампании), ym_client_id (идентификатор пользователя Яндекс.Метрики).  

9. Входящие SMS

Вы также можете настроить прием входящих смс на ваш ресурс по виртуальным номерам, подключенным в личном кабинете Novofon. 

Для этого нужно настроить уведомление с типом события “Получено sms сообщение”. 

Подробнее о настройке уведомлений по событиям рассказываем в шаге “Настройка уведомлений о событиях в личном кабинете Novofon”. 

10. Распознавание речи

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

После включения распознавания речи нужно настроить уведомление с типом события “Текст распознанного звонка”, способ уведомления - HTTP. 

Подробнее о настройке уведомлений по событиям рассказываем в шаге “Настройка уведомлений о событиях в личном кабинете Novofon”. 

Добавление интеграции в маркетплейс Novofon

После успешного выполнения предыдущих шагов и успешном тестировании на уровне отдельного пользователя можно подать заявку на добавление интеграции в маркетплейс Novofon. Это позволит конечному пользователю быстро и удобно сохранять все необходимые настройки. Заявки необходимо отправлять на электронный адрес partners@novofon.ru с пометкой "Запрос на добавление интеграции c [Имя вашей СRM] в маркетплейс Novofon".

Важные ссылки