Уведомление на почту
Добавлено: 08 окт 2015, 18:02
Мужики, помогите, чердак поехал
Сделал сценарий под задачи: Уведомление о пропущенных вызовах.
[local]
exten => _X.,1,Dial(SIP/${EXTEN},10);
exten => _X.,2,System(echo Кто: ${CALLERID(number)} Кому: ${CDR(dst)} | /usr/sbin/sendmail -F "Пропущенный" мой@ящик);
exten => _X.,3,Hangup();
Сценарий отрабатывает на ура, приходит на почту все что мне нужно, НО как быть если вызывающий абонент решил завершить вызов, не дождавшись ответа? Сам завершил вызов в общем
Если сделать так:
[local]
exten => _X.,1,Dial(SIP/${EXTEN},10);
exten => _X.,2,Hangup();
exten => h,1,System(echo Кто: ${CALLERID(number)} Кому: ${CDR(dst)} | /usr/sbin/sendmail -F "Пропущенный" мой@ящик);
То работает конечно и опять проблема, когда один из абонентов завершает вызов при разговоре отрабатывает h,1,System....
А если сделать так:
[local]
exten => _X.,1,Dial(SIP/${EXTEN},10);
exten => _X.,2,Goto(sendemail,s,1);
exten => _X.,2,Hangup();
[sendemail]
exten => s,1,System(echo Кто: ${CALLERID(number)} Кому: ${CDR(dst)} | /usr/sbin/sendmail -F "Пропущенный" мой@ящик);
То на почту приходит уведомление с полем Кому как s т.е. перешли в другой контекст и ${CDR(dst)} отрабатывает уже как s, не показывает кому звонили.
Пытался копнуть в сторону HANGUPCAUSE со статусами, не получилось, может я не так делаю, плз хелп.
NoOp(${HANGUPCAUSE}) выводи код ошибки 0 если завершаю вызов не дождавшись ответа и код 16 если завершить уже при разговоре.
Пробовал сделать так:
exten => _X.,1,Dial(SIP/${EXTEN},10);
exten => _X.,2,GotoIf($["${HANGUPCAUSE}" = "0"]?:4);
exten => _X.,3,Hangup();
exten => _X.,4,System(echo Кто: ${CALLERID(number)} Кому: ${CDR(dst)} | /usr/sbin/sendmail -F "Пропущенный" мой@ящик);
HANGUPCAUSE вообще не реагирует, в консоле тишина
Что не так делаю?
Установлен Asterisk 11
Сделал сценарий под задачи: Уведомление о пропущенных вызовах.
[local]
exten => _X.,1,Dial(SIP/${EXTEN},10);
exten => _X.,2,System(echo Кто: ${CALLERID(number)} Кому: ${CDR(dst)} | /usr/sbin/sendmail -F "Пропущенный" мой@ящик);
exten => _X.,3,Hangup();
Сценарий отрабатывает на ура, приходит на почту все что мне нужно, НО как быть если вызывающий абонент решил завершить вызов, не дождавшись ответа? Сам завершил вызов в общем
Если сделать так:
[local]
exten => _X.,1,Dial(SIP/${EXTEN},10);
exten => _X.,2,Hangup();
exten => h,1,System(echo Кто: ${CALLERID(number)} Кому: ${CDR(dst)} | /usr/sbin/sendmail -F "Пропущенный" мой@ящик);
То работает конечно и опять проблема, когда один из абонентов завершает вызов при разговоре отрабатывает h,1,System....
А если сделать так:
[local]
exten => _X.,1,Dial(SIP/${EXTEN},10);
exten => _X.,2,Goto(sendemail,s,1);
exten => _X.,2,Hangup();
[sendemail]
exten => s,1,System(echo Кто: ${CALLERID(number)} Кому: ${CDR(dst)} | /usr/sbin/sendmail -F "Пропущенный" мой@ящик);
То на почту приходит уведомление с полем Кому как s т.е. перешли в другой контекст и ${CDR(dst)} отрабатывает уже как s, не показывает кому звонили.
Пытался копнуть в сторону HANGUPCAUSE со статусами, не получилось, может я не так делаю, плз хелп.
NoOp(${HANGUPCAUSE}) выводи код ошибки 0 если завершаю вызов не дождавшись ответа и код 16 если завершить уже при разговоре.
Пробовал сделать так:
exten => _X.,1,Dial(SIP/${EXTEN},10);
exten => _X.,2,GotoIf($["${HANGUPCAUSE}" = "0"]?:4);
exten => _X.,3,Hangup();
exten => _X.,4,System(echo Кто: ${CALLERID(number)} Кому: ${CDR(dst)} | /usr/sbin/sendmail -F "Пропущенный" мой@ящик);
HANGUPCAUSE вообще не реагирует, в консоле тишина
Что не так делаю?
Установлен Asterisk 11