Манипуляция CALLERID
Как бы мне все это завернуть :-\
Откуда: Astana
Сообщений: 48
|
Манипуляция CALLERID
Привет всем!!!
Есть небольшой вопросик.
Схемка: PSTN <--> АТС<-->Cisco 3725<-->Astersik
На АТС пул номеров(около 100) завернут на Циску, с Циски они направляются на Астериск.
На сколько я понял, пул номеров идет с перфиксом города (7172)и далее 6 циферок. Другими словами на Астериск приходит набранный номер 7172654321, я хочу внутри Астериска использовать только 6 цифр т.е 654321.
Я хочу контролировать called(куда) и calling(кто) номера. Например:
1) Если звонят на номера расположенные на Астериске то при входящем звонке вырезать префикс 7172, и далее пускать только 6 циферок.
2) Если человек набирает звонок по городу(т.е. без 8ки и префикса 7172) то добавлять этот префикс(7172) и изменять номер звонящего (добавляя 7172).
Из документации я узнал, что функция CALLERID(datatype[,optional-CID]) имеет несколько типов данных : all, name, num, ani, dnid, or rdnis.
Насколько я понял мне нужно использовать только эти: num, ani.
Но вот как мне загнать в строчку этот префикс на выходе с Астериска??? :-(
Вот небольшой пример конфига:
[from-cisco]
exten => _7172654XXX,1,Set(CALLERID(num)=${EXTEN:-6:6})
exten => _7172654XXX,2,Goto(local)
[local]
exten => 654180,1,Dial(SIP/andrey,20)
exten => 654180,2,Hangup()
[before-to-cisco]
exten => _XXXXXX,1,Set(CALLERID(num)=7172${EXTEN})<< вот здесь мне нужно както добавить префикс 7172
exten => _XXXXXX,2,Set(CALLERID(ani)=7172${EXTEN})
exten => _XXXXXX,3,Goto(to-cisco| 1)
[to-cisco]
exten => _XXXXXXXXXX,1,Dial(SIP/${EXTEN}@192.168.8.1,20)
exten => _8XXXXXXXXXX,1,Dial(SIP/${EXTEN:1}@192.168.8.1,20)
|
Откуда: Уфа
Сообщений: 5856
|
Re: Манипуляция CALLERID
ну в принципе все верно, но:
[from-cisco]
exten => _7172654XXX,1,Set(CALLERID(num)=${EXTEN:6})
exten => _7172654XXX,2,Goto(local)
[local]
exten => 654180,1,Dial(SIP/andrey,20)
exten => 654180,2,Hangup()
[before-to-cisco]
exten => _XXXXXX,1,Set(CALLERID(num)=7172${EXTEN})<< вот здесь мне нужно както добавить префикс 7172
;exten => _XXXXXX,2,Set(CALLERID(ani)=7172${EXTEN})
exten => _XXXXXX,2,Goto(to-cisco,7172${EXTEN},1)
[to-cisco]
exten => _XXXXXXXXXX,1,Dial(SIP/${EXTEN}@192.168.8.1,20)
exten => _8XXXXXXXXXX,1,Dial(SIP/${EXTEN:1}@192.168.8.1,20)
|
Откуда: Astana
Сообщений: 48
|
Re: Манипуляция CALLERID
switch: ну в принципе все верно, но:
[from-cisco]
exten => _7172654XXX,1,Set(CALLERID(num)=${EXTEN:6})
exten => _7172654XXX,2,Goto(local)
Здравствуйте switch, ОГРОМНОЕ СПАСИБО что ответили на мой вопросик, но меня немножко настораживает то что нужно использовать ${EXTEN:6} вместо ${EXTEN:-6:6} ведь мне нужны последние 6 цифр, об этих возможностях я узнал тут http://voip.rus.net/tiki-index.php?page=Asterisk+Variables, возможно я еще что то недопонимаю или не знаю :-(
|
Откуда: Уфа
Сообщений: 5856
|
Re: Манипуляция CALLERID
по синтаксису конструкция ${EXTEN:6} убирает первые 6 символов. в общем, выражения
${EXTEN:6}
и
${EXTEN:-6:6}
эквивалентны
|
Откуда: Astana
Сообщений: 48
|
Re: Манипуляция CALLERID
И еще вопросик, вот эту строчку Вы закоментировали, можно узнать почему?
switch: ;exten => _XXXXXX,2,Set(CALLERID(ani)=7172${EXTEN})
В этой строчке насколько я понимаю, я пытаюсь заменить номер звонящего с простого шестизначного номера на номер с префиксом города.
|
Сообщений: 1573
|
Re: Манипуляция CALLERID
switch: по синтаксису конструкция ${EXTEN:6} убирает первые 6 символов. в общем, выражения
${EXTEN:6}
и
${EXTEN:-6:6}
эквивалентны
Не совсем, потому что если использовать ${EXTEN:6} с номером 1234567890, то получиться - 7890.
А если - ${EXTEN:-6:6}, то - 567890
P.S. конструкция - ${EXTEN:-6:6} равнозначна ${EXTEN:-6}
|
Откуда: Astana
Сообщений: 48
|
Re: Манипуляция CALLERID
Результаты тестов:
1)
[before-to-cisco]
exten => _XXXXXX,1,Set(CALLERID(num)=7172${EXTEN})
;exten => _XXXXXX,2,Set(CALLERID(ani)=7172${EXTEN})
exten => _XXXXXX,2,Goto(to-cisco,7172${EXTEN},1)
При использовании конфига с закоментированной второй строчкой (где используется CALLERID(ani) )
АТС показывает что номер вызываемого абонента идентичен вызывающему. При этом я звоню с софтового телефона на аппаратный, но звонка не происходит.
2)
[before-to-cisco]
exten => _XXXXXX,1,Set(CALLERID(num)=7172${EXTEN})
exten => _XXXXXX,2,Set(CALLERID(ani)=7172${EXTEN})
exten => _XXXXXX,3,Goto(to-cisco,7172${EXTEN},1)
Когда я разкоментировал вторую строчку, то АТС показывает вызываемый номер, а номер звонящего отсутсвует. При этом тоже звонка не происходит.
Складывается впечатление что звонок проходит только в одном направлении, и сам софтовый телефон неотвечает, (как бы цепь незамыкается) :-(
|
Сообщений: 1573
|
Re: Манипуляция CALLERID
vanek82: АТС показывает что номер вызываемого абонента идентичен вызывающему.
Так вы сами его выставляете:
vanek82: exten => _XXXXXX,1,Set(CALLERID(num)=7172${EXTEN})
Если вы хотите добавить цифры 7172 к текущему 6-значному CALLERID, то должно быть так:
exten => _XXXXXX,1,Set(CALLERID(num)=7172${CALLERID(num)})
exten => _XXXXXX,2,Goto(to-cisco,7172${EXTEN},1)
Вообще, еще раз объясните, что вы хотите?
|
Откуда: Astana
Сообщений: 48
|
Re: Манипуляция CALLERID
cron333: vanek82: АТС показывает что номер вызываемого абонента идентичен вызывающему.
Так вы сами его выставляете:
vanek82: exten => _XXXXXX,1,Set(CALLERID(num)=7172${EXTEN})
Если вы хотите добавить цифры 7172 к текущему 6-значному CALLERID, то должно быть так:
exten => _XXXXXX,1,Set(CALLERID(num)=7172${CALLERID(num)})
exten => _XXXXXX,2,Goto(to-cisco,7172${EXTEN},1)
Вообще, еще раз объясните, что вы хотите?
Спасибо ОГРОМНОЕ, Вы расставили все точки над i. Именно это мне и нужно было.
|
|