artem
13.09.2013
18280

Определение региона звонящего

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

1. Настройка ODBC и астериска
2. Настройка CallerID Lookup Sources в астериске
3. Настройка CallerID Lookup Sources во FreePBX

4. Блокировка входящих по городу (региону)

1. Настройка ODBC и астериска


Для начала нам потребуется настроить и подключить ODBC как рассказывается в одной из наших статей  к бд asteriskcdrdb.

Далее, нам нужно в бд asteriskcdrdb добавить таблицу destinations в которой будет соответствие кода города и его названия. Готовую можно взять у нас тут (актуальность август 2013 по материалам Википедии без мобильных операторов). Если хочется более подробный список по Операторам, регионам и мобильным, воспользуйтесь ресурсом Россвязи.

После того как таблица импортирована, нам нужно создать функцию ODBC которая бы делала запрос в mysql и по какому либо номеру выдавала город звонящего. Для этого в /etc/asterisk/func_odbc.conf нужно добавить:

[CODE]
dsn=asterisk
readsql=select name from destinations where prefix in (substr(‘${CALLERID(num)}’,2,7),substr(‘${CALLERID(num)}’,2,6),substr(‘${CALLERID(num)}’,2,5),substr(‘${CALLERID(num)}’,2,4),substr(‘${CALLERID(num)}’,2,3)) order by length(prefix) DESC limit 1

В последней строке мы делаем  sql запрос и получаем по найденному префиксу соответствующий город (работать будет для формата номеров 8XXXXXXXXXX или 7XXXXXXXXXX)

Далее делаем core reload и проверяем что нужная нам функция появилась в астериске командой

core show function ODBC_CODE

 

2. Настройка CallerID Lookup Sources в астериске


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

exten => 84959898533,1,Set(CALLERID(name)=${ODBC_CODE()}) ;где 84959898533 ваш номер (DID)

контекст примерно выглядит так:

[from-world]
exten => 84959898533,1,Set(CALLERID(name)=${ODBC_CODE()})
exten => 84959898533,n,Dial(SIP/703)

В консоли при входящем звонке видим примерно такую картину

3. Настройка CallerID Lookup Sources через FreePBX


Если у вас FreePBX то для начала нужно создать во вкладке Admin —CallerID Lookup Sources источник из которого мы будем брать имя для входящего CallerID

Т.к. во FreePBX нет необходимого нам источника то после создания любого типа источника нужно будет переписать контекст который отвечает за функцию CID Lookup

Называем к примеру Russia и указываем тип MySQL, остальные данные указываем любые, собственно как и сам тип.

После того как источник создан, заходим в консоль астериска и смотрим контекст cidlookup командой:

dialplan show cidlookup

Теперь нам нужно изменить контекст cidlookup, для этого в файле /etc/asterisk/extensions_override_freepbx.conf воссоздаем контекст который мы только что смотрели в астериске и адаптируем его для работы с ODBC

[cidlookup]
exten => cidlookup_1,1,Set(CALLERID(name)=${ODBC_CODE()})
exten => cidlookup_1,n(return),Return()

Далее в консоли астериска выполняем команду для применения наших настроек:

dialplan reload

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

dialplan show cidlookup

Все, теперь смело в настройках входящей маршрутизации, на нужном маршруте выставляем наш источник Russia

Ждем входящий звонок со стационарного городского телефона и наблюдаем в астериске примерно следующее

4. Блокировка входящих по городу (региону)

Если возникает необходимость блокировки входящих вызовов по городу (например, в каком-то городе разместили объявление с вашим телефонным номером ошибочно), то можно модифицировать наш диалплан, как показано ниже:

exten => cidlookup_1,1,Set(CALLERID(name)=${ODBC_CODE()})
exten => cidlookup_1,n,GotoIf($[«${CALLERID(name)}»=»Кемеровская о.»]?bl-town,s,1) ; добавили эту строку
exten => cidlookup_1,n(return),Return()

Также необходимо описать контекст [bl-town], например вида:

[bl-town]
exten => 1,Progress()
same  => n,Playback(custom/credits,noanswer)
same  => n,Wait(3)
same  => n,Hangup

Если вдруг на телефоне у вас отображаются иероглифы, то в настройках телефона нужно выставить кодировку UTF-8

Подписаться
Уведомить о
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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.