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

Не получается разрулить звонок по CID

Asterisk IP PBX 5 сообщений -
#1

Не получается разрулить звонок по CID


Всем привет
Столкнулся с проблемой не получается разрулить звонок по CID

AMI запрос

Код:

Action: Originate
Channel: SIP/100
Exten: 74951234567
Context: from_web
Priority: 1
Callerid: "100"
Async: yes


Диалплан для обработки

Код:

[default]
exten => s,1,Verbose(1,${CONTEXT} - ${EXTEN} - all: ${CALLERID(all)} - num: ${CALLERID(num)} - name: ${CALLERID(name)})
same => n,DumpChan(0)

[from_web]
exten => _7[3-589]XXXXXXXXX/_10X,1,Set(TRUNK=trunk-1)
exten => _7[3-589]XXXXXXXXX/_20X,1,Set(TRUNK=trunk-2)
exten => _7[3-589]XXXXXXXXX,2,NoOp()
same => n,Dial(SIP/${TRUNK})


Т.к в контексте from_web не находит нужный exten перекидывает в контекст default
Код:

[Jan 19 23:13:13] == Starting SIP/100-00000030 at from_web,74951234567,1 failed so falling back to exten 's'
[Jan 19 23:13:13] == Starting SIP/100-00000030 at from_web,s,1 still failed so falling back to context 'default'
[Jan 19 23:13:13] -- Executing [s@default:1] Verbose("SIP/100-00000030", "1,default - s - all: "100" - num: 100 - name: 1000") in new stack
[Jan 19 23:13:13] default - s - all: "100" - num: 100 - name: 100
[Jan 19 23:13:13] -- Executing [s@default:2] DumpChan("SIP/100-00000030", "0") in new stack
[Jan 19 23:13:13]
Dumping Info For Channel: SIP/100-00000030:
================================================================================
Info:
Name= SIP/100-00000030
Type= SIP
UniqueID= 1421701991.48
LinkedID= 1421701991.48
CallerIDNum= 100
CallerIDName= 100
ConnectedLineIDNum= 100
ConnectedLineIDName=100
DNIDDigits= (N/A)
RDNIS= (N/A)
Parkinglot= default
Language= ru
State= Up (6)
Rings= 0
NativeFormat= 0x4 (ulaw)
WriteFormat= 0x4 (ulaw)
ReadFormat= 0x4 (ulaw)
RawWriteFormat= 0x4 (ulaw)
RawReadFormat= 0x4 (ulaw)
WriteTranscode= No
ReadTranscode= No
1stFileDescriptor= 25
Framesin= 4
Framesout= 0
TimetoHangup= 0
ElapsedTime= 0h0m2s
DirectBridge=
IndirectBridge=
Context= default
Extension= s
Priority= 2
CallGroup=
PickupGroup=
Application= DumpChan
Data= 0
Blocking_in= (Not Blocking)

Variables:
SIPCALLID=1adf90b11f9642c718e9d52c45e2c0f1@18.63.93.25:5060
================================================================================


Судя по DumpChan все нужные поля CallerID установлены, но по CID даже не пытается вызвать нужный exten.

Может кто знает как можно сделать правильно и красиво, мне пришлось городить логику из GotoIf

используется Asterisk 1.8

_________________
Jabber конференция
сервер: conference.jabber.ru
комната: asterisk


Последний раз редактировалось: koqep (Вт Янв 20, 2015 17:49)
#2

1) запятая у вас затесалась лишняя
2) ну сам Dial два раза должен быть.

Код:
[from_web]
exten => _7[3-589]XXXXXXXXX/_10X,1,Set(TRUNK=trunk-1)
same => n,Dial(SIP/${TRUNK})
exten => _7[3-589]XXXXXXXXX/_20X,1,Set(TRUNK=trunk-2)
same => n,Dial(SIP/${TRUNK})
#3

