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

Не срабатывает команда System();

Добавлено: 23 ноя 2015, 12:18
steap
Здравствуйте.
Настроил отправку факса с предварительным дозвоном. Работает так:
Звоним и просим принять факс. Там соглашаются. Переводим звонок на номер 444 и с этого номера идёт отправка предварительно заготовленного файла fax.tif. Проблема в том, что хотелось бы после этого удалить файл и сообщить статус отправки. Но команды не срабатывают, если их поставить после SendFAX(). Если до (или закомментировать строчку отправки), то всё работает. В чём может быть причина?

Диалплан:

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

[fax-internal]
exten => 444,1,NoOp(-------------------Call from ${CALLERID(number)} to ${EXTEN}------------------)
 same => n,Set(FAXFILENAME=${EXTEN})
 same => n,Goto(fax-tx,send,1)

[fax-tx]
exten => send,1,NoOp(------------------- FAX from ${CALLERID(number)} ------------------)
 same => n,Set(DT=${TIMESTAMP}-${CALLERIDNUM}-${UNIQUEID})
 same => n,Set(FAXOPT(headerinfo)=Received by ${CALLERID(number)} ${STRFTIME(${EPOCH},,%Y-%m-%d %H-%M)})
 same => n,Set(FAXOPT(localstationid)=Name)
 same => n,Set(FAXOPT(maxrate)=14400)
 same => n,Set(FAXOPT(minrate)=9600)
 same => n,SendFAX(/fax/${FAXFILENAME}/fax.tif)
 same => n,System(/bin/echo -e 'Отправка факса\nСтатус:${FAXSTATUS}' | /usr/bin/sendxmpp -u robot -p pass -j 192.168.0.17:5222 admin@192.168.0.17)
 same => n,System(/bin/rm /fax/${FAXFILENAME}/fax.tif)
 same => n,HangUp
P.S. В логах по этому поводу ничего.

Re: Не срабатывает команда System();

Добавлено: 23 ноя 2015, 12:19
Glukinho
Потому что трубка кладется, канал умирает и дальнейшие команды не выполняются. Засуньте их в екстеншен h.

Re: Не срабатывает команда System();

Добавлено: 23 ноя 2015, 12:37
steap
Хм. Возможно. То есть HangUp() в конце бесполезен?
Я правильно понимаю, что нужно привести к следующему виду?

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

[fax-internal]
exten => 444,1,NoOp(-------------------Call from ${CALLERID(number)} to ${EXTEN}------------------)
same => n,Set(FAXFILENAME=${EXTEN})
same => n,Goto(fax-tx,send,1)

[fax-tx]
exten => send,1,NoOp(------------------- FAX from ${CALLERID(number)} ------------------)
same => n,Set(DT=${TIMESTAMP}-${CALLERIDNUM}-${UNIQUEID})
same => n,Set(FAXOPT(headerinfo)=Received by ${CALLERID(number)} ${STRFTIME(${EPOCH},,%Y-%m-%d %H-%M)})
same => n,Set(FAXOPT(localstationid)=Name)
same => n,Set(FAXOPT(maxrate)=14400)
same => n,Set(FAXOPT(minrate)=9600)
same => n,SendFAX(/fax/${FAXFILENAME}/fax.tif)
exten => h,1,System(/bin/echo -e 'Отправка факса\nСтатус:${FAXSTATUS}' | /usr/bin/sendxmpp -u robot -p pass -j 192.168.0.17:5222 admin@192.168.0.17)
same => n,System(/bin/rm /fax/${FAXFILENAME}/fax.tif)

Re: Не срабатывает команда System();

Добавлено: 23 ноя 2015, 13:37
Glukinho
Да.

Re: Не срабатывает команда System();

Добавлено: 23 ноя 2015, 13:40
ded
А в чём смысл перехода по Goto? Всё укладывается в один контекст (не напутали там с /fax/${FAXFILENAME}/fax.tif?)

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

[fax-internal]
exten => 444,1,NoOp(-------------------Call from ${CALLERID(number)} to ${EXTEN}------------------)
same => n,Set(FAXFILENAME=${EXTEN})
same => n,NoOp(------------------- FAX from ${CALLERID(number)} ------------------)
same => n,Set(DT=${TIMESTAMP}-${CALLERIDNUM}-${UNIQUEID})
same => n,Set(FAXOPT(headerinfo)=Received by ${CALLERID(number)} ${STRFTIME(${EPOCH},,%Y-%m-%d %H-%M)})
same => n,Set(FAXOPT(localstationid)=Name)
same => n,Set(FAXOPT(maxrate)=14400)
same => n,Set(FAXOPT(minrate)=9600)
same => n,SendFAX(/fax/${FAXFILENAME}/fax.tif)

Re: Не срабатывает команда System();

Добавлено: 24 ноя 2015, 05:42
steap
Glukinho писал(а):Да.
К сожалению не помогло. Так же System не срабатывают.
ded писал(а):А в чём смысл перехода по Goto? Всё укладывается в один контекст (не напутали там с /fax/${FAXFILENAME}/fax.tif?)
Там в последствии будет больше номеров. Так что GoTo нужен будет. С "/fax/${FAXFILENAME}/fax.tif" всё нормально. Факсы уходят. Проблема лишь с командами после отправки.

Re: Не срабатывает команда System();

Добавлено: 24 ноя 2015, 05:59
steap
В общем всем спасибо. Проблема решена:

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

[fax-internal]
exten => 444,1,NoOp(-------------------Call from ${CALLERID(number)} to ${EXTEN}------------------)
same => n,Set(FAXFILENAME=${EXTEN})
same => n,Goto(fax-tx,send,1)

[fax-tx]
exten => send,1,NoOp(------------------- FAX from ${CALLERID(number)} ------------------)
same => n,Set(DT=${TIMESTAMP}-${CALLERIDNUM}-${UNIQUEID})
same => n,Set(FAXOPT(headerinfo)=Received by ${CALLERID(number)} ${STRFTIME(${EPOCH},,%Y-%m-%d %H-%M)})
same => n,Set(FAXOPT(localstationid)=Name)
same => n,Set(FAXOPT(maxrate)=14400)
same => n,Set(FAXOPT(minrate)=9600)
same => n,SendFAX(/fax/${FAXFILENAME}/fax.tif)
same => n,Hangup
exten => h,1,System(/bin/echo -e 'Отправка факса\nСтатус:${FAXSTATUS}' | /usr/bin/sendxmpp -u robot -p pass -j 192.168.0.17:5222 admin@192.168.0.17)
same => n,System(/bin/rm /fax/${FAXFILENAME}/fax.tif)

Re: Не срабатывает команда System();

Добавлено: 24 ноя 2015, 12:17
ded
steap писал(а):Там в последствии будет больше номеров. Так что GoTo нужен будет.
Тогда грамотней было бы через макрос или Gosub

Re: Не срабатывает команда System();

Добавлено: 24 ноя 2015, 13:13
Obi Van
У меня после SendFax исполняется ещё куча команд, среди которой

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

exten => s,n,GotoIf($["${FAXSTATUS}" = "SUCCESS"]?:endsend)
. Всё для того, чтобы в веб-морде получить статус доставки. Вовсе не хэнгапится канал после отправки. 8-)

Re: Не срабатывает команда System();

Добавлено: 24 ноя 2015, 13:19
Wapo
Obi Van писал(а): Всё для того, чтобы в веб-морде получить статус доставки. Вовсе не хэнгапится канал после отправки. 8-)
Не совсем и не всегда: аппараты типа Panasonic еще держат канал после приема, а например Brothers бросает сразу даже не возвращая инфу.