AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

помогите с extensions.conf

Newbies/FAQ Forum 6 сообщений -
#1

Добрый времени суток.

Помогите с написанием экстена.

Коротко: есть МТТ, на который идут звонки "на 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.
Нет эстетики Smile

Посоветуйте как лучше сделать?
#2

Сек. 810 = международка. Зачем его превращаете из 810555555555 в 55555555? Ну и вместо X. конкретизируйте кол-во цифр номера
_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.


Последний раз редактировалось: Wapo (Ср Окт 02, 2013 10:20)
#3

условие МТТ:

Набор номера по России должен производиться в тоновом режиме в формате E.164, например, 78005559000.
Для международных направлений - код страны + код города + номер абонента, 810 набирать не нужно.
#4

У меня три правила


89Х
810Х

и все ок, без эстетики
#5

Предпочитаю другое

_XXXXXXX = 7812XXXXXXX
или

_8XXXXXXXXXX = 7XXXXXXXXXX

А вот все остальные .... у меня на прошлой работе фирму кинули на 1.5 мулика (слава богу на пол-года раньше оттуда ушел). Удачи Smile

_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
#6

Поработаю некромантом!
Еще лучше!

Онли программирование! Онли хардкор! Что бы никто без разрешения!

Код:

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 прав, надо проверять количество цифр в номере...подумаю
С уважением.

_________________
Мы всегда можем уметь...