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

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

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

спросил 2015-09-22 11:14:16 +0400

_jin Gravatar _jin flag of Ukraine

Предупреждение о записи разговора для исходящих звонков Elastix

Добрый день. Настроил Elastix (в основном через веб-интерфейс). Разговоры некоторых экстеншенов пишутся, но предупреждение о том, что "разговор будет записан" в веб интерфейсе можно выставить только для входящих звонков. Что делать для исходящих? Я так понимаю, нужно делать custom контекст (в extension-custom.conf) с описанием исходящего звонка и добавлением команд exten => s,n,Answer exten => s,n,Wait(2) exten => s,n,Playback(custom/mynotification) Но я не пойму куда именно нужно вставлять данные команды, чтобы всё работало. Прикрепил часть моего extension-additional.conf, по логике нужно вставлять данные команды где-то здесь. Если подскажете куда, то я уже сам смогу добавить в extension-custom всё, что нужно, чтобы не перезаписывался основной файл после изменений в веб-интерфейсе.

Предупреждение о записи разговора для исходящих звонков Elastix

Добрый день. Настроил Elastix (в основном через веб-интерфейс). Разговоры некоторых экстеншенов пишутся, но предупреждение о том, что "разговор будет записан" в веб интерфейсе можно выставить только для входящих звонков. Что делать для исходящих? Я так понимаю, нужно делать custom контекст (в extension-custom.conf) с описанием исходящего звонка и добавлением команд exten => s,n,Answer s,n,Answer

exten => s,n,Wait(2) s,n,Wait(2)

exten => s,n,Playback(custom/mynotification) s,n,Playback(custom/mynotification)

Но я не пойму куда именно нужно вставлять данные команды, чтобы всё работало. Прикрепил часть моего extension-additional.conf, по логике нужно вставлять данные команды где-то здесь. Если подскажете куда, то я уже сам смогу добавить в extension-custom всё, что нужно, чтобы не перезаписывался основной файл после изменений в веб-интерфейсе.

Предупреждение о записи разговора для исходящих звонков Elastix

Добрый день. Настроил Elastix (в основном через веб-интерфейс). Разговоры некоторых экстеншенов пишутся, но предупреждение о том, что "разговор будет записан" в веб интерфейсе можно выставить только для входящих звонков. Что делать для исходящих? Я так понимаю, нужно делать custom контекст (в extension-custom.conf) с описанием исходящего звонка и добавлением команд exten => s,n,Answer

exten => s,n,Wait(2)

exten => s,n,Playback(custom/mynotification)

Но я не пойму куда именно нужно вставлять данные команды, чтобы всё работало. Прикрепил часть моего extension-additional.conf, по логике нужно вставлять данные команды где-то здесь. Если подскажете куда, то я уже сам смогу добавить в extension-custom всё, что нужно, чтобы не перезаписывался основной файл после изменений в веб-интерфейсе.

[outrt-2] ; 243DinstarKSout

include => outrt-2-custom exten => _09[678]XXXXXXX,1,Macro(user-callerid,LIMIT,EXTERNAL,)

exten => 09[678]XXXXXXX/10[12356],1,Macro(user-callerid,LIMIT,EXTERNAL,) exten => 09[678]XXXXXXX/10[12356],n,Set(MOHCLASS=${IF($["${MOHCLASS}"=""]?default:${MOHCLASS})}) exten => 09[678]XXXXXXX/10[12356],n,Set(NODEST=) exten => _09[678]XXXXXXX/10[12356],n,Gosub(sub-record-check,s,1(out,${EXTEN},)) exten => 09[678]XXXXXXX/10[12356],n,Macro(dialout-trunk,21,11${EXTEN},,off) exten => 09[678]XXXXXXX/10[12356],n,Macro(dialout-trunk,22,11${EXTEN},,off) exten => 09[678]XXXXXXX/10[12356],n,Macro(dialout-trunk,23,11${EXTEN},,off) exten => 09[678]XXXXXXX/10[12356],n,Macro(outisbusy,)

;--== end of [outrt-2] ==--;

[macro-user-callerid]

include => macro-user-callerid-custom

exten => s,1,Set(TOUCH_MONITOR=${UNIQUEID})

exten => s,n,Set(AMPUSER=${IF($["${AMPUSER}" = ""]?${CALLERID(number)}:${AMPUSER})})

exten => s,n,GotoIf($["${CUT(CHANNEL,@,2):5:5}"="queue" | ${LEN(${AMPUSERCIDNAME})}]?report)

exten => s,n,ExecIf($["${REALCALLERIDNUM:1:2}" = ""]?Set(REALCALLERIDNUM=${CALLERID(number)}))

exten => s,n,Set(AMPUSER=${DB(DEVICE/${REALCALLERIDNUM}/user)})

exten => s,n,GotoIf($["${AMPUSER}" = "none"]?limit)

exten => s,n,Set(AMPUSERCIDNAME=${DB(AMPUSER/${AMPUSER}/cidname)})

exten => s,n,GotoIf($["${AMPUSERCIDNAME:1:2}" = ""]?report)

