Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

История изменений [назад]

нажмите, чтобы скрыть/показать версии 1
изначальная версия
редактировать

ответил 2014-09-24 10:34:25 +0400

nyll Gravatar nyll

Все гораздо проще. Данный контекст залазит в 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()

Все гораздо проще. Данный контекст залазит в 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()

Все гораздо проще. проще? если записывается 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()

Все гораздо проще? проще, если записывается 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()

Все гораздо проще, если записывается 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()

Все гораздо проще, если записывается 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()

Все гораздо проще, если записывается 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()

Все гораздо проще, если записывается 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.