8(499)-709-97-83
Работаем с 8:00 до 19:00

FreePBX:Рандомная подстановка номеров при исходящих вызовах

  • 21 мая 2015

Бывают случаи, когда при исходящих вызовах требуется закрываться не одним номером, а произвольно подставлять номер из определенного диапазона (особенно актуально для коллекторов). В сегодняшней статье мы расскажем, как при исходящих вызовах рандомно (random) подставлять А-номер. В наличие у нас FreePBX с настроенным транком и пулом номеров: 4959999951,4959999952,4959999953,4959999954,4959999955.

Первым делом создадим исходящее правило. Переходим во вкладку Outbound Routes (Исходящие правила) и создадим обычное правило, например:

 

Сохраняем (Submit Changes) и применяем (Apply Config).

 

Теперь заходим в консоль и открываем файл

nano /etc/asterisk/extensions_additional.conf

Теперь нам нужно найти наше правило и соответствующий ему внутренний контекст FreePBX. В нашем случае ищем правило RandomOutbound. Находим примерно следующее:

include => outrt-2 ; RandomOutbound

В данном случае контекст для нашего правила (RandomOutbound) называется outrt-2. Найдем наш контекст outrt-2:

[outrt-2] ; RandomOutbound
include => outrt-2-custom
exten => _8XXXXXXXXXX,1,Macro(user-callerid,LIMIT,EXTERNAL,)
exten => _8XXXXXXXXXX/100,1,Macro(user-callerid,LIMIT,EXTERNAL,)
exten => _8XXXXXXXXXX/100,n,Gosub(sub-record-check,s,1(out,${EXTEN},dontcare))
exten => _8XXXXXXXXXX/100,n,ExecIf($[ "${CALLEE_ACCOUNCODE}" != "" ] ?Set(CDR(accountcode)=${CALLEE_ACCOUNCODE}))
exten => _8XXXXXXXXXX/100,n,Set(MOHCLASS=${IF($["${MOHCLASS}"=""]?default:${MOHCLASS})})
exten => _8XXXXXXXXXX/100,n,Set(_NODEST=)
exten => _8XXXXXXXXXX/100,n,Macro(dialout-trunk,2,${EXTEN},,off)
exten => _8XXXXXXXXXX/100,n,Macro(outisbusy,)

Открываем extensions_override_freepbx.conf

nano /etc/asterisk/extensions_override_freepbx.conf

И создадим новый контекст outrt-2 с исходящими правилами и подстановкой CID:

[outrt-2]
include => outrt-2
exten => _8XXXXXXXXXX,1,Noop
exten => _8XXXXXXXXXX,n,Gosub(pickCallerIDnum,cell${RAND(1,5)},1)
exten => _8XXXXXXXXXX,n,Dial(SIP/название транка оператора/${EXTEN},30)

[pickCallerIDnum]
exten => cell1,1,Set(CALLERID(num)= 84959999951) ;Указываем номера которыми должен закрываться вызов
same => n,Return
exten => cell2,1,Set(CALLERID(num)= 84959999952);Указываем номера которыми должен закрываться вызов
same => n,Return
exten => cell3,1,Set(CALLERID(num)= 84959999953);Указываем номера которыми должен закрываться вызов
same => n,Return
exten => cell4,1,Set(CALLERID(num)= 84959999954);Указываем номера которыми должен закрываться вызов
same => n,Return
exten => cell5,1,Set(CALLERID(num)= 84959999955);Указываем номера которыми должен закрываться вызов
same => n,Return

В консоли Asterisk делаем dialplan reload и все должно заработать.

 

Если в исходящих правилах вы ставили ограничение по определенным внутренними номерам или, например, запись вызова, то советуем полностью скопировать outrt 2 из extensions_additional.conf в extensions_override_freepbx.conf и добавить Gosub и [pickCallerIDnum] из предыдущего примера. Должно получиться примерно так:

nano /etc/asterisk/extensions_override_freepbx.conf

[outrt-2]
include => outrt-2
exten => _8XXXXXXXXXX/100,1,Macro(user-callerid,LIMIT,EXTERNAL,)
exten => _8XXXXXXXXXX/100,n,Gosub(sub-record-check,s,1(out,${EXTEN},yes))
exten => _8XXXXXXXXXX/100,n,Gosub(pickCallerIDnum,cell${RAND(1,5)},1)
exten => _8XXXXXXXXXX/100,n,ExecIf($[ "${CALLEE_ACCOUNCODE}" != "" ] ?Set(CDR(accountcode)=${CALLEE_ACCOUNCODE}))
exten => _8XXXXXXXXXX/100,n,Set(MOHCLASS=${IF($["${MOHCLASS}"=""]?default:${MOHCLASS})})
exten => _8XXXXXXXXXX/100,n,Set(_NODEST=)
exten => _8XXXXXXXXXX/100,n,Macro(dialout-trunk,2,${EXTEN},,off)
exten => _8XXXXXXXXXX/100,n,Macro(outisbusy,)


[pickCallerIDnum]
exten => cell1,1,Set(CALLERID(num)= 84959999951) ;Указываем номера которыми должен закрываться вызов
same => n,Return
exten => cell2,1,Set(CALLERID(num)= 84959999952);Указываем номера которыми должен закрываться вызов
same => n,Return
exten => cell3,1,Set(CALLERID(num)= 84959999953);Указываем номера которыми должен закрываться вызов
same => n,Return
exten => cell4,1,Set(CALLERID(num)= 84959999954);Указываем номера которыми должен закрываться вызов
same => n,Return
exten => cell5,1,Set(CALLERID(num)= 84959999955);Указываем номера которыми должен закрываться вызов
same => n,Return

На этом наша настройка завершена.

Если вы в статье нашли ошибки или несоответствия, мы будем благодарны, если вы напишите нам о них в комментариях.

 
Powered by SEO CMS ver.: 23.1 TOP 2 (opencartadmin.com)
 
Метки: Asterisk, FreePBX