Asterisk AMI делает вызов с помощью Action: Originate - PullRequest
0 голосов
/ 28 августа 2018

Я начал работать с Asterisk AMI. Люблю, много учился последние несколько дней.

Теперь я хочу сделать звонок с действием: Инициировать

сделали это следующим образом;

//Make an action
Action: Originate
Channel: SIP/1001
Context: phones
Exten: 1000
Priority: 1  
The call comes true, but as soon as I pick up the call is disconnected.
Is there a way to make a call between two extensions.

Код ошибки следующий:

    -- Executing [1000@phones:3] NoOp("SIP/1001-0000000f", "Second Line") in new stack
    -- Executing [1000@phones:4] Dial("SIP/1001-0000000f", "SIP//") in new stack
[Aug 28 15:23:17] WARNING[13897][C-0000000c]: chan_sip.c:6267 create_addr: Purely numeric hostname (), and not a peer--rejecting!
[Aug 28 15:23:17] WARNING[13897][C-0000000c]: app_dial.c:2525 dial_exec_full: Unable to create channel of type 'SIP' (cause 20 - Subscriber absent)
  == Everyone is busy/congested at this time (1:0/0/1)
    -- Executing [1000@phones:5] NoOp("SIP/1001-0000000f", "dialstatus=CHANUNAVAIL,causecode=20") in new stack
    -- Executing [1000@phones:6] Hangup("SIP/1001-0000000f", "") in new stack
  == Spawn extension (phones, 1000, 6) exited non-zero on 'SIP/1001-0000000f'

Как вы можете видеть в этой строке;

-- Executing [1000@phones:4] Dial("SIP/1001-0000000f", "SIP//") in new stack

Второй пользователь sip не установлен. Я бы сказал, что это проблема также, посмотрев на вывод AMI

Event: Hangup
Privilege: call,all
Channel: SIP/1001-00000010
ChannelState: 6
ChannelStateDesc: Up
CallerIDNum: <unknown>
CallerIDName: <unknown>
ConnectedLineNum: <unknown>
ConnectedLineName: <unknown>
Language: ja
AccountCode: 
Context: phones
Exten: 1000
Priority: 6
Uniqueid: 1535440117.29
Linkedid: 1535440117.29
Cause: 20
Cause-txt: Subscriber absent

Там написано, что подписчик отсутствует. Как я могу установить это с AMI?

Это вообще возможно? Спасибо.

[обновление]

extensions.conf

[phones]
exten =>  _XXXX,1,NoOp(First Line)
    same  => n,dumpchan()
    same  => n,NoOp(Second Line)
    same  => n,Dial(SIP/${CALLERID(dnid)}/${CALLERID(dnid)})
    same  => n,NoOp(dialstatus=${DIALSTATUS},causecode=${HANGUPCAUSE})
    same  => n,Hangup

sip.conf

[ACCOUNT-COMMON](!)
type=friend
nat=force_rport,comedia 
secret=123456
canreinvite=no
host=dynamic
dtmfmode=auto
callgroup=1
pickupgroup=1
videosupport=yes
qualify=yes
disallow=all
allow=all
;maxcallbitrate=1024   
context=phones


[1000](ACCOUNT-COMMON)
[1001](ACCOUNT-COMMON)
[1002](ACCOUNT-COMMON)
[1003](ACCOUNT-COMMON)
[1004](ACCOUNT-COMMON)
[1005](ACCOUNT-COMMON)
[1006](ACCOUNT-COMMON)
[1007](ACCOUNT-COMMON)
[1008](ACCOUNT-COMMON)
[1009](ACCOUNT-COMMON)
[1010](ACCOUNT-COMMON)
[1011](ACCOUNT-COMMON)
[1012](ACCOUNT-COMMON)
[1013](ACCOUNT-COMMON)
[1014](ACCOUNT-COMMON)
[1015](ACCOUNT-COMMON)
[1016](ACCOUNT-COMMON)
[1017](ACCOUNT-COMMON)
[1018](ACCOUNT-COMMON)
[1019](ACCOUNT-COMMON)
[1020](ACCOUNT-COMMON)

1 Ответ

0 голосов
/ 28 августа 2018

в контексте [phones] (extensions.conf) используйте $ {CALLERID (num)}, а не $ {CALLERID (dnid)}, например: то же самое => n, набрать (SIP / $ {CALLERID (num)})

не уверен в данный момент (не могу проверить), но если я правильно помню, всегдаauthreject = no в sip.conf будет игнорировать чисто числовые одноранговые узлы.

просто не идите в производство с этим :)

...