Asterisk 1.8
Ожидать регистрацию пира и произвести переход на конкретный экстеншен, в котором набираем SIP номер и произносим фразу "пир доступен".
Вполне возможнно я выбрал изначально не правильный путь, но хотел бы обойтись без AMI.
Я пытаюсь решить так:
По крону обрабатываю call файл., в котором:
Channel: Local/1@autocaller
MaxRetries: 2
RetryTime: 60
WaitTime: 30
Context: autocaller
Extension: s
Priority: 1
И далее в моей голове каша как это будет выполняться:
как я понял и по логу астериска .call выполняется следющим образом, выполняется экстеншен 1 приоритет 1 , ответ на звонок кагнал Local.
Далее выполняется exten => s,1,Set(AVAILS=${SIPPEER(998:status)}) и далее, производится звонок на SIP/405, но после поднятия трубки на SIP/405 файл не проигрывается в канал SIP
Пожалуйста подскажите как правильно решить мою проблему, я явно не понимаю работу с каналами и как работает конструкция выполнения call файла применительно к Local
[autocaller]
exten => 1,1,Answer
exten => 1,n,Wait(10)
exten => 1,n,Hangup
exten => s,1,Set(AVAILS=${SIPPEER(998:status)})
exten => s,n,Set(AVAILS=${AVAILS:0:2})
exten => s,n,GotoIf($["${AVAILS}" = "OK"]?goto_OK:goto_OFF)
exten => s,n(goto_OK),Dial(SIP/405,30)
exten => s,n,1,Set(CHANNEL(language)=ru)
exten => s,n,Playback(avail)
exten => s,n,Hangup
exten => s,n(goto_OFF),Set(CHANNEL(language)=ru)
exten => s,n,Playback(transfer_is_off)
exten => s,n,Hangup
-- Attempting call on Local/1@autocaller for s@autocaller:1 (Retry 1)
-- Executing [1@autocaller:1] Answer("Local/1@autocaller-4524;2", "") in new stack
-- Executing [s@autocaller:1] Set("Local/1@autocaller-4524;1", "AVAILS=OK (109 ms)") in new stack
-- Executing [s@autocaller:2] Set("Local/1@autocaller-4524;1", "AVAILS=OK") in new stack
-- Executing [s@autocaller:3] GotoIf("Local/1@autocaller-4524;1", "1?goto_OK:goto_OFF") in new stack
-- Goto (autocaller,s,4)
-- Executing [s@autocaller:4] Dial("Local/1@autocaller-4524;1", "SIP/405,30") in new stack
== Using SIP RTP CoS mark 5
-- Called SIP/405
-- SIP/405-00000568 is ringing
-- Executing [1@autocaller:2] Wait("Local/1@autocaller-4524;2", "10") in new stack
-- SIP/405-00000568 answered Local/1@autocaller-4524;1
-- Executing [1@autocaller:3] Hangup("Local/1@autocaller-4524;2", "") in new stack
== Spawn extension (autocaller, 1, 3) exited non-zero on 'Local/1@autocaller-4524;2'
== Spawn extension (autocaller, s, 4) exited non-zero on 'Local/1@autocaller-4524;1'
[2014-02-04 10:33:11] NOTICE[4460]: pbx_spool.c:366 attempt_thread: Call completed to Local/1@autocaller
Я понимаю, что сперва вызывается в channel, а вот что делать в channel не ясно, я наобум написал Answer и Wait, не представляя смысла.
А в extension должно быть все ОК, SIP/405 звонит, только после подьема трубы выполняется exten => 1,n,Wait(10) а не PlayBack.
Еще раз это посмотрите.
[autocaller]
exten => 1,1,Set(AVAILS=${SIPPEER(998:status)})
exten => 1,n,Set(AVAILS=${AVAILS:0:2})
exten => 1,n,GotoIf($["${AVAILS}" = "OK"]?goto_answer:goto_hangup)
exten => 1,n(goto_answer),Answer
exten => 1,n,Queue(infomessage)
exten => 1,n(goto_hangup),Hangup
exten => s,1,Set(CHANNT=${CHANNEL(channeltype)})
exten => s,n,GotoIf($["${CHANNT}" = "Local"]?goto_local:goto_sip)
exten => s,n(goto_local),Wait(1)
exten => s,n,Goto(s,1)
exten => s,n(goto_sip),Set(CHANNEL(language)=ru)
exten => s,n,Playback(abonent_dostupen_dlja_zvonka)
exten => s,n,Hangup