Запись информации о клиенте в базу, при поднятии трубки оператором
В данной статье рассмотрим возможность получение информации о клиенте из Яндекс при входящем звонке и запись этой информации в базу. Это может быть необходимо фирмам, часто работающим с различными поставщиками, чтобы не искать информацию о клиенте самостоятельно. Опираться будем на Yandex API поиска по организациям. Для начала попробуем получить информацию об организации по номеру телефона […]
В данной статье рассмотрим возможность получение информации о клиенте из Яндекс при входящем звонке и запись этой информации в базу. Это может быть необходимо фирмам, часто работающим с различными поставщиками, чтобы не искать информацию о клиенте самостоятельно. Опираться будем на Yandex API поиска по организациям.
Для начала попробуем получить информацию об организации по номеру телефона из браузера. Для этого используем следующую строку:
В результирующей строке указано множество данных, которые нам не пригодятся, их нужно отфильтровать. Для начала используем скрипт, чтобы из полученных данных вырезать нужные части. Поскольку данные получаем в 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);
Из полученных данных, нам сейчас интересно поле 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,)
Тесты проведены, теперь необходимо доработать скрипт, для отображения названия клиента оператору, при вызове. И при ответе оператором на звонок, записывать данные в базу (используем для этих целей поле 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']);
};
Если название не получено, переменная в диалплане будет пустой.
Остались вопросы?
Я - Першин Артём, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.