exten => s,n,Set(AMPUSERCID=${IF($["${ARG2}" != "EXTERNAL" & "${DBEXISTS(AMPUSER/${AMPUSER}/cidnum)}" = "1"]?${DBRESULT}:${AMPUSER})})

exten => s,n,Set(_DIALOPTIONS=${IF($["${DBEXISTS(AMPUSER/${AMPUSER}/dialopts)}" = "1"]?${DBRESULT}:${DIAL_OPTIONS})})

exten => s,n,Set(CALLERID(all)="${AMPUSERCIDNAME}" <${AMPUSERCID}>)

exten => s,n,GotoIf($["${ARG1}"="LIMIT" & ${LEN(${AMPUSER})} & "${DB(AMPUSER/${AMPUSER}/concurrencylimit)}">"0" & "${GROUPCOUNT(${AMPUSER}@concurrencylimit)}">="${DB(AMPUSER/${AMPUSER}/concurrencylimit)}"]?limit)

exten => s,n,ExecIf($["${ARG1}"="LIMIT" & ${LEN(${AMPUSER})}]?Set(GROUP(concurrency_limit)=${AMPUSER}))

exten => s,n,ExecIf($["${DB(AMPUSER/${AMPUSER}/language)}" != ""]?Set(CHANNEL(language)=${DB(AMPUSER/${AMPUSER}/language)}))

exten => s,n(report),GotoIf($[ "${ARG1}" = "SKIPTTL" | "${ARG1}" = "LIMIT" ]?continue)

exten => s,n(report2),Set(__TTL=${IF($["foo${TTL}" = "foo"]?64:$[ ${TTL} - 1 ])})

exten => s,n,GotoIf($[ ${TTL} > 0 ]?continue)

exten => s,n,Wait(${RINGTIMER})

exten => s,n,Answer

exten => s,n,Wait(1)

exten => s,n,Playback(im-sorry&an-error-has-occured&with&call-forwarding)

exten => s,n,Macro(hangupcall,)

exten => s,n(limit),Answer

exten => s,n,Wait(1)

exten => s,n,Playback(beep&im-sorry&your&simul-call-limit-reached&goodbye)

exten => s,n,Macro(hangupcall,)

exten => s,n,Congestion(20)

exten => s,n(continue),Set(CALLERID(number)=${CALLERID(number):0:40})

exten => s,n,Set(CALLERID(name)=${CALLERID(name):0:40})

exten => s,n,Set(CDR(cnum)=${CALLERID(num)})

exten => s,n,Set(CDR(cnam)=${CALLERID(name)})

exten => s,n,Set(CHANNEL(language)=${MASTER_CHANNEL(CHANNEL(language))})

exten => h,1,Macro(hangupcall,)

;--== end of [macro-user-callerid] ==--;

[macro-dialout-trunk]

include => macro-dialout-trunk-custom

exten => s,1,Set(DIAL_TRUNK=${ARG1})

exten => s,n,GosubIf($[$["${ARG3}" != ""] & $["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"]]?sub-pincheck,s,1())

exten => s,n,GotoIf($["x${OUTDISABLE${DIALTRUNK}}" = "xon"]?disabletrunk,1)

exten => s,n,Set(DIAL_NUMBER=${ARG2})

exten => s,n,Set(DIALTRUNKOPTIONS=${DIAL_OPTIONS})

exten => s,n,Set(OUTBOUNDGROUP=OUT${DIAL_TRUNK})

exten => s,n,GotoIf($["${OUTMAXCHANS${DIALTRUNK}}foo" = "foo"]?nomax)

exten => s,n,GotoIf($[ ${GROUPCOUNT(OUT${DIALTRUNK})} >= ${OUTMAXCHANS${DIAL_TRUNK}} ]?chanfull)

exten => s,n(nomax),GotoIf($["${INTRACOMPANYROUTE}" = "YES"]?skipoutcid)

exten => s,n,Set(DIALTRUNKOPTIONS=${IF($["${DBEXISTS(TRUNK/${DIALTRUNK}/dialopts)}" = "1"]?${DBRESULT}:${TRUNKOPTIONS})})

exten => s,n,Macro(outbound-callerid,${DIAL_TRUNK})

exten => s,n(skipoutcid),GosubIf($["${PREFIXTRUNK${DIALTRUNK}}" != ""]?sub-flp-${DIALTRUNK},s,1())

exten => s,n,Set(OUTNUM=${OUTPREFIX${DIALTRUNK}}${DIAL_NUMBER})

exten => s,n,Set(custom=${CUT(OUT${DIALTRUNK},:,1)})

exten => s,n,ExecIf($["${MOHCLASS}"!="default" & "${MOHCLASS}"!="" & "${FORCECONFIRM}"="" ]?Set(DIALTRUNKOPTIONS=M(setmusic^${MOHCLASS})${DIALTRUNK_OPTIONS}))

exten => s,n,ExecIf($["${FORCECONFIRM}"!="" ]?Set(DIALTRUNKOPTIONS=${DIALTRUNK_OPTIONS}M(confirm)))