Да запятая была лишняя, поправил, не вижу смысла в двух Dial, если набрать номер в этом котексте все замечательно работает, а вот через AMI не хочет, не видит и все он этот экстеншен

А вот если вот так сделать, тогда будет замечательно работать, но буде выбираться trunk-other

Код:

[from_web]
exten => _7[3-589]XXXXXXXXX/_10X,1,Set(TRUNK=trunk-1)
exten => _7[3-589]XXXXXXXXX/_20X,1,Set(TRUNK=trunk-2)
exten => _7[3-589]XXXXXXXXX,1,Set(TRUNK=trunk-other) ;; _7[3-589]XXXXXXXXX,2,NoOp()
same => n,Dial(SIP/${TRUNK})

_________________
Jabber конференция
сервер: conference.jabber.ru
комната: asterisk
#4

Ну не знаю, у меня все работает:
Код:
CLI> core show version
Asterisk 1.8.23.1 built by root @ ...... on a i386 running FreeBSD on 2013-10-25 18:01:45 UTC

Код:
[from_web].
exten => _7[3-589]XXXXXXXXX/_10X,1,Set(TRUNK=trunk-1)
exten => _7[3-589]XXXXXXXXX/_20X,1,Set(TRUNK=trunk-2)
exten => _7[3-589]XXXXXXXXX,1,Set(TRUNK=trunk-other)
exten => _7[3-589]XXXXXXXXX,2,NoOp()
same => n,NoOp(${TRUNK})


Код:
ACTION: Originate
Channel: SIP/6003
Exten: 74951234567
Context: from_web
Priority: 1
Callerid: "100"


Код:
CLI>
-- Executing [74951234567@from_web:1] Set("SIP/6003-000014b3", "TRUNK=trunk-1") in new stack
-- Executing [74951234567@from_web:2] NoOp("SIP/6003-000014b3", "") in new stack
-- Executing [74951234567@from_web:3] NoOp("SIP/6003-000014b3", "trunk-1") in new stack


Код:
ACTION: Originate
Channel: SIP/6003
Exten: 74951234567
Context: from_web
Priority: 1
Callerid: "200"

Код:
CLI>
-- Executing [74951234567@from_web:1] Set("SIP/6003-000014b4", "TRUNK=trunk-2") in new stack
-- Executing [74951234567@from_web:2] NoOp("SIP/6003-000014b4", "") in new stack
-- Executing [74951234567@from_web:3] NoOp("SIP/6003-000014b4", "trunk-2") in new stack



а что у вас показывает ?
Код:
CLI> dialplan show 74951234567@from_web

Код:
CLI> dialplan show 74951234567@from_web
[ Context 'from_web' created by 'pbx_config' ]
'_7[3-589]XXXXXXXXX' (CID match '_10X') => 1. Set(TRUNK=trunk-1) [pbx_config]
'_7[3-589]XXXXXXXXX' (CID match '_20X') => 1. Set(TRUNK=trunk-2) [pbx_config]
'_7[3-589]XXXXXXXXX' => 1. Set(TRUNK=trunk-other) [pbx_config]
2. NoOp() [pbx_config]
3. NoOp(${TRUNK}) [pbx_config]
#5

Я, все-таки, настаиваю.

Цитата:
Be Careful with Pattern Matching
Icon
Please be aware that because of the way auto-fallthrough works, if Asterisk can't find the next priority number for the current extension or pattern match, it will also look for that same priority in a less specific pattern match. Consider the following example:
exten => 6410,1,SayDigits(987)
exten => _641X,1,SayDigits(12345)
exten => _641X,n,SayDigits(54321)
If you were to dial extension 6410, you'd hear "nine eight seven five four three two one".
We strongly recommend you make the Hangup() application be the last priority of any extension to avoid this problem, unless you purposely want to fall through to a less specific match.


Впрочем, дело ваше: https://wiki.asterisk.org/wiki/display/AST/Pattern+Matching#PatternMatching-MatchingonCallerID