Страница 1 из 1

Продолжить выполнение диалплана когда звонящий повесит трубк

Добавлено: 17 авг 2019, 17:00
lamobot
Собственно задачка простая, чел звонит, не дождался ответа - повесил трубку, а манагеру прилетело письмо на почту. Отправку проверил - работает.

Схема: GSM-шлюз, 2е симки, каждая звонит на свой номер.

Код: Выделить всё

[holidays]
exten => 201,1,Answer()
exten => 201,n,Macro(recording,${CALLERID(num)},${EXTEN})
exten => 201,n,Dial(SIP/200&SIP/201&SIP/sipnet.ru/номер,1,tTm(manual))
exten => 201,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?:7)
exten => 201,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?:7)
exten => 201,n,Hangup
exten => XXX,n,Goto(send_mail,s,1)
exten => 200,1,Answer()
exten => 200,n,Playback(/music_for_ats/Welcome)
exten => 200,n,Playback(/music_for_ats/Razgovor_zapisan)
exten => 200,n,Macro(recording,${CALLERID(num)},${EXTEN})
exten => 200,n,Dial(SIP/200&SIP/201&SIP/sipnet.ru/номер,60,tTm(manual))
exten => 200,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?:7)
exten => 200,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?:7)
exten => 200,n,Hangup

[send_mail]
exten => s,1,System(rm /records/body.txt)
exten => s,n,System(echo "${CALLERID(num)}" "${DIALSTATUS}" "${VMSTATUS}" >> /records/body.txt)
exten => s,n,System(/records/send_mail.sh "${CALLERID(num)}" "${STRFTIME(${EPOCH},,%Y-%m-%d/%H:%M)}" "${DIALSTATUS}" "${VMSTATUS}")
exten => s,n,Hangup
Вот если выждать таймаут - все прекрасно отрабатывается, а вот если звонящий положил трубку - всё, конец, остановка выполнения сценария.

Re: Продолжить выполнение диалплана когда звонящий повесит т

Добавлено: 17 авг 2019, 22:43
Zavr2008

Код: Выделить всё

exten => h,1,Goto(send_mail,s,1)

Re: Продолжить выполнение диалплана когда звонящий повесит т

Добавлено: 18 авг 2019, 00:12
ded
Zavr2008 писал(а):exten => h,1,Goto(send_mail,s,1)
а строчку
exten => 200,n,Hangup
убрать.

Re: Продолжить выполнение диалплана когда звонящий повесит т

Добавлено: 18 авг 2019, 12:55
lamobot
Благодарю, Уважаемые работает.

П.С. Довольно странно, ранее я пытался использовать Н, но безрезультатно.

Re: Продолжить выполнение диалплана когда звонящий повесит т

Добавлено: 18 авг 2019, 22:19
lamobot
И снова непонятка, немного переработал для упрощения и снова не шлет письма.

Код: Выделить всё

[from]
exten => 201,1,Answer()
exten => 201,n,Macro(recording,${CALLERID(num)},${EXTEN})
exten => 201,n,Dial(SIP/201,60,tTm(manual))
exten => h,n,NoOp(Разговор завершен)
exten => h,n,Goto(check-dial-status,s,1)

[check-dial-status]
exten => s,1,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?true,false)
        same => n(true),Goto(send_mail,s,1)
        same => n(false),Hangup()
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER: Консоль

Код: Выделить всё