exten => s,n(gocall),Macro(dialout-trunk-predial-hook,)

exten => s,n,GotoIf($["${PREDIALHOOKRET}" = "BYPASS"]?bypass,1)

exten => s,n,ExecIf($["${DB(AMPUSER/${AMPUSER}/cidname)}" != ""]?Set(CONNECTEDLINE(num,i)=${DIAL_NUMBER}))

exten => s,n,ExecIf($["${DB(AMPUSER/${AMPUSER}/cidname)}" != ""]?Set(CONNECTEDLINE(name,i)=CID:${CALLERID(number)}))

exten => s,n,GotoIf($["${custom}" = "AMP"]?customtrunk)

exten => s,n,Dial(${OUT${DIALTRUNK}}/${OUTNUM},${TRUNKRINGTIMER},${DIALTRUNKOPTIONS})

exten => s,n,Noop(Dial failed for some reason with DIALSTATUS = ${DIALSTATUS} and HANGUPCAUSE = ${HANGUPCAUSE})

exten => s,n,GotoIf($["${ARG4}" = "on"]?continue,1:s-${DIALSTATUS},1)

exten => s,n(customtrunk),Set(prenum=${CUT(OUT${DIAL_TRUNK},$,1)})

exten => s,n,Set(thenum=${CUT(OUT${DIAL_TRUNK},$,2)})

exten => s,n,Set(postnum=${CUT(OUT${DIAL_TRUNK},$,3)})

exten => s,n,GotoIf($["${the_num}" = "OUTNUM"]?outnum:skipoutnum)

exten => s,n(outnum),Set(the_num=${OUTNUM})

exten => s,n(skipoutnum),Dial(${prenum:4}${thenum}${postnum},${TRUNKRINGTIMER},${DIALTRUNK_OPTIONS})

exten => s,n,Noop(Dial failed for some reason with DIALSTATUS = ${DIALSTATUS} and HANGUPCAUSE = ${HANGUPCAUSE})

exten => s,n,GotoIf($["${ARG4}" = "on"]?continue,1:s-${DIALSTATUS},1)

exten => s,n(chanfull),Noop(max channels used up)

exten => s-BUSY,1,Noop(Dial failed due to trunk reporting BUSY - giving up)

exten => s-BUSY,n,Playtones(busy)

exten => s-BUSY,n,Busy(20)

exten => s-ANSWER,1,Noop(Call successfully answered - Hanging up now)

exten => s-ANSWER,n,Macro(hangupcall,)

exten => s-NOANSWER,1,Noop(Dial failed due to trunk reporting NOANSWER - giving up)

exten => s-NOANSWER,n,Progress

exten => s-NOANSWER,n,Playback(number-not-answering,noanswer)

exten => s-NOANSWER,n,Congestion(20)

exten => s-INVALIDNMBR,1,Noop(Dial failed due to trunk reporting Address Incomplete - giving up)

exten => s-INVALIDNMBR,n,Progress

exten => s-INVALIDNMBR,n,Playback(ss-noservice,noanswer)

exten => s-INVALIDNMBR,n,Busy(20)

exten => s-CHANGED,1,Noop(Dial failed due to trunk reporting Number Changed - giving up)

exten => s-CHANGED,n,Playtones(busy)

exten => s-CHANGED,n,Busy(20)

exten => _s-.,1,Set(RC=${IF($[${ISNULL(${HANGUPCAUSE})}]?0:${HANGUPCAUSE})})

exten => _s-.,n,Goto(${RC},1)

exten => 17,1,Goto(s-BUSY,1)

exten => 18,1,Goto(s-NOANSWER,1)

exten => 22,1,Goto(s-CHANGED,1)

exten => 23,1,Goto(s-CHANGED,1)

exten => 28,1,Goto(s-INVALIDNMBR,1)

exten => _X,1,Goto(continue,1)

exten => _X.,1,Goto(continue,1)

exten => continue,1(noreport),Noop(TRUNK Dial failed due to ${DIALSTATUS} HANGUPCAUSE: ${HANGUPCAUSE} - failing through to other trunks)

exten => continue,n,Set(CALLERID(number)=${AMPUSER})

exten => disabletrunk,1,Noop(TRUNK: ${OUT${DIALTRUNK}} DISABLED - falling through to next trunk)

exten => bypass,1,Noop(TRUNK: ${OUT${DIALTRUNK}} BYPASSING because dialout-trunk-predial-hook)

exten => h,1,Macro(hangupcall,)

;--== end of [macro-dialout-trunk] ==--;

Предупреждение о записи разговора для исходящих звонков Elastix

Добрый день. Настроил Elastix (в основном через веб-интерфейс). Разговоры некоторых экстеншенов пишутся, но предупреждение о том, что "разговор будет записан" в веб интерфейсе можно выставить только для входящих звонков. Что делать для исходящих? Я так понимаю, нужно делать custom контекст (в extension-custom.conf) с описанием исходящего звонка и добавлением команд exten => s,n,Answer

exten => s,n,Wait(2)

exten => s,n,Playback(custom/mynotification)

Но я не пойму куда именно нужно вставлять данные команды, чтобы всё работало. Прикрепил часть моего extension-additional.conf, по логике нужно вставлять данные команды где-то здесь. Если подскажете куда, то я уже сам смогу добавить в extension-custom всё, что нужно, чтобы не перезаписывался основной файл после изменений в веб-интерфейсе.

[outrt-2] ; 243DinstarKSout

include => outrt-2-custom exten => _09[678]XXXXXXX,1,Macro(user-callerid,LIMIT,EXTERNAL,)

exten => 09[678]XXXXXXX/10[12356],1,Macro(user-callerid,LIMIT,EXTERNAL,) exten => 09[678]XXXXXXX/10[12356],n,Set(MOHCLASS=${IF($["${MOHCLASS}"=""]?default:${MOHCLASS})}) exten => 09[678]XXXXXXX/10[12356],n,Set(NODEST=) exten => _09[678]XXXXXXX/10[12356],n,Gosub(sub-record-check,s,1(out,${EXTEN},)) exten => 09[678]XXXXXXX/10[12356],n,Macro(dialout-trunk,21,11${EXTEN},,off) exten => 09[678]XXXXXXX/10[12356],n,Macro(dialout-trunk,22,11${EXTEN},,off) exten => 09[678]XXXXXXX/10[12356],n,Macro(dialout-trunk,23,11${EXTEN},,off) exten => 09[678]XXXXXXX/10[12356],n,Macro(outisbusy,)

;--== end of [outrt-2] ==--;

[macro-user-callerid]

include => macro-user-callerid-custom

exten => s,1,Set(TOUCH_MONITOR=${UNIQUEID})

exten => s,n,Set(AMPUSER=${IF($["${AMPUSER}" = ""]?${CALLERID(number)}:${AMPUSER})})

exten => s,n,GotoIf($["${CUT(CHANNEL,@,2):5:5}"="queue" | ${LEN(${AMPUSERCIDNAME})}]?report)

exten => s,n,ExecIf($["${REALCALLERIDNUM:1:2}" = ""]?Set(REALCALLERIDNUM=${CALLERID(number)}))

exten => s,n,Set(AMPUSER=${DB(DEVICE/${REALCALLERIDNUM}/user)})

exten => s,n,GotoIf($["${AMPUSER}" = "none"]?limit)

exten => s,n,Set(AMPUSERCIDNAME=${DB(AMPUSER/${AMPUSER}/cidname)})

exten => s,n,GotoIf($["${AMPUSERCIDNAME:1:2}" = ""]?report)

exten => s,n,Set(AMPUSERCID=${IF($["${ARG2}" != "EXTERNAL" & "${DBEXISTS(AMPUSER/${AMPUSER}/cidnum)}" = "1"]?${DBRESULT}:${AMPUSER})})

exten => s,n,Set(_DIALOPTIONS=${IF($["${DBEXISTS(AMPUSER/${AMPUSER}/dialopts)}" = "1"]?${DBRESULT}:${DIAL_OPTIONS})})

exten => s,n,Set(CALLERID(all)="${AMPUSERCIDNAME}" <${AMPUSERCID}>)

exten => s,n,GotoIf($["${ARG1}"="LIMIT" & ${LEN(${AMPUSER})} & "${DB(AMPUSER/${AMPUSER}/concurrencylimit)}">"0" & "${GROUPCOUNT(${AMPUSER}@concurrencylimit)}">="${DB(AMPUSER/${AMPUSER}/concurrencylimit)}"]?limit)

exten => s,n,ExecIf($["${ARG1}"="LIMIT" & ${LEN(${AMPUSER})}]?Set(GROUP(concurrency_limit)=${AMPUSER}))

exten => s,n,ExecIf($["${DB(AMPUSER/${AMPUSER}/language)}" != ""]?Set(CHANNEL(language)=${DB(AMPUSER/${AMPUSER}/language)}))

exten => s,n(report),GotoIf($[ "${ARG1}" = "SKIPTTL" | "${ARG1}" = "LIMIT" ]?continue)

exten => s,n(report2),Set(__TTL=${IF($["foo${TTL}" = "foo"]?64:$[ ${TTL} - 1 ])})

exten => s,n,GotoIf($[ ${TTL} > 0 ]?continue)

exten => s,n,Wait(${RINGTIMER})

exten => s,n,Answer

exten => s,n,Wait(1)

exten => s,n,Playback(im-sorry&an-error-has-occured&with&call-forwarding)

exten => s,n,Macro(hangupcall,)

exten => s,n(limit),Answer

exten => s,n,Wait(1)

exten => s,n,Playback(beep&im-sorry&your&simul-call-limit-reached&goodbye)

exten => s,n,Macro(hangupcall,)

exten => s,n,Congestion(20)

exten => s,n(continue),Set(CALLERID(number)=${CALLERID(number):0:40})

exten => s,n,Set(CALLERID(name)=${CALLERID(name):0:40})

exten => s,n,Set(CDR(cnum)=${CALLERID(num)})

exten => s,n,Set(CDR(cnam)=${CALLERID(name)})

exten => s,n,Set(CHANNEL(language)=${MASTER_CHANNEL(CHANNEL(language))})

exten => h,1,Macro(hangupcall,)

;--== end of [macro-user-callerid] ==--;

[macro-dialout-trunk]

include => macro-dialout-trunk-custom

exten => s,1,Set(DIAL_TRUNK=${ARG1})

exten => s,n,GosubIf($[$["${ARG3}" != ""] & $["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"]]?sub-pincheck,s,1())

exten => s,n,GotoIf($["x${OUTDISABLE${DIALTRUNK}}" = "xon"]?disabletrunk,1)

exten => s,n,Set(DIAL_NUMBER=${ARG2})

exten => s,n,Set(DIALTRUNKOPTIONS=${DIAL_OPTIONS})

exten => s,n,Set(OUTBOUNDGROUP=OUT${DIAL_TRUNK})

exten => s,n,GotoIf($["${OUTMAXCHANS${DIALTRUNK}}foo" = "foo"]?nomax)

exten => s,n,GotoIf($[ ${GROUPCOUNT(OUT${DIALTRUNK})} >= ${OUTMAXCHANS${DIAL_TRUNK}} ]?chanfull)

exten => s,n(nomax),GotoIf($["${INTRACOMPANYROUTE}" = "YES"]?skipoutcid)

exten => s,n,Set(DIALTRUNKOPTIONS=${IF($["${DBEXISTS(TRUNK/${DIALTRUNK}/dialopts)}" = "1"]?${DBRESULT}:${TRUNKOPTIONS})})

exten => s,n,Macro(outbound-callerid,${DIAL_TRUNK})

exten => s,n(skipoutcid),GosubIf($["${PREFIXTRUNK${DIALTRUNK}}" != ""]?sub-flp-${DIALTRUNK},s,1())

exten => s,n,Set(OUTNUM=${OUTPREFIX${DIALTRUNK}}${DIAL_NUMBER})

exten => s,n,Set(custom=${CUT(OUT${DIALTRUNK},:,1)})

exten => s,n,ExecIf($["${MOHCLASS}"!="default" & "${MOHCLASS}"!="" & "${FORCECONFIRM}"="" ]?Set(DIALTRUNKOPTIONS=M(setmusic^${MOHCLASS})${DIALTRUNK_OPTIONS}))

exten => s,n,ExecIf($["${FORCECONFIRM}"!="" ]?Set(DIALTRUNKOPTIONS=${DIALTRUNK_OPTIONS}M(confirm)))

exten => s,n(gocall),Macro(dialout-trunk-predial-hook,)

exten => s,n,GotoIf($["${PREDIALHOOKRET}" = "BYPASS"]?bypass,1)

exten => s,n,ExecIf($["${DB(AMPUSER/${AMPUSER}/cidname)}" != ""]?Set(CONNECTEDLINE(num,i)=${DIAL_NUMBER}))

exten => s,n,ExecIf($["${DB(AMPUSER/${AMPUSER}/cidname)}" != ""]?Set(CONNECTEDLINE(name,i)=CID:${CALLERID(number)}))

exten => s,n,GotoIf($["${custom}" = "AMP"]?customtrunk)

exten => s,n,Dial(${OUT${DIALTRUNK}}/${OUTNUM},${TRUNKRINGTIMER},${DIALTRUNKOPTIONS})

exten => s,n,Noop(Dial failed for some reason with DIALSTATUS = ${DIALSTATUS} and HANGUPCAUSE = ${HANGUPCAUSE})

exten => s,n,GotoIf($["${ARG4}" = "on"]?continue,1:s-${DIALSTATUS},1)

exten => s,n(customtrunk),Set(prenum=${CUT(OUT${DIAL_TRUNK},$,1)})

exten => s,n,Set(thenum=${CUT(OUT${DIAL_TRUNK},$,2)})

exten => s,n,Set(postnum=${CUT(OUT${DIAL_TRUNK},$,3)})

exten => s,n,GotoIf($["${the_num}" = "OUTNUM"]?outnum:skipoutnum)

exten => s,n(outnum),Set(the_num=${OUTNUM})

exten => s,n(skipoutnum),Dial(${prenum:4}${thenum}${postnum},${TRUNKRINGTIMER},${DIALTRUNK_OPTIONS})

exten => s,n,Noop(Dial failed for some reason with DIALSTATUS = ${DIALSTATUS} and HANGUPCAUSE = ${HANGUPCAUSE})

exten => s,n,GotoIf($["${ARG4}" = "on"]?continue,1:s-${DIALSTATUS},1)

exten => s,n(chanfull),Noop(max channels used up)

exten => s-BUSY,1,Noop(Dial failed due to trunk reporting BUSY - giving up)

exten => s-BUSY,n,Playtones(busy)

exten => s-BUSY,n,Busy(20)

exten => s-ANSWER,1,Noop(Call successfully answered - Hanging up now)

