artem
13.09.2013
11173

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

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

 
avatar
  Подписаться  
Уведомление о

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

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

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

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

ближайшие Вебинары

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices