Помогите с написанием экстена.
Коротко: есть МТТ, на который идут звонки "на 8" набираемые пользователями TDE200.
выглядит это так:
[from-tde]
....
exten => _8X.,1,Goto(to_mtt,${EXTEN},1)
.....
далее необходимо, добавить в исходящем номере 7 т.к. АТС прилетает без нее, при звонках на российские номера в вызываемом номере заменить 8 на 7.
при звонках на МН, убрать 810.
реализовал так:
[to_mtt]
exten => _8X.,1,Set(CALLERID(num)=7${CALLERID(num)})
exten => _8X.,2,Dial(SIP/7${EXTEN:1}@mtt-out,60)
exten => _810X.,1,Set(CALLERID(num)=7${CALLERID(num)})
exten => _810X.,2,Dial(SIP/${EXTEN:3}@mtt-out,60)
exten => s,n,Hangup()
Правило работает как надо, но сдается мне это глючно т.к. 810 может подходить и на 8X.
Нет эстетики
Посоветуйте как лучше сделать?
_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
Последний раз редактировалось: Wapo (Ср Окт 02, 2013 10:20)
Набор номера по России должен производиться в тоновом режиме в формате E.164, например, 78005559000.
Для международных направлений - код страны + код города + номер абонента, 810 набирать не нужно.
8Х
89Х
810Х
и все ок, без эстетики
_XXXXXXX = 7812XXXXXXX
или
_8XXXXXXXXXX = 7XXXXXXXXXX
А вот все остальные .... у меня на прошлой работе фирму кинули на 1.5 мулика (слава богу на пол-года раньше оттуда ушел). Удачи
_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
Еще лучше!
Онли программирование! Онли хардкор! Что бы никто без разрешения!
| Код: |
| exten => _810.,1,Macro(check-and-call,810,${EXTEN:3}) same => n,Hangup() [macro-check-and-call] exten => s,1,NoOp( in !--> check-and-call) same => n,Set(dial_or_not=0) same => n,AGI(check_num_on_dial.sh,${ARG2}) same => n,GoToIf($[${dial_or_not}=1]?go_to_dial:sorry_go_out) same => n(go_to_dial), /*тут диал вообщем, у меня просто тут вызов еще одного макро, где адская смесь php-agi/bash-agi*/ same => n,NoOp( out n,MacroExit() same => n(sorry_go_out),Playback(feature-not-avail-line) same => n,MacroExit() |
check_num_on_dial.sh
| Код: |
| #!/bin/bash num_is=$1 len_num=${#num_is} i=2 while [ $i -le $len_num ] do tmp_num=${num_is:0:$i} grep -qx $tmp_num ./good_num.list dial_or_not=$? if [ "$dial_or_not" == "0" ] then echo "SET VARIABLE dial_or_not 1" break fi i=$(( $i + 1 )) done |
Хотя wapo прав, надо проверять количество цифр в номере...подумаю
С уважением.
_________________
Мы всегда можем уметь...