exten => s-ANSWER,n,Macro(hangupcall,)

exten => s-NOANSWER,1,Noop(Dial failed due to trunk reporting NOANSWER - giving up)

exten => s-NOANSWER,n,Progress

exten => s-NOANSWER,n,Playback(number-not-answering,noanswer)

exten => s-NOANSWER,n,Congestion(20)

exten => s-INVALIDNMBR,1,Noop(Dial failed due to trunk reporting Address Incomplete - giving up)

exten => s-INVALIDNMBR,n,Progress

exten => s-INVALIDNMBR,n,Playback(ss-noservice,noanswer)

exten => s-INVALIDNMBR,n,Busy(20)

exten => s-CHANGED,1,Noop(Dial failed due to trunk reporting Number Changed - giving up)

exten => s-CHANGED,n,Playtones(busy)

exten => s-CHANGED,n,Busy(20)

exten => _s-.,1,Set(RC=${IF($[${ISNULL(${HANGUPCAUSE})}]?0:${HANGUPCAUSE})})

exten => _s-.,n,Goto(${RC},1)

exten => 17,1,Goto(s-BUSY,1)

exten => 18,1,Goto(s-NOANSWER,1)

exten => 22,1,Goto(s-CHANGED,1)

exten => 23,1,Goto(s-CHANGED,1)

exten => 28,1,Goto(s-INVALIDNMBR,1)

exten => _X,1,Goto(continue,1)

exten => _X.,1,Goto(continue,1)

exten => continue,1(noreport),Noop(TRUNK Dial failed due to ${DIALSTATUS} HANGUPCAUSE: ${HANGUPCAUSE} - failing through to other trunks)

exten => continue,n,Set(CALLERID(number)=${AMPUSER})

exten => disabletrunk,1,Noop(TRUNK: ${OUT${DIALTRUNK}} DISABLED - falling through to next trunk)

exten => bypass,1,Noop(TRUNK: ${OUT${DIALTRUNK}} BYPASSING because dialout-trunk-predial-hook)

exten => h,1,Macro(hangupcall,)

;--== end of [macro-dialout-trunk] ==--;

Предупреждение о записи разговора для исходящих звонков Elastix

Добрый день. Настроил Elastix (в основном через веб-интерфейс). Разговоры некоторых экстеншенов пишутся, но предупреждение о том, что "разговор будет записан" в веб интерфейсе можно выставить только для входящих звонков. Что делать для исходящих? Я так понимаю, нужно делать custom контекст (в extension-custom.conf) с описанием исходящего звонка и добавлением команд exten => s,n,Answerкоманд

exten => s,n,Wait(2)

exten => s,n,Playback(custom/mynotification)

exten => s,n,Answer
exten => s,n,Wait(2)
exten => s,n,Playback(custom/mynotification)

Но я не пойму куда именно нужно вставлять данные команды, чтобы всё работало. Прикрепил часть моего extension-additional.conf, по логике нужно вставлять данные команды где-то здесь. Если подскажете куда, то я уже сам смогу добавить в extension-custom всё, что нужно, чтобы не перезаписывался основной файл после изменений в веб-интерфейсе.

[outrt-2] ; 243DinstarKSout
include => outrt-2-custom
exten => _09[678]XXXXXXX,1,Macro(user-callerid,LIMIT,EXTERNAL,)

exten => _09[678]XXXXXXX/_10[12356],1,Macro(user-callerid,LIMIT,EXTERNAL,)
exten => _09[678]XXXXXXX/_10[12356],n,Set(MOHCLASS=${IF($["${MOHCLASS}"=""]?default:${MOHCLASS})})
exten => _09[678]XXXXXXX/_10[12356],n,Set(_NODEST=)
exten => _09[678]XXXXXXX/_10[12356],n,Gosub(sub-record-check,s,1(out,${EXTEN},))
exten => _09[678]XXXXXXX/_10[12356],n,Macro(dialout-trunk,21,11${EXTEN},,off)
exten => _09[678]XXXXXXX/_10[12356],n,Macro(dialout-trunk,22,11${EXTEN},,off)
exten => _09[678]XXXXXXX/_10[12356],n,Macro(dialout-trunk,23,11${EXTEN},,off)
exten => _09[678]XXXXXXX/_10[12356],n,Macro(outisbusy,)

;--== end of [outrt-2] ==--;

