[РЕШЕНО] AGI: write() returned error: Broken pipe
Добавлено: 13 май 2016, 14:04
asterisk v1.8.32.3
При выполнении сценария из dialplan'а спомощью AGI вижу сообщение об ошибке: write() returned error: Broken pipe
Вот запускаемый сценарий:
Попытку прочитать отклик (вроде бы) делаю...
Вот исполняемый при этом dialplan:
Как и тут, пробовал AGISIGHUP=no, AGISIGHUP=yes - не влияет.
Судя по всему, это из-за
Можно ли это исправить? Хотелось бы разобраться досконально.
При выполнении сценария из dialplan'а спомощью AGI вижу сообщение об ошибке: write() returned error: Broken pipe
Код: Выделить всё
== Using SIP RTP CoS mark 5
-- Executing [79012345678@phones:1] Set("SIP/025-00000026", "OP=xxxx:yyyy") in new stack
-- Executing [79012345678@phones:2] Set("SIP/025-00000026", "AGISIGHUP=no") in new stack
-- Executing [79012345678@phones:3] AGI("SIP/025-00000026", "mnp_chk-v2.sh,9012345678") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/mnp_chk-v2.sh
<SIP/025-00000026>AGI Tx >> agi_request: mnp_chk-v2.sh
<SIP/025-00000026>AGI Tx >> agi_channel: SIP/025-00000026
<SIP/025-00000026>AGI Tx >> agi_language: en
<SIP/025-00000026>AGI Tx >> agi_type: SIP
<SIP/025-00000026>AGI Tx >> agi_uniqueid: 1463100693.38
<SIP/025-00000026>AGI Tx >> agi_version: 1.8.32.3
<SIP/025-00000026>AGI Tx >> agi_callerid: 025
<SIP/025-00000026>AGI Tx >> agi_calleridname: 025
<SIP/025-00000026>AGI Tx >> agi_callingpres: 0
<SIP/025-00000026>AGI Tx >> agi_callingani2: 0
<SIP/025-00000026>AGI Tx >> agi_callington: 0
<SIP/025-00000026>AGI Tx >> agi_callingtns: 0
<SIP/025-00000026>AGI Tx >> agi_dnid: 79012345678
<SIP/025-00000026>AGI Tx >> agi_rdnis: unknown
<SIP/025-00000026>AGI Tx >> agi_context: phones
<SIP/025-00000026>AGI Tx >> agi_extension: 79012345678
<SIP/025-00000026>AGI Tx >> agi_priority: 3
<SIP/025-00000026>AGI Tx >> agi_enhanced: 0.0
<SIP/025-00000026>AGI Tx >> agi_accountcode:
<SIP/025-00000026>AGI Tx >> agi_threadid: 1989260592
<SIP/025-00000026>AGI Tx >> agi_arg_1: 9012345678
<SIP/025-00000026>AGI Tx >>
<SIP/025-00000026>AGI Rx << SET VARIABLE OP 4968
<SIP/025-00000026>AGI Tx >> 200 result=1
[May 13 00:51:35] ERROR[4971]: utils.c:1343 ast_carefulwrite: write() returned error: Broken pipe
-- <SIP/025-00000026>AGI Script mnp_chk-v2.sh completed, returning 0
-- Executing [79012345678@phones:4] NoOp("SIP/025-00000026", "4968") in new stack
-- Executing [79012345678@phones:5] GotoIf("SIP/025-00000026", "0?:not-a-megafon") in new stack
-- Goto (phones,79012345678,9)
-- Executing [79012345678@phones:9] NoOp("SIP/025-00000026", "79012345678 is someone else's subscriber, routing via Youmagic") in new stack
-- Executing [79012345678@phones:10] Dial("SIP/025-00000026", "SIP/+79012345678@youmagic,60,r") in new stack
== Using SIP RTP CoS mark 5
-- Called SIP/+79012345678@youmagic
== Spawn extension (phones, 79012345678, 10) exited non-zero on 'SIP/025-00000026'
OpenWrt*CLI>
Код: Выделить всё
root@OpenWrt:~# cat /var/lib/asterisk/agi-bin/mnp_chk-v2.sh
#!/bin/sh
while read VAR && [ -n ${VAR} ] ; do : ; done
read "GET VARIABLE OP"
USERAGENT='asterisk v1.8.32.3'
echo -n "SET VARIABLE OP $(wget -O - -q -T 5 -U "$USERAGENT" "http://rosreestr.и так далее...
read RESPONSE
Вот исполняемый при этом dialplan:
Код: Выделить всё
[out]
exten =>_79XXXXXXXXX,1,Set(OP=xxxx:yyyy)
same => n,AGI(mnp_chk-v2.sh,${EXTEN:1})
same => n,NoOp(${OP})
same => n,GotoIf($[${OP:-4:4}=2961]?:not-a-megafon)
same => n,NoOp(${EXTEN} is MegaFon's subscriber, routing via MultiFon)
same => n,Dial(SIP/${EXTEN}@multifon,30,r)
same => n,Hangup()
same => n(not-a-megafon),NoOp(${EXTEN} is someone else's subscriber, routing
; Note: Youmagic requires numbers prepended with "+"
same => n,Dial(SIP/+${EXTEN}@youmagic,60,r)
same => n,Hangup()
Судя по всему, это из-за
Код: Выделить всё
<SIP/025-00000026>AGI Rx << SET VARIABLE OP 4968
<SIP/025-00000026>AGI Tx >> 200 result=1