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

При переводе звонка из очереди не подставляется callerid

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

Голый астериск 11.11, без web-интерфейса, рукописный dial-plan (какой-никакой)...
Проблема следующая (с примерами из CLI) - при переводе звонка из очереди на дисплее того, КОМУ переводят, вместо номера того, КТО переводит, отображается слово asterisk...

Входящий звонок попадает в очередь 4000

...
-- Executing [4@menu:1] Answer("SIP/430303-00000686", "") in new stack
-- Executing [4@menu:2] Queue("SIP/430303-00000686", "4000,tm") in new stack
...

Его принимает 111-й внутренний
И переводит его на 109-й внутренний... CallerID is "" " - пустой

-- Playing 'pbx-transfer.alaw' (language 'ru')
-- Executing [109@outcoling:1] Set("Local/109@outcoling-0000009c;2", "__CID=") in new stack
-- Executing [109@outcoling:2] NoOp("Local/109@outcoling-0000009c;2", "CallerID is "" ") in new stack
-- Executing [109@outcoling:3] Dial("Local/109@outcoling-0000009c;2", "SIP/109,,tT") in new stack

Если набрать на прямую внутренний и перевести, то картина следующая:
125-й принимает звонок от 112

...
-- SIP/125-000007f3 answered SIP/112-000007f2
...

И переводит его на 109-й

-- Playing 'pbx-transfer.alaw' (language 'ru')
-- Executing [109@outcoling:1] Set("Local/109@outcoling-000000bc;2", "__CID=125") in new stack
-- Executing [109@outcoling:2] NoOp("Local/109@outcoling-000000bc;2", "CallerID is "" ") in new stack
-- Executing [109@outcoling:3] Dial("Local/109@outcoling-000000bc;2", "SIP/109,,tT") in new stack

Все определяется!

Кусок плана для набора добавочного при переводе:
exten => _[1-2]XX,1,SET(__CID=${CALLERID(number)})
exten => _[1-2]XX,n,NoOp(CallerID is ${CALLERID(all)})
exten => _[1-2]XX,n,Dial(SIP/${EXTEN},,tT)

Кусок плана для очереди:
exten => 4,1,Answer()
exten => 4,n,Queue(4000,tm)

Как подставить callerid при переводе из очереди!?


Последний раз редактировалось: ne_vin_diesel (Пт Сен 12, 2014 06:11)
#2

1. В момент звонка посмотрите какие канальные переменные создаются, может одна из них вам поможет.
2. Можно попробовать на входящем канале определить custom переменную и подставлять в контекст трансфера.
#3

Согласен с предыдущим постом. Есть чудесная команда Dumpchan - увидите ВСЕ переменные в этот момент. У меня есть еще такое:

exten => _[1-9]XX,1,NoOp(Test for transfer: -${BLINDTRANSFER}-${TRANSFERERNAME}-)

ну а потом идет аналитика какая из переменных (какой метод перевода) установлена.

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

На одном из форумов нашел, применил, работает!

exten => _[1-2]XX,1,SET(__CID=${CALLERID(number)})
exten => _[1-2]XX,n,NoOp(CallerID is ${CALLERID(all)})

exten => _[1-2]XX,n,ExecIf($[ ${LEN(${BLINDTRANSFER})} > 0 ]?Set(TRANSFERUSER=${BLINDTRANSFER}) )
exten => _[1-2]XX,n,ExecIf($[ ${LEN(${TRANSFERERNAME})} > 0 ]?Set(TRANSFERUSER=${TRANSFERERNAME}) )
exten => _[1-2]XX,n,ExecIf($[ ${LEN(${TRANSFERUSER})} > 0 ]?Set(TRANSFERUSER=${CUT(TRANSFERUSER,-,1)}) )
exten => _[1-2]XX,n,ExecIf($[ ${LEN(${TRANSFERUSER})} > 0 ]?Set(TRANSFERUSER=${CUT(TRANSFERUSER,\/,2)}) )
exten => _[1-2]XX,n,ExecIf($[ "foo${TRANSFERUSER}" = "foo" ]?Set(__CID=${CALLERID(number)}) )
exten => _[1-2]XX,n,ExecIf($[ ${LEN(${TRANSFERUSER})} > 0 ]?Set(CALLERID(number)=${CID}-${TRANSFERUSER}) )
exten => _[1-2]XX,n,ExecIf($[ "foo${TRANSFERUSER}" != "foo" ]?Set(CALLERID(name)= from:${TRANSFERUSER}) )

exten => _[1-2]XX,n,Dial(SIP/${EXTEN},,tT)

Спасибо за помощь!