== Using SIP RTP CoS mark 5
    -- Executing [201@from-skp:1] Answer("SIP/9517531-0000009f", "") in new stack
    -- Executing [201@from-skp:2] Macro("SIP/9517531-0000009f", "recording,79009000000,201") in new stack
    -- Executing [s@macro-recording:1] Set("SIP/9517531-0000009f", "DIR_RECORDS=/home/calls/2019/2019-08/2019-08-19/") in new stack
    -- Executing [s@macro-recording:2] GotoIf("SIP/9517531-0000009f", "1?mp3") in new stack
    -- Goto (macro-recording,s,4)
    -- Executing [s@macro-recording:4] Set("SIP/9517531-0000009f", "fname=1566155289.159-2019-08-19-02_08-79009000000-201") in new stack
    -- Executing [s@macro-recording:5] Set("SIP/9517531-0000009f", "monopt=nice -n 19 /usr/bin/lame -b 32  --silent "/home/calls/2019/2019-08/2019-08-19/1566155289.159-2019-08-19-02_08-79009000000-201.wav"  "/home/calls/2019/2019-08/2019-08-19/1566155289.159-2019-08-19-02_08-79009000000-201.mp3" && rm -f "/home/calls/2019/2019-08/2019-08-19/1566155289.159-2019-08-19-02_08-79009000000-201.wav" && chmod o+r "/home/calls/2019/2019-08/2019-08-19/1566155289.159-2019-08-19-02_08-79009000000-201.mp3"") in new stack
    -- Executing [s@macro-recording:6] Set("SIP/9517531-0000009f", "CDR(filename)=1566155289.159-2019-08-19-02_08-79009000000-201.mp3") in new stack
    -- Executing [s@macro-recording:7] Set("SIP/9517531-0000009f", "CDR(realdst)=201") in new stack
    -- Executing [s@macro-recording:8] Set("SIP/9517531-0000009f", "CDR(remoteip)=192.168.0.30") in new stack
    -- Executing [s@macro-recording:9] MixMonitor("SIP/9517531-0000009f", "/home/calls/2019/2019-08/2019-08-19/1566155289.159-2019-08-19-02_08-79009000000-201.wav,b,nice -n 19 /usr/bin/lame -b 32  --silent "/home/calls/2019/2019-08/2019-08-19/1566155289.159-2019-08-19-02_08-79009000000-201.wav"  "/home/calls/2019/2019-08/2019-08-19/1566155289.159-2019-08-19-02_08-79009000000-201.mp3" && rm -f "/home/calls/2019/2019-08/2019-08-19/1566155289.159-2019-08-19-02_08-79009000000-201.wav" && chmod o+r "/home/calls/2019/2019-08/2019-08-19/1566155289.159-2019-08-19-02_08-79009000000-201.mp3"") in new stack
    -- Executing [s@macro-recording:10] Goto("SIP/9517531-0000009f", "no") in new stack
    -- Goto (macro-recording,s,17)
    -- Executing [s@macro-recording:17] Verbose("SIP/9517531-0000009f", "Exit record") in new stack
Exit record
    -- Executing [201@from-skp:3] Dial("SIP/9517531-0000009f", "SIP/201,60,tTm(manual)") in new stack
  == Using SIP RTP CoS mark 5
    -- Called SIP/201
    -- Started music on hold, class 'manual', on channel 'SIP/9517531-0000009f'
  == Begin MixMonitor Recording SIP/9517531-0000009f
    -- SIP/201-000000a0 is ringing
    -- Stopped music on hold on SIP/9517531-0000009f
  == Spawn extension (from-skp, 201, 3) exited non-zero on 'SIP/9517531-0000009f'
  == Executing [nice -n 19 /usr/bin/lame -b 32  --silent "/home/calls/2019/2019-08/2019-08-19/1566155289.159-2019-08-19-02_08-79009000000-201.wav"  "/home/calls/2019/2019-08/2019-08-19/1566155289.159-2019-08-19-02_08-79009000000-201.mp3" && rm -f "/home/calls/2019/2019-08/2019-08-19/1566155289.159-2019-08-19-02_08-79009000000-201.wav" && chmod o+r "/home/calls/2019/2019-08/2019-08-19/1566155289.159-2019-08-19-02_08-79009000000-201.mp3"]
  == End MixMonitor Recording SIP/9517531-0000009f
Изменять диалплан начал потому, что в предыдущем решении слались на мыло все номера, без разбора отвечен или нет.((
Что опять я не так делаю? :cry:

Re: Продолжить выполнение диалплана когда звонящий повесит т

Добавлено: 19 авг 2019, 10:03
zzuz
exten => h,1,NoOp(Разговор завершен)
exten => h,n,Goto(check-dial-status,s,1)