[macro-user-callerid]
include => macro-user-callerid-custom
exten => s,1,Set(TOUCH_MONITOR=${UNIQUEID})
exten => s,n,Set(AMPUSER=${IF($["${AMPUSER}" = ""]?${CALLERID(number)}:${AMPUSER})})
exten => s,n,GotoIf($["${CUT(CHANNEL,@,2):5:5}"="queue" | ${LEN(${AMPUSERCIDNAME})}]?report)
exten => s,n,ExecIf($["${REALCALLERIDNUM:1:2}" = ""]?Set(REALCALLERIDNUM=${CALLERID(number)}))
exten => s,n,Set(AMPUSER=${DB(DEVICE/${REALCALLERIDNUM}/user)})
exten => s,n,GotoIf($["${AMPUSER}" = "none"]?limit)
exten => s,n,Set(AMPUSERCIDNAME=${DB(AMPUSER/${AMPUSER}/cidname)})
exten => s,n,GotoIf($["${AMPUSERCIDNAME:1:2}" = ""]?report)
exten => s,n,Set(AMPUSERCID=${IF($["${ARG2}" != "EXTERNAL" & "${DB_EXISTS(AMPUSER/${AMPUSER}/cidnum)}" = "1"]?${DB_RESULT}:${AMPUSER})})
exten => s,n,Set(__DIAL_OPTIONS=${IF($["${DB_EXISTS(AMPUSER/${AMPUSER}/dialopts)}" = "1"]?${DB_RESULT}:${DIAL_OPTIONS})})
exten => s,n,Set(CALLERID(all)="${AMPUSERCIDNAME}" <${AMPUSERCID}>)
exten => s,n,GotoIf($["${ARG1}"="LIMIT" & ${LEN(${AMPUSER})} & "${DB(AMPUSER/${AMPUSER}/concurrency_limit)}">"0" & "${GROUP_COUNT(${AMPUSER}@concurrency_limit)}">="${DB(AMPUSER/${AMPUSER}/concurrency_limit)}"]?limit)
exten => s,n,ExecIf($["${ARG1}"="LIMIT" & ${LEN(${AMPUSER})}]?Set(GROUP(concurrency_limit)=${AMPUSER}))
exten => s,n,ExecIf($["${DB(AMPUSER/${AMPUSER}/language)}" != ""]?Set(CHANNEL(language)=${DB(AMPUSER/${AMPUSER}/language)}))
exten => s,n(report),GotoIf($[ "${ARG1}" = "SKIPTTL" | "${ARG1}" = "LIMIT" ]?continue)
exten => s,n(report2),Set(__TTL=${IF($["foo${TTL}" = "foo"]?64:$[ ${TTL} - 1 ])})
exten => s,n,GotoIf($[ ${TTL} > 0 ]?continue)
exten => s,n,Wait(${RINGTIMER})
exten => s,n,Answer
exten => s,n,Wait(1)
exten => s,n,Playback(im-sorry&an-error-has-occured&with&call-forwarding)
exten => s,n,Macro(hangupcall,)
exten => s,n(limit),Answer
exten => s,n,Wait(1)
exten => s,n,Playback(beep&im-sorry&your&simul-call-limit-reached&goodbye)
exten => s,n,Macro(hangupcall,)
exten => s,n,Congestion(20)
exten => s,n(continue),Set(CALLERID(number)=${CALLERID(number):0:40})
exten => s,n,Set(CALLERID(name)=${CALLERID(name):0:40})
exten => s,n,Set(CDR(cnum)=${CALLERID(num)})
exten => s,n,Set(CDR(cnam)=${CALLERID(name)})
exten => s,n,Set(CHANNEL(language)=${MASTER_CHANNEL(CHANNEL(language))})

exten => h,1,Macro(hangupcall,)

;--== end of [macro-user-callerid] ==--;

[macro-dialout-trunk]
include => macro-dialout-trunk-custom
exten => s,1,Set(DIAL_TRUNK=${ARG1})
exten => s,n,GosubIf($[$["${ARG3}" != ""] & $["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"]]?sub-pincheck,s,1())
exten => s,n,GotoIf($["x${OUTDISABLE_${DIAL_TRUNK}}" = "xon"]?disabletrunk,1)
exten => s,n,Set(DIAL_NUMBER=${ARG2})
exten => s,n,Set(DIAL_TRUNK_OPTIONS=${DIAL_OPTIONS})
exten => s,n,Set(OUTBOUND_GROUP=OUT_${DIAL_TRUNK})
exten => s,n,GotoIf($["${OUTMAXCHANS_${DIAL_TRUNK}}foo" = "foo"]?nomax)
exten => s,n,GotoIf($[ ${GROUP_COUNT(OUT_${DIAL_TRUNK})} >= ${OUTMAXCHANS_${DIAL_TRUNK}} ]?chanfull)
exten => s,n(nomax),GotoIf($["${INTRACOMPANYROUTE}" = "YES"]?skipoutcid)
exten => s,n,Set(DIAL_TRUNK_OPTIONS=${IF($["${DB_EXISTS(TRUNK/${DIAL_TRUNK}/dialopts)}" = "1"]?${DB_RESULT}:${TRUNK_OPTIONS})})
exten => s,n,Macro(outbound-callerid,${DIAL_TRUNK})
exten => s,n(skipoutcid),GosubIf($["${PREFIX_TRUNK_${DIAL_TRUNK}}" != ""]?sub-flp-${DIAL_TRUNK},s,1())
exten => s,n,Set(OUTNUM=${OUTPREFIX_${DIAL_TRUNK}}${DIAL_NUMBER})
exten => s,n,Set(custom=${CUT(OUT_${DIAL_TRUNK},:,1)})
exten => s,n,ExecIf($["${MOHCLASS}"!="default" & "${MOHCLASS}"!="" & "${FORCE_CONFIRM}"="" ]?Set(DIAL_TRUNK_OPTIONS=M(setmusic^${MOHCLASS})${DIAL_TRUNK_OPTIONS}))
exten => s,n,ExecIf($["${FORCE_CONFIRM}"!="" ]?Set(DIAL_TRUNK_OPTIONS=${DIAL_TRUNK_OPTIONS}M(confirm)))
exten => s,n(gocall),Macro(dialout-trunk-predial-hook,)
exten => s,n,GotoIf($["${PREDIAL_HOOK_RET}" = "BYPASS"]?bypass,1)
exten => s,n,ExecIf($["${DB(AMPUSER/${AMPUSER}/cidname)}" != ""]?Set(CONNECTEDLINE(num,i)=${DIAL_NUMBER}))
exten => s,n,ExecIf($["${DB(AMPUSER/${AMPUSER}/cidname)}" != ""]?Set(CONNECTEDLINE(name,i)=CID:${CALLERID(number)}))
exten => s,n,GotoIf($["${custom}" = "AMP"]?customtrunk)
exten => s,n,Dial(${OUT_${DIAL_TRUNK}}/${OUTNUM},${TRUNK_RING_TIMER},${DIAL_TRUNK_OPTIONS})
exten => s,n,Noop(Dial failed for some reason with DIALSTATUS = ${DIALSTATUS} and HANGUPCAUSE = ${HANGUPCAUSE})
exten => s,n,GotoIf($["${ARG4}" = "on"]?continue,1:s-${DIALSTATUS},1)
exten => s,n(customtrunk),Set(pre_num=${CUT(OUT_${DIAL_TRUNK},$,1)})
exten => s,n,Set(the_num=${CUT(OUT_${DIAL_TRUNK},$,2)})
exten => s,n,Set(post_num=${CUT(OUT_${DIAL_TRUNK},$,3)})
exten => s,n,GotoIf($["${the_num}" = "OUTNUM"]?outnum:skipoutnum)
exten => s,n(outnum),Set(the_num=${OUTNUM})
exten => s,n(skipoutnum),Dial(${pre_num:4}${the_num}${post_num},${TRUNK_RING_TIMER},${DIAL_TRUNK_OPTIONS})
exten => s,n,Noop(Dial failed for some reason with DIALSTATUS = ${DIALSTATUS} and HANGUPCAUSE = ${HANGUPCAUSE})
exten => s,n,GotoIf($["${ARG4}" = "on"]?continue,1:s-${DIALSTATUS},1)
exten => s,n(chanfull),Noop(max channels used up)

exten => s-BUSY,1,Noop(Dial failed due to trunk reporting BUSY - giving up)
exten => s-BUSY,n,Playtones(busy)
exten => s-BUSY,n,Busy(20)

exten => s-ANSWER,1,Noop(Call successfully answered - Hanging up now)
exten => s-ANSWER,n,Macro(hangupcall,)

exten => s-NOANSWER,1,Noop(Dial failed due to trunk reporting NOANSWER - giving up)
exten => s-NOANSWER,n,Progress
exten => s-NOANSWER,n,Playback(number-not-answering,noanswer)
exten => s-NOANSWER,n,Congestion(20)

exten => s-INVALIDNMBR,1,Noop(Dial failed due to trunk reporting Address Incomplete - giving up)
exten => s-INVALIDNMBR,n,Progress
exten => s-INVALIDNMBR,n,Playback(ss-noservice,noanswer)
exten => s-INVALIDNMBR,n,Busy(20)

exten => s-CHANGED,1,Noop(Dial failed due to trunk reporting Number Changed - giving up)
exten => s-CHANGED,n,Playtones(busy)
exten => s-CHANGED,n,Busy(20)

exten => _s-.,1,Set(RC=${IF($[${ISNULL(${HANGUPCAUSE})}]?0:${HANGUPCAUSE})})
exten => _s-.,n,Goto(${RC},1)

exten => 17,1,Goto(s-BUSY,1)

exten => 18,1,Goto(s-NOANSWER,1)

exten => 22,1,Goto(s-CHANGED,1)

exten => 23,1,Goto(s-CHANGED,1)

exten => 28,1,Goto(s-INVALIDNMBR,1)

exten => _X,1,Goto(continue,1)

exten => _X.,1,Goto(continue,1)

exten => continue,1(noreport),Noop(TRUNK Dial failed due to ${DIALSTATUS} HANGUPCAUSE: ${HANGUPCAUSE} - failing through to other trunks)
exten => continue,n,Set(CALLERID(number)=${AMPUSER})

exten => disabletrunk,1,Noop(TRUNK: ${OUT_${DIAL_TRUNK}} DISABLED - falling through to next trunk)

exten => bypass,1,Noop(TRUNK: ${OUT_${DIAL_TRUNK}} BYPASSING because dialout-trunk-predial-hook)

exten => h,1,Macro(hangupcall,)

;--== end of [macro-dialout-trunk] ==--;

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.