Александр Мисюрин
29.05.2020
3093

Запись информации о клиенте в базу, при поднятии трубки оператором

В данной статье рассмотрим возможность получение информации о клиенте из Яндекс при входящем звонке и запись этой информации в базу. Это может быть необходимо фирмам, часто работающим с различными поставщиками, чтобы не искать информацию о клиенте самостоятельно. Опираться будем на Yandex API поиска по организациям. Для начала попробуем получить информацию об организации по номеру телефона […]

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

Для доступа к работе с данным API необходим ключ, который получается в Кабинете Разработчика Yandex. Также следует помнить, что бесплатно дается только 500 попыток.

Для начала попробуем получить информацию об организации по номеру телефона из браузера. Для этого используем следующую строку:


Voxlink информация об организации

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

json_decode:
$name=`/usr/bin/curl "https://search-maps.yandex.ru/v1/?apikey=<apikey>&text=$num&lang=ru_RU&type=biz&results=1"`;
$jarr=json_decode($name, TRUE);

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

var_dump($jarr);
Массив данных JSON

Из полученных данных, нам сейчас интересно поле name, которое мы должны отдать в вывод. Это позволит использовать его в стороннем приложении, которым в нашем случае выступает Asterisk.

print_r($jarr['features'][0]['properties']['name']);

Выводим название компании.

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

Проверяем простым звонком на custom номер (чтобы не дергать каждый раз API, можно на время тестов текст просто внести в переменную).

exten => 0101,1,Set(name=${SHELL(/usr/bin/php -f /opt/get_name.php 74959898533)})
same => n,NoOp(${name})
same => n,Macro(hangupcall,)

Рис.3 Вывод имени клиента в консоль Asterisk

Тесты проведены, теперь необходимо доработать скрипт, для отображения названия клиента оператору, при вызове. И при ответе оператором на звонок, записывать данные в базу (используем для этих целей поле userfield).

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

[from-trunk-pre]
exten => _XXXX.,1,Set(__name=${SHELL(/usr/bin/php -f /opt/get_name.php ${CALLERID(num)})})
same => n,Set(CALLERID(name)=${name}: ${CALLERID(num)})
same => n,Goto(from-trunk,${EXTEN},1)

Направление вызова может быть любым, однако, чтобы запустить запись в базу именно при поднятии трубки оператором,  Необходимо в Dial при вызове оператора добавить опцию M, в которой указать необходимый контекст макроса, например macro-call-answered. Это необходимо, если вы хотите записать в базу также того, кто поднял трубку первым.

Возможно в вашей системе уже будет нечто подобное, если вы используете FreePBX (macro-auto-blkvm), но следует помнить, что срабатывает он, только если вызов до оператора дошел через очередь, либо ринг-группу.

В сам макрос необходимо поместить строку вида:

exten => s,1,ExecIf($["${name}" != ""]?Set(CDR(userfield)=Компания: ${name}| Оператор: ${EXTTOCALL}))

Либо дополнить ее нужной вам информацией из запроса, в таком случае в скрипте нужно будет их возвращать в одну строку (можно также записывать в базу всю строку, а затем ее обрабатывать далее).

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

Также скрипт необходимо дополнить проверкой на наличие результата:

$num=$argv[1];

$name=`/usr/bin/curl "https://search-maps.yandex.ru/v1/?apikey=<apikey>&text=$num&lang=ru_RU&type=biz&results=1"`;
	if ($jarr['properties']['ResponseMetaData']['SearchResponse']['found'] != 0) {
	print_r($jarr['features'][0]['properties']['name']);
};

Если название не получено, переменная в диалплане будет пустой.

Отображение на софтфоне названия клиента

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Остались вопросы?

Я - Першин Артём, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование


ближайшие курсы

10 доводов в пользу Asterisk

Распространяется бесплатно.

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

Безопасен в использовании.

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

Надежен в эксплуатации.

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

Гибкий в настройке.

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

Имеет огромный функционал.

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

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

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

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.