Верификация мобильных номеров – часть 1
Описание: в этой статье мы рассмотрим возможность проверки существования мобильного номера и его доступности. Все инструкции тестировались на следующем оборудовании: CentOS Linux release 7.5.1804 Asterisk 13.21.0 PHP 5.6.36 Apache/2.2.15 MySQL/10.1.33-MariaDB Используемые технологии: PHP MySQL Dialplan asterisk Вначале следует сказать, что программные АТС на базе asterisk умеют определять статус звонка и включают в себя следующие значения: […]
Описание: в этой статье мы рассмотрим возможность проверки существования мобильного номера и его доступности.
Все инструкции тестировались на следующем оборудовании:
CentOS Linux release 7.5.1804
- Asterisk 13.21.0
- PHP 5.6.36
- Apache/2.2.15
- MySQL/10.1.33-MariaDB
Используемые технологии:
- PHP
- MySQL
- Dialplan asterisk
Вначале следует сказать, что программные АТС на базе asterisk умеют определять статус звонка и включают в себя следующие значения:
- «CANCEL»: Вызов отменен
- «ANSWER»: На вызов был получен ответ
- «NOANSWER»: На вызов не ответили
- «BUSY»: Получен сигнал занято
- «CONGESTION»: Канал перегружен
- «CHANUNAVAIL»: Канал недоступен (Для SIP, может быть в случае если пир не зарегистрирован)
Подробнее можете ознакомиться со встроенной отчётностью в нашей статье: https://voxlink.ru/kb/freepbx/statistika-zvonkov-cdr-v-freepbx-13/
Статус можно получить, обработав переменную канала ${DIALSTATUS} или же обратившись после звонка к внутренней базе asteriskcdrdb.cdr.
Наша задача заключается в реализации функции дозвона и возврате его статуса, поэтому реализуем небольшое API-которое будет выполнять эту задачу. Примерная логическая схема ниже:
- «Оранжевое» направление
Получив номер мобильного и номер договора API вызывает кастомный контекст диалплана asterisk
[phone-verification]
exten => _[87]9X.,1,NoOp( VERIFICATION ${EXTEN} BEGIN )
Разрешили обрабатывать только мобильные номера, начинающиеся с «79…» и «89…»
same => n(repeat),Set(link=http://127.0.0.1/verphone/?revolver=${EXTEN})
same => n,Set(outline=${SHELL(curl ${link})})
Сформировали и выполнили повторное обращение к API-скрипту
same => n,GotoIf($[“${outline}”=””]?exit)
Если полученный результат эквивалентен пустой строке – завершаем обработку
same => n,Set(trunk=${CUT(outline,|,1)})
same => n,Set(cid=${CUT(outline,|,2)})
Иначе разделяем полученный результат и присваиваем его соответствующим переменным.
same => n,NoOp( -------- trunk: ${trunk} , cid: ${cid} -------- )
same => n,Set(CALLERID(all)=${cid})
same => n,Set(TRUNKOUTCID=${cid})
Устанавливаем отображаемый номер (CID) аналогичный городской телефонной линии (транку), через которую будет производиться вызов.
same => n,Set(CDR(userfield)=${idblank})
Записываем номер договора в дополнительное поле базы данных asteriskcdrdb.cdr.userfield
same => n,Dial(SIP/${trunk}/7${EXTEN:1},10/n)
В течении 10 секунд пытаемся осуществить вызов через полученный от API транк.
same => n,NoOp(${DIALSTATUS})
same => n,Gotoif($["${DIALSTATUS}"!="CHANUNAVAIL"]?exit)
Если вызов прошёл корректно, а транк был доступен – завершаем обработку
same => n,Wait(1)
same => n,Goto(repeat)
Иначе, через секунду ожидания, возвращаемся к обращению за получением данных от API. Это необходимо для получения следующего в очереди транка при недоступности текущего.
same => n(exit),Macro(hangupcall,)
exten => h,1,Hangup()
Весь этот контекст должен быть дописан в файл extensions_custom.conf, после чего в консоли CLI выполнить команду:
CLI > dialplan reload
- «Синее» направление
- Возвращает по запросу статус вызова. Требует передачу номеров телефона и договора.
- «Зелёное» направление
- Возвращает информацию о звонке во внутреннюю базу данных, в том числе и статус дозвона.
Так же нам для работы понадобится создать собственную таблицу и внести в неё список используемых транков, например как показано ниже:
На этом настройки со стороны АТС завершены в следующей части статьи мы рассмотрим API-скрипт, запросы для обращений к нему извне, а так же предоставим примеры «боевого» запуска.
Остались вопросы?
Я - Компаниец Никита, менеджер компании 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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.