1 | изначальная версия редактировать | |
Все гораздо проще. Данный контекст залазит в CDR и ищет, кто последний звонил этому абоненту, и перезванивает ему. Если этот абонент занят, либо не отвечает, то звонок идет дальше по контексту [from-trunk]
[from-trunk-gsmin]
exten => _X.,1,Set(CHANNEL(language)=ru)
exten => _X.,n,Set(CALLID=${CALLERID(num):-7})
exten => _X.,n,MYSQL(Connect connidcdr localhost root Fufnfrhbcnb asteriskcdrdb utf8)
exten => _X.,n,MYSQL(Query resultidcdr ${connidcdr} SELECT * FROM cdr WHERE dst LIKE '%${CALLID}%' ORDER BY calldate DESC)
exten => _X.,n,MYSQL(Fetch fetchid ${resultidcdr} calldate clid src dst)
exten => _X.,n,set(number=${src})
exten => _X.,n,NoOp(кто звонил --> ${clid} кому звонил --> ${dst}
exten => _X.,n,GOTOIF($["${dst}" = ""]?nodst:dst)
exten => _X.,n(dst),MYSQL(Clear ${resultidcdr})
exten => _X.,n,MYSQL(Disconnect ${connidcdr})
exten => _X.,n,dial(SIP/${number},20,tT)
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?nodst)
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?nodst)
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "FAILED"]?nodst)
exten => _X.,n(nodst),MYSQL(Clear ${resultidcdr})
exten => _X.,n,MYSQL(Disconnect ${connidcdr})
exten => _X.,n,goto(from-trunk,${DID},1)
exten => h,1,handup()
2 | No.2 Revision редактировать |
Все гораздо проще. Данный контекст залазит в CDR и ищет, кто последний звонил этому абоненту, абоненту (перезванивает в том числе при успешных вызовах), и перезванивает ему. Если этот абонент занят, либо не отвечает, то звонок идет дальше по контексту [from-trunk]
[from-trunk-gsmin]
exten => _X.,1,Set(CHANNEL(language)=ru)
exten => _X.,n,Set(CALLID=${CALLERID(num):-7})
exten => _X.,n,MYSQL(Connect connidcdr localhost root Fufnfrhbcnb asteriskcdrdb utf8)
; Для всех вызовов
exten => _X.,n,MYSQL(Query resultidcdr ${connidcdr} SELECT * FROM cdr WHERE dst LIKE '%${CALLID}%' ORDER BY calldate DESC)
; Для неотвеченных вызовов
; exten => _X.,n,MYSQL(Query resultidcdr ${connidcdr} SELECT * FROM cdr WHERE dst LIKE '%${CALLID}%' AND disposition LIKE 'NOANSWER' ORDER BY calldate DESC)
exten => _X.,n,MYSQL(Fetch fetchid ${resultidcdr} calldate clid src dst)
exten => _X.,n,set(number=${src})
exten => _X.,n,NoOp(кто звонил --> ${clid} кому звонил --> ${dst}
exten => _X.,n,GOTOIF($["${dst}" = ""]?nodst:dst)
exten => _X.,n(dst),MYSQL(Clear ${resultidcdr})
exten => _X.,n,MYSQL(Disconnect ${connidcdr})
exten => _X.,n,dial(SIP/${number},20,tT)
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?nodst)
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?nodst)
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "FAILED"]?nodst)
exten => _X.,n(nodst),MYSQL(Clear ${resultidcdr})
exten => _X.,n,MYSQL(Disconnect ${connidcdr})
exten => _X.,n,goto(from-trunk,${DID},1)
exten => h,1,handup()
3 | No.3 Revision редактировать |
Все гораздо проще. проще? если записывается CDR. Данный контекст залазит в CDR и ищет, кто последний звонил этому абоненту (перезванивает в том числе при успешных вызовах), и перезванивает ему. Если этот абонент занят, либо не отвечает, то звонок идет дальше по контексту [from-trunk]
[from-trunk-gsmin]
exten => _X.,1,Set(CHANNEL(language)=ru)
exten => _X.,n,Set(CALLID=${CALLERID(num):-7})
exten => _X.,n,MYSQL(Connect connidcdr localhost root Fufnfrhbcnb asteriskcdrdb utf8)
; Для всех вызовов
exten => _X.,n,MYSQL(Query resultidcdr ${connidcdr} SELECT * FROM cdr WHERE dst LIKE '%${CALLID}%' ORDER BY calldate DESC)
; Для неотвеченных вызовов
; exten => _X.,n,MYSQL(Query resultidcdr ${connidcdr} SELECT * FROM cdr WHERE dst LIKE '%${CALLID}%' AND disposition LIKE 'NOANSWER' ORDER BY calldate DESC)
exten => _X.,n,MYSQL(Fetch fetchid ${resultidcdr} calldate clid src dst)
exten => _X.,n,set(number=${src})
exten => _X.,n,NoOp(кто звонил --> ${clid} кому звонил --> ${dst}
exten => _X.,n,GOTOIF($["${dst}" = ""]?nodst:dst)
exten => _X.,n(dst),MYSQL(Clear ${resultidcdr})
exten => _X.,n,MYSQL(Disconnect ${connidcdr})
exten => _X.,n,dial(SIP/${number},20,tT)
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?nodst)
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?nodst)
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "FAILED"]?nodst)
exten => _X.,n(nodst),MYSQL(Clear ${resultidcdr})
exten => _X.,n,MYSQL(Disconnect ${connidcdr})
exten => _X.,n,goto(from-trunk,${DID},1)
exten => h,1,handup()
4 | No.4 Revision редактировать |
Все гораздо проще? проще, если записывается CDR. Данный контекст залазит в CDR и ищет, кто последний звонил этому абоненту (перезванивает в том числе при успешных вызовах), и перезванивает ему. Если этот абонент занят, либо не отвечает, то звонок идет дальше по контексту [from-trunk]
[from-trunk-gsmin]
exten => _X.,1,Set(CHANNEL(language)=ru)
exten => _X.,n,Set(CALLID=${CALLERID(num):-7})
exten => _X.,n,MYSQL(Connect connidcdr localhost root Fufnfrhbcnb asteriskcdrdb utf8)
; Для всех вызовов
exten => _X.,n,MYSQL(Query resultidcdr ${connidcdr} SELECT * FROM cdr WHERE dst LIKE '%${CALLID}%' ORDER BY calldate DESC)
; Для неотвеченных вызовов
; exten => _X.,n,MYSQL(Query resultidcdr ${connidcdr} SELECT * FROM cdr WHERE dst LIKE '%${CALLID}%' AND disposition LIKE 'NOANSWER' ORDER BY calldate DESC)
exten => _X.,n,MYSQL(Fetch fetchid ${resultidcdr} calldate clid src dst)
exten => _X.,n,set(number=${src})
exten => _X.,n,NoOp(кто звонил --> ${clid} кому звонил --> ${dst}
exten => _X.,n,GOTOIF($["${dst}" = ""]?nodst:dst)
exten => _X.,n(dst),MYSQL(Clear ${resultidcdr})
exten => _X.,n,MYSQL(Disconnect ${connidcdr})
exten => _X.,n,dial(SIP/${number},20,tT)
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?nodst)
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?nodst)
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "FAILED"]?nodst)
exten => _X.,n(nodst),MYSQL(Clear ${resultidcdr})
exten => _X.,n,MYSQL(Disconnect ${connidcdr})
exten => _X.,n,goto(from-trunk,${DID},1)
exten => h,1,handup()
5 | No.5 Revision редактировать |
Все гораздо проще, если записывается CDR. Данный контекст залазит в CDR и ищет, кто последний звонил этому абоненту (перезванивает в том числе (привел 2 примера, при успешных вызовах), всех вызовах, и при неотвеченных), и перезванивает ему. Если этот абонент занят, либо не отвечает, то звонок идет дальше по контексту [from-trunk]
[from-trunk-gsmin]
exten => _X.,1,Set(CHANNEL(language)=ru)
exten => _X.,n,Set(CALLID=${CALLERID(num):-7})
exten => _X.,n,MYSQL(Connect connidcdr localhost root Fufnfrhbcnb asteriskcdrdb utf8)
; Для всех вызовов
exten => _X.,n,MYSQL(Query resultidcdr ${connidcdr} SELECT * FROM cdr WHERE dst LIKE '%${CALLID}%' ORDER BY calldate DESC)
; Для неотвеченных вызовов
; exten => _X.,n,MYSQL(Query resultidcdr ${connidcdr} SELECT * FROM cdr WHERE dst LIKE '%${CALLID}%' AND disposition LIKE 'NOANSWER' ORDER BY calldate DESC)
exten => _X.,n,MYSQL(Fetch fetchid ${resultidcdr} calldate clid src dst)
exten => _X.,n,set(number=${src})
exten => _X.,n,NoOp(кто звонил --> ${clid} кому звонил --> ${dst}
exten => _X.,n,GOTOIF($["${dst}" = ""]?nodst:dst)
exten => _X.,n(dst),MYSQL(Clear ${resultidcdr})
exten => _X.,n,MYSQL(Disconnect ${connidcdr})
exten => _X.,n,dial(SIP/${number},20,tT)
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?nodst)
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?nodst)
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "FAILED"]?nodst)
exten => _X.,n(nodst),MYSQL(Clear ${resultidcdr})
exten => _X.,n,MYSQL(Disconnect ${connidcdr})
exten => _X.,n,goto(from-trunk,${DID},1)
exten => h,1,handup()
6 | No.6 Revision редактировать |
Все гораздо проще, если записывается CDR. Данный контекст залазит в CDR и ищет, кто последний звонил этому абоненту (привел 2 примера, при всех вызовах, и при неотвеченных), и перезванивает ему. Если этот абонент занят, либо не отвечает, то звонок идет дальше по контексту [from-trunk]
[from-trunk-gsmin]
exten => _X.,1,Set(CHANNEL(language)=ru)
exten => _X.,n,Set(CALLID=${CALLERID(num):-7})
exten => _X.,n,MYSQL(Connect connidcdr localhost root Fufnfrhbcnb asteriskcdrdb utf8)
; Для всех вызовов
exten => _X.,n,MYSQL(Query resultidcdr ${connidcdr} SELECT * FROM cdr WHERE dst LIKE '%${CALLID}%' ORDER BY calldate DESC)
; Для неотвеченных вызовов
; exten => _X.,n,MYSQL(Query resultidcdr ${connidcdr} SELECT * FROM cdr WHERE dst LIKE '%${CALLID}%' AND disposition LIKE 'NOANSWER' ORDER BY calldate DESC)
exten => _X.,n,MYSQL(Fetch fetchid ${resultidcdr} calldate clid src dst)
exten => _X.,n,set(number=${src})
exten => _X.,n,NoOp(кто звонил --> ${clid} кому звонил --> ${dst}
${dst})
exten => _X.,n,GOTOIF($["${dst}" = ""]?nodst:dst)
exten => _X.,n(dst),MYSQL(Clear ${resultidcdr})
exten => _X.,n,MYSQL(Disconnect ${connidcdr})
exten => _X.,n,dial(SIP/${number},20,tT)
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?nodst)
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?nodst)
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "FAILED"]?nodst)
exten => _X.,n(nodst),MYSQL(Clear ${resultidcdr})
exten => _X.,n,MYSQL(Disconnect ${connidcdr})
exten => _X.,n,goto(from-trunk,${DID},1)
exten => h,1,handup()
7 | No.7 Revision редактировать |
Все гораздо проще, если записывается CDR. Данный контекст залазит в CDR и ищет, кто последний звонил этому абоненту (привел 2 примера, при всех вызовах, и при неотвеченных), и перезванивает ему. Если этот абонент занят, либо не отвечает, то звонок идет дальше по контексту [from-trunk]
[from-trunk-gsmin]
exten => _X.,1,Set(CHANNEL(language)=ru)
exten => _X.,n,Set(CALLID=${CALLERID(num):-7})
exten => _X.,n,MYSQL(Connect connidcdr localhost root Fufnfrhbcnb asteriskcdrdb utf8)
; Для всех вызовов
exten => _X.,n,MYSQL(Query resultidcdr ${connidcdr} SELECT * FROM cdr WHERE dst LIKE '%${CALLID}%' ORDER BY calldate DESC)
; Для неотвеченных вызовов
; exten => _X.,n,MYSQL(Query resultidcdr ${connidcdr} SELECT * FROM cdr WHERE dst LIKE '%${CALLID}%' AND disposition LIKE 'NOANSWER' 'NO ANSWER' ORDER BY calldate DESC)
exten => _X.,n,MYSQL(Fetch fetchid ${resultidcdr} calldate clid src dst)
exten => _X.,n,set(number=${src})
exten => _X.,n,NoOp(кто звонил --> ${clid} кому звонил --> ${dst})
exten => _X.,n,GOTOIF($["${dst}" = ""]?nodst:dst)
exten => _X.,n(dst),MYSQL(Clear ${resultidcdr})
exten => _X.,n,MYSQL(Disconnect ${connidcdr})
exten => _X.,n,dial(SIP/${number},20,tT)
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?nodst)
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?nodst)
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "FAILED"]?nodst)
exten => _X.,n(nodst),MYSQL(Clear ${resultidcdr})
exten => _X.,n,MYSQL(Disconnect ${connidcdr})
exten => _X.,n,goto(from-trunk,${DID},1)
exten => h,1,handup()
8 | No.8 Revision редактировать |
Все гораздо проще, если записывается CDR. Данный контекст залазит в CDR и ищет, кто последний звонил этому абоненту (привел 2 примера, при всех вызовах, и при неотвеченных), и перезванивает ему. Если этот абонент занят, либо не отвечает, то звонок идет дальше по контексту [from-trunk]
[from-trunk-gsmin]
exten => _X.,1,Set(CHANNEL(language)=ru)
exten => _X.,n,Set(CALLID=${CALLERID(num):-7})
exten => _X.,n,MYSQL(Connect connidcdr localhost root Fufnfrhbcnb pass asteriskcdrdb utf8)
; Для всех вызовов
exten => _X.,n,MYSQL(Query resultidcdr ${connidcdr} SELECT * FROM cdr WHERE dst LIKE '%${CALLID}%' ORDER BY calldate DESC)
; Для неотвеченных вызовов
; exten => _X.,n,MYSQL(Query resultidcdr ${connidcdr} SELECT * FROM cdr WHERE dst LIKE '%${CALLID}%' AND disposition LIKE 'NO ANSWER' ORDER BY calldate DESC)
exten => _X.,n,MYSQL(Fetch fetchid ${resultidcdr} calldate clid src dst)
exten => _X.,n,set(number=${src})
exten => _X.,n,NoOp(кто звонил --> ${clid} кому звонил --> ${dst})
exten => _X.,n,GOTOIF($["${dst}" = ""]?nodst:dst)
exten => _X.,n(dst),MYSQL(Clear ${resultidcdr})
exten => _X.,n,MYSQL(Disconnect ${connidcdr})
exten => _X.,n,dial(SIP/${number},20,tT)
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?nodst)
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?nodst)
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "FAILED"]?nodst)
exten => _X.,n(nodst),MYSQL(Clear ${resultidcdr})
exten => _X.,n,MYSQL(Disconnect ${connidcdr})
exten => _X.,n,goto(from-trunk,${DID},1)
exten => h,1,handup()
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.