Создание звонка на номер с помощью API
При помощи данного API у вас есть возможность генерировать звонки с вашего номера на любые другие номера.
Звонок с внутреннего номера на внешний номер (мобильный или городской)
Параметры:
При формировании контрольной подписи значения полей «склеиваются» в одну строку с разделителем «+» в следующем порядке:
antiaon
phone
reverse
sipnumber
user
секретный ключ
От полученной строки вычисляется MD5.
Пример на PHP:
В ответ возвращается JSON-строка, содержащая результат выполнения запроса и ID заказа звонка.
Звонок на внешний номер через схему
Параметры:
При формировании контрольной подписи значения полей «склеиваются» в одну строку с разделителем «+» в следующем порядке:
phone
reverse
sipnumber
tree
user
секретный ключ
От полученной строки вычисляется MD5.
Пример на PHP:
В ответ возвращается JSON-строка, содержащая результат выполнения запроса и ID заказа звонка.
Звонок с внешнего номера на другой внешний номер
URL: https://sipuni.com/api/callback/call_external
Параметры:
Название | Описание | Значение |
---|---|---|
user | номер аккаунта | 078332 |
phoneFrom | Номер, с которого пойдет вызов | 7916123456 7499123456 . |
phoneTo | Номер, на который пойдет вызов | 7916123456 7499123456 . |
sipnumber | Внутренний номер, инициирующий первый звонок | 100001 100003 100004 201 . |
sipnumber2 | Внутренний номер, инициирующий второй звонок | 100001 100003 100004 201 . |
hash | Контрольная подпись |
При формировании контрольной подписи значения полей «склеиваются» в одну строку с разделителем «+» в следующем порядке:
phoneFrom
phoneTo
sipnumber
sipnumber2
user
секретный ключ
От полученной строки вычисляется MD5.
Пример на PHP:
В ответ возвращается JSON-строка, содержащая результат выполнения запроса и ID заказа звонка.
Обзвон клиентов с помощью API
В наших прошлых статьях мы рассказывали о стандартных способах запуска голосовой рассылки. Сегодня же, мы расскажем историю клиента, работающего с нами через API.
API — это протокол обмена данными между различными системами.
Компания, о которой пойдёт речь, занимается продажей через интернет с доставкой до покупателя.
Как это работает?
Что есть в наличии у нашего Клиента
Этап первый: доставка посылки
Почта РФ предоставляет информацию в CRM клиента о том, что посылка доставлена в почтовое отделение. Необходимо, чтобы получатель забрал посылку в течение 30 дней, иначе она будет отправлена обратно. Тут вступаем мы с отправкой голосовых уведомлений получателям.
Этап второй: обзвон клиентов
В данном случае отправляются 3 голосовых уведомления.
Параметры интеграции по API
Этап третий: интеграция API
После того, как мы записали аудиоролики и продумали схему звонков, самое время интегрировать API программы обзвонов в CRM систему. Настройки интеграции Вы можете найти в личном кабинете.
Более подробную информацию о методе работы через API Вы можете получить в Базе Знаний нашего сервиса или по телефону +79824393089.
Из соображений «коммерческой тайны», клиент не предоставил нам подробной аналитики. Тем ни менее, после подключения программы обзвонов количество отказов от посылки снизилось на 20 %.
Звонки на телефон api
Телефония в amoCRM – это интеграция amoCRM со сторонней компанией, предоставляющей услугу виртуальной телефонии, посредством виджетов.
Суть интеграции amoCRM и виртуальной АТС заключается в том, что по определенным событиям происходит обмен данными. Таких событий несколько, из них формируются возможности, дальше мы рассмотрим каждую возможность в подробности и приведём примеры их реализации.
Click 2 call
При работе пользователя в amoCRM, можно обеспечить вызов какой-либо функции, при нажатии на номер телефона или e- mail адрес контакта.
Пример работы click 2 call
Данная возможность реализуется готовой функцией add_action().
Параметры функции add_action()
Параметр | Описание |
---|---|
type | Тип передаваемого параметра, может быть: “email”, “phone” |
action | Функция, которая будет вызываться при нажатии на номер телефона или email адрес |
Рассмотрим пример использования функции add_action(), поместив её в функцию обратного вызова init, объекта callbacks структуры script.js. Подробнее о структуре script.js читайте здесь.
Пример
Важно помнить, что необходимо объявить область подключения виджета в manifest.json. Для выполнения функции add_action(), нужно задать области видимости, где есть отображённые номера телефонов или email адреса. Либо задать ограниченный спектр областей срабатывания, на ваше усмотрение, подробнее об областях подключения читайте здесь. В примере заданы все области, где встречаются номера телефонов и email адреса.
Пример
Для того, чтобы изменить надпись на кнопке, вызываемой во время нажатия на номер телефона или email адрес, необходимо в директории i18n структуры вашего виджета, внести соответствующие изменения в файле локализации *.json, так, как указано в примере ниже. Если параметр “call_action” не задан, по умолчанию в надпись на кнопке будет подставлено имя вашего виджета, являющееся обязательным параметром в manifest.json. Значение “call_action” будет подставлено в кнопку автоматически, при инициализации виджета.
Пример
Карточка входящего звонка
В системе amoCRM реализована возможность выводить в левом нижнем углу окошко с уведомлением. Как пример использования можно назвать уведомление о входящем звонке вызываемой телефонией.
Существует два основных способа создания уведомлений о звонке:
Создание уведомления с помощью публичного метода API POST /api/v2/events. Данный метод автоматически найдет сущность(контакт/компанию/сделку/покупателя) по переданному номеру телефона и отобразит уведомление с этой сущностью для нужного сотрудника. Если же сущности с таким номером еще нет в базе, то уведомление будет содержать в себе ссылку на создание нового контакта с этим номером.
Другой способ – это создание уведомлений с помощью JS части виджета. Непосредственно в момент поступления звонка на телефон сотрудника, виртуальная АТС имеет возможность запросить через API amoCRM информацию о звонящем контакте и передать ее сотруднику. Для осуществления поиска необходимо использовать метод GET /api/v2/contacts, передавая в параметр query телефонный номер. Как и все методы API, данный метод вызываются из-под авторизованного пользователя, а соответственно учитываются права пользователя на доступ к контактам. Т.е. для определения номера данный контакт должен быть в базе amoCRM и у соответствующего пользователя должны быть права на просмотр нужной карточки контакта.
Обязательно нужно ставить минимальный timeout на отработку запроса, т.к. иначе, в случае деградации связи между АТС и amoCRM, возможны проблемы со звонками.
Для доставки информации о входящем звонке до JS-скрипта на стороне клиента обычно используются технологии web- sockets, когда между клиентом и сервером устанавливается постоянное соединение и подписка на события. Можно использовать технологию периодических обращений через JS на сторонний сервер. Для этого раз в несколько секунд на стороне клиента подгружается JS-файл с целевого сервера, где определяется массив с состоянием канала (есть вызов, нет вызова для конкретного внутреннего телефона сотрудника).
Выбор метода зависит от технической возможности на стороне виртуальной АТС поддерживать web-sockets соединение. При этом необходимо учитывать внутренние номера сотрудников и их соответствие авторизованным в amoCRM пользователям, просматривающим интерфейс.
Пример карточки входящего звонка
Для реализации карточки входящего звонка можно использовать предусмотренный объект. В примере функция, созданная для работы с ним.
Пример
Параметр text является обязательным для передачи в функцию add_call.
Для того, чтобы найти информацию по контакту имея только номер телефона входящего вызова, можно использовать jquery запрос.
Пример
Важно помнить, что необходимо объявить область подключения виджета в manifest.json. Для выполнения функции карточки входящего звонка, рекомендуется задать область everywhere. Определив тем самым, что ваш виджет будет срабатывать в любой области amoCRM, это позволит получать уведомления о входящем звонке вне зависимости от того, какую работу выполняет пользователь в amoCRM. Подробнее об областях подключения читайте здесь.
Пример
Так же можно вывести информацию о совершённом звонке, передав входящие данные:
Пример
Пример изменённых входных данных
Создание карточки контакта
В системе amoCRM есть возможность создать карточку контакта, в случае если входящий вызов поступает с контакта, которого ещё нет в вашем аккаунте.
Пример уведомления
Для реализации этой возможности необходимо внести изменения в метод, описанный в «Карточке входящего контакта».
Пример
Умная переадресация
При поступлении звонка, кроме информации об имени звонящего, вы также можете получить ID пользователя amoCRM, ответственного за карточку звонящего контакта. Из информации об аккаунте вы можете получить телефонный номер ответственного сотрудника и произвести переадресацию вызова именно работающему с контактом человеку.
Для реализации этой возможности вам понадобится составить несколько запросов к нашему API, чтобы в итоге получить телефонный номер сотрудника ответственного за карточку звонящего контакта.
Пример
$responsible_user_id будет ID пользователя, ответственного за карточку совершающего вызов контакта. Т.к. данные пользователей на аккаунте amoCRM и в базе виджета телефонии совпадают, что является одним из условий подключения виджета телефонии, вы можете перевести входящий вызов на ответственного пользователя.
Результат звонка
Функция реализуется путём запуска модального окна, в котором можно реализовать создание новой сделки или контакта, с указанием примечания или задачи, которые будут связаны с созданной сущностью.
Пример результата звонка
Модальное окно состоит из следующих элементов:
– Отобразится сделка, если у контакта только одна сделка.
– Отобразится покупатель, если к контакту привязана только сущность покупателя.
– Отобразится компания, если номер был занесен отдельно в графе самой компании.
– Отобразится контакт, если у него привязаны и покупатель, и сделка или несколько сделок – то высветится окно контакта.
– При нажатии кнопки «Отменить» после разговора с неизвестным контактом звонок окажется в неразобранном.
Архив с шаблоном модального окна вы можете скачать здесь
Необходимо учитывать, что для успешного запуска модального окна, скрипт вашего виджета должен начинаться так, как показано в примере ниже.
Пример
Для примера реализации данной возможности, создадим модальное окно, с разметкой для ввода информации и опишем запросы к API, для занесения информации в базу данных. Подробнее о структуре запросов на добавление сущностей через запросы к API, читайте здесь.
Пример
Логирование звонка
Логирование звонков осуществляется в события соответствующего контакта, в соответствующие типы событий исходящего и входящего звонка. Если АТС поддерживает запись звонков, то пользователю может быть выведена ссылка и плеер для прослушивания записанного разговора.
Оба эти метода осуществляют поиск сущностей по номеру телефона автоматически. И прикрепляют звонок к одной из них по определенному алгоритму, более подробно об алгоритме логирования звонков можно узнать по этой ссылке. Более быстрым является добавление звонка методом POST /api/v2/calls. Так как, если сущность с таким номером уже существует, то звонок к ней прикрепиться мгновенно. Однако, если сущность с переданным номером телефона не существует в базе, звонок прикреплен не будет.
При использовании метода calls/add звонки добавляются не мгновенно, а через некоторое время. Также, если не удалось найти карточку с таким номером телефона сразу, система еще в течении 18-ти часов будет пытаться ее. Если в течении 18- ти часов такая карточка не будет найдена, то звонок не добавится.
Результат добавления звонков, отображаемый в карточке контакта
Сообщение об ошибке
Для того, чтобы оповещать пользователя о проблемах, возникающих в фоновых процессах, необходимо воспользоваться отдельным JS- объектом, который при вызове выведет пользователю уведомление об ошибке, к примеру, о неудавшемся подключении к серверу.
Рекомендуем использовать подобные уведомления, если JS на странице производит какие-то фоновые действия (вызываемые скрыто от пользователя, не по его вызову). В таких случаях вы можете уведомлять пользователя о том, что что-то пошло не так и какие действия ему необходимо предпринять.
Пример сообщения об ошибке
Параметры
Параметр | Тип | Описание |
---|---|---|
header | string | Имя виджета будет отображаться в заголовке |
text | string | Сообщение об ошибке |
date | timestamp | Дата |
callbacks: объект функций обратного вызова. При добавлении нового сообщения или ошибки AJAX запрос отправляется на сервер, который возвращает номер данного сообщения в случае успешного сохранения данных, в зависимости от успешности запроса срабатывает одна из переданных функций данного объекта.
Пример
Занесение в «Неразобранное»
В amoCRM существует сущность «Неразобранное», в которую попадают все обращения из различных интеграций, в том числе и телефонии.
В «Неразобранное» попадают входящие звонки с неизвестных номеров (в системе нет привязанного контакта), принятые пользователем, которые начинают отображаться в колонке «Неразобранное». Пользователь не может самостоятельно перевести обращение в «Неразобранное».
Для виджетов, работающих с SIP: заявка пропадет из «Неразобранное», если пользователь создает контакт или компанию с данным номером телефона. Заявка представляет собой краткую информацию о звонке: телефон звонившего, время звонка, длительность звонка. Звонок можно прослушать или скачать.
Пользователь может в модальном окне результатов звонка написать примечание или создать задачу, и они привяжутся к сделке, если «Неразобранное» будет принято. При перетаскивании автоматически создаётся сделка и контакт (с телефоном, с которого производился звонок). Название сделки будет при этом “Звонок от и номер телефона”, имя контакта будет “Автоконтакт номер телефона”. При отклонении заявки она пропадет из «Неразобранного», информация о звонке пропадает.
Пример добавления звонков в “Неразобранное”
Метод для добавления неразобранных заявок.
URL метода
Параметры
Параметр | Тип | Описание |
---|---|---|
add/source_name require |
string | Название источника заявки |
add/source_uid require |
string | Уникальный идентификатор заявки |
add/pipeline_id | int | id цифровой воронки, если параметр не передан, то заявка будет добавлена в неразобранное первой воронки |
add/created_at | timestamp | Дата и время создания |
add/incoming_lead_info | array | Массив содержащий информацию о поступившей заявке |
add/incoming_entities require |
array | Массив содержащий информацию о создаваемых элементах сущностей. Является обязательным, поскольку после принятия неразобранного, будет создан соответствующий элемент сущности. |
add/incoming_entities/leads | array | Массив содержащий информацию для создания новой сделки. Может содержать все параметры и дополнительные поля доступные “Сделкам” на аккаунте. |
add/incoming_entities/contacts | array | Массив содержащий информацию для создания нового контакта. Может содержать все параметры и дополнительные поля доступные “Контактам” на аккаунте. |
add/incoming_entities/companies | array | Массив содержащий информацию для создания новой компании. Может содержать все параметры и дополнительные поля доступные “Компаниям” на аккаунте. |
add/incoming_lead_info/to require |
int | Идентификатор пользователя, который принял звонок |
add/incoming_lead_info/from require |
string | Внешний номер телефона |
add/incoming_lead_info/date_call require |
timestamp | Дата и время звонка |
add/incoming_lead_info/duration require |
int | Продолжительность звонка |
add/incoming_lead_info/link require |
string | Ссылка на запись звонка |
add/incoming_lead_info/service_code require |
string | Код виджета или сервиса, через который был совершён звонок |
add/incoming_lead_info/uniq require |
string | Уникальный код звонка |
add/incoming_lead_info/add_note require |
bool | Флаг, если передан этот параметр, то по принятию заявки в созданные сущности будет добавлено событие о совершённом звонке. |
Пример
Список обзвона
Существует возможность создавать списки обзвона, из списков контаков, компаний и сделок. Для этого необходимо указать желаемые для добавления элементы списка и через вкладку «ещё» передать выбранные элементы в ваш список обзвона.
Возможно реализовать автоматический обзвон, с указанным в настройках виджета интервалом времени. Авто-обзвон по созданному списку можно ставить на паузу или пропускать один из элементов списка и переходить к следующему.
В примере мы укажем некоторые ключевые особенности формирования списка обзвона. Полный и исчерпывающий пример реализации вы можете посмотреть самостоятельно в примере полноценного виджета телефонии, в разделе интеграции виджета телефонии, здесь.
Пример выбора элементов
Пример списка обзвона
Для того, чтобы сформировать список обзвона, сперва необходимо реализовать функцию выбора элементов из списка сущностей. Пример реализации выбора элементов для script.js структуры вашего виджета.
Пример
Поскольку мы рекомендуем задавать область видимости „everywhere”, для всех виджетов телефонии, в manifest.json, то нет необходимости задавать дополнительные области видимости для выбора элементов из списка.
Далее нам необходимо воспроизвести выбранные элементы в виде списка. В примере мы приведём рендер шаблона формата *.twig, со структурой самого шаблона.
Пример
Пример *.twig шаблона для списка обзвона.
Функция встроенного звонка (WebRTC)
WebRTC – технология, позволяющая совершать и принимать вызовы прямо в браузере. Стоит принять во внимание, что не все бразуеры или их версии поддерживают данную технологию. Подробнее узнать о поддерживаемых на данный момент браузерах можно на официальной странице технологии.
WebRTC – решение с открытым кодом, и некоторые виджеты для интеграции amoCRM с виртуальными АТС используют его.
Отображение, работающей функции совершения звонков, в различных браузерах выглядит по-разному. В Mozilla Firefox это иконка микрофона. В браузере Google Chrome активная функция отображается в виде красного знака на вкладке и иконки видеокамеры в правой части адресной строки, подтверждающей доступ к вашему микрофону.
Интеграция MANGO OFFICE с бизнес-приложениями через API
Интеграция виртуальной АТС MANGO OFFICE со многими популярными бизнес-приложениями уже сделана.
Но что делать, если готовой интеграции нет?
Воспользоваться API MANGO OFFICE!
Что вам даст интеграция с MANGO OFFICE через API
Вы сами используете интегрируемое приложение
Ваше приложение станет намного мощнее
В приложение встраиваются коммуникации.
Например, вы сможете:
Вы можете продавать созданный коннектор
Спрос обеспечивается популярностью облачной телефонной системы MANGO OFFICE
Вы — производитель приложения или занимаетесь его продажей
Вы получаете дополнительный канал продвижения своего приложения
Ваше приложение становится более конкурентоспособным
Ваше приложение становится интегрированным с лидирующей системой облачной телефонии.
Пользователи вашего приложения получают доступ к богатому функционалу виртуальной АТС MANGO OFFICE, полезному сотрудникам и руководству отделов продаж, маркетинга, технической поддержки, клиентского обслуживания, аналитики
Вы — поставщик сервисов интеграции
Вы можете оказывать услуги интеграции
Вы можете интегрировать множество приложений с лидирующей на рынке телефонной системой.
Смотрите условия сотрудничества
Почему MANGO OFFICE
Широкие возможности API
MANGO OFFICE – уверенный лидер рынка облачных коммуникаций
Среди наших клиентов большой спрос на интеграционные решения
Богатый функционал облачной телефонии
MANGO OFFICE
Широкие возможности API
Множество функций, включая:
MANGO OFFICE – уверенный лидер рынка
облачных коммуникаций
Мы предоставляем услуги бизнес-телефонии более 40 000 компаний (на конец 2017 г.).
Каждый месяц мы подключаем более 1 000 новых предприятий-клиентов.
Среди наших клиентов большой спрос
на интеграционные решения
Мы лидеры не только по числу клиентов, но и по возможностям телефонной системы.
MANGO OFFICE имеет в составе множество алгоритмов распределения вызовов, богатую аналитику, управление звонками в реальном времени, функционал кол-центра.
Поэтому нашими клиентами в первую очередь становятся предприятия, которые уделяют большое внимание формированию рабочих процессов и поддержке процессов ИТ системами. Среди них высокий спрос на интеграционные решения.