Send Call Recording to email

[macro-mixmonitor]
exten => s,1,Gosub(sub-record-check-custom1,s,1(out,${EXTEN},))
exten => s,n,Dial(${ARG1},,e)
exten => h,1,System(mail -s "record-${CALLFILENAME}" -a /var/spool/asterisk/monitor/${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MON_FMT} info@asterisk-pbx.ru < /home/txt)


[from-ext1]
exten => _1XX,1,Macro(mixmonitor,PJSIP/${EXTEN})
exten => _XXXXXXX,1,Macro(mixmonitor,SIP/siptrunk1/${EXTEN})

<fs large>Дополнительный пример</fs>

[from-exten-sip]
exten => _XXXXXXX,1,Macro(mixmonitor-sip,${EXTEN},${CALLERID(all)})

[macro-mixmonitor-sip]
exten => s,1,Gosub(sub-record-check-custom1,s,1(out,${EXTEN},))
exten => s,n,Set(_TITLE=${STRFTIME(${EPOCH},,%d.%m.%Y %H:%M:%S)}, EXT=${CALLERID(num)}, SRC=${CALLERID(name)}, DST=${ARG1})
exten => s,n,Set(_SPT=SIP/siptrunk)
exten => s,n,Dial(${SPT}/${ARG1},,e)
exten => s,n,NoOp( Dial Status: ${DIALSTATUS})
exten => s,n,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Hangup
exten => s-CONGESTION,1,Congestion
exten => s-CANCEL,1,Hangup
exten => s-BUSY,1,Busy
exten => s-CHANUNAVAIL,1,Hangup
exten => h,1,System(mail -s "Outgoing Call Record ${TITLE}" -a /var/spool/asterisk/monitor/${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MON_FMT} info@asterisk-pbx.ru < /home/info)

<fs large>Анонимные входящие вызовы</fs>

[from-guest]
exten => _1XX,1,Macro(external,${EXTEN})
exten => _X.,1,Goto(app-blackhole,s,1)

[macro-external]
exten => s,1,Gosub(sub-record-check-custom1,s,1(out,${EXTEN},))
exten => s,n,Set(_DST=DST=${ARG1})
exten => s,n,Set(_TITLE=${STRFTIME(${EPOCH},,%d.%m.%Y %H:%M:%S)}, SRC=${CUT(CUT(SIP_HEADER(Via), ,2),:,1)})
exten =  s,n,Set(_UA=${SIP_HEADER(User-Agent)})
exten =  s,n,NoOp(${CUT(CUT(SIP_HEADER(FROM), ,2),:,1)})
exten => s,n,Dial(PJSIP/${ARG1},,e)
exten => s,n,NoOp( Dial Status: ${DIALSTATUS})
exten => s,n,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Hangup
exten => s-CONGESTION,1,Congestion
exten => s-CANCEL,1,Hangup
exten => s-BUSY,1,Busy
exten => s-CHANUNAVAIL,1,Hangup
exten => h,1,System(mail -s "Incoming Call Record ${TITLE}, ${UA}, ${DST}" -a /var/spool/asterisk/monitor/${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MON_FMT} info@asterisk-pbx.ru < /home/txt)

<fs large>FreePBX совместимая запись разговоров.</fs>

[sub-record-check-custom1]
exten => s,1,Set(REC_POLICY_MODE_SAVE=${REC_POLICY_MODE})
exten => s,n,GotoIf($["${BLINDTRANSFER}" = ""]?check)
exten => s,n,ResetCDR()
exten => s,n,GotoIf($["${REC_STATUS}" != "RECORDING"]?check)
exten => s,n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)
exten => s,n,MixMonitor(${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MIXMON_FORMAT},a,${MIXMON_POST})
exten => s,n(check),Set(__MON_FMT=${IF($["${MIXMON_FORMAT}"="wav49"]?WAV:${MIXMON_FORMAT})})
exten => s,n,GotoIf($["${REC_STATUS}"!="RECORDING"]?next)
exten => s,n,Set(CDR(recordingfile)=${CALLFILENAME}.${MON_FMT})
exten => s,n,Return()
exten => s,n(next),ExecIf($[!${LEN(${ARG1})}]?Return())
exten => s,n,ExecIf($["${REC_POLICY_MODE}"="" & "${ARG3}"!=""]?Set(__REC_POLICY_MODE=${ARG3}))
exten => s,n,GotoIf($["${REC_STATUS}"!=""]?${ARG1},1)
exten => s,n,Set(__REC_STATUS=INITIALIZED)
exten => s,n,Set(NOW=${EPOCH})
exten => s,n,Set(__DAY=${STRFTIME(${NOW},,%d)})
exten => s,n,Set(__MONTH=${STRFTIME(${NOW},,%m)})
exten => s,n,Set(__YEAR=${STRFTIME(${NOW},,%Y)})
exten => s,n,Set(__TIMESTR=${YEAR}${MONTH}${DAY}-${STRFTIME(${NOW},,%H%M%S)})
;exten => s,n,Set(__FROMEXTEN=${IF($[${LEN(${AMPUSER})}]?${AMPUSER}:${IF($[${LEN(${REALCALLERIDNUM})}]?${REALCALLERIDNUM}:unknown)})})
exten => s,n,Set(__FROMEXTEN=${CALLERID(name)})
exten => s,n,Set(__CALLFILENAME=${ARG1}-${ARG2}-${FROMEXTEN}-${TIMESTR}-${UNIQUEID})
exten => s,n,Goto(${ARG1},1)



;exten => out,1,ExecIf($["${REC_POLICY_MODE}"=""]?Set(__REC_POLICY_MODE=${DB(AMPUSER/${FROMEXTEN}/recording/out/external)}))
;статус записи вкл
exten => out,1,ExecIf($["${REC_POLICY_MODE}"=""]?Set(__REC_POLICY_MODE=always))
exten => out,n,GosubIf($["${REC_POLICY_MODE}"="always"]?record,1(exten,${ARG2},${FROMEXTEN}))
exten => out,n,Return()


exten => record,1,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)
exten => record,n,MixMonitor(${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MIXMON_FORMAT},,${MIXMON_POST})
exten => record,n,Set(__REC_STATUS=RECORDING)
exten => record,n,Set(CDR(recordingfile)=${CALLFILENAME}.${MON_FMT})
exten => record,n,Return()

<spoiler>

[from-exten-sip2]
exten => _XXXXXXX,1,Macro(mixmonitor-sip2,${EXTEN})

[macro-mixmonitor-sip2]
exten => s,1,Gosub(sub-record-check-custom1,s,1(out,${EXTEN},))
exten => s,n,Set(_DST=DST=${ARG1})
exten => s,n,Set(_TRK=SIP/siptrunk)
exten => s,n,ChanIsAvail(${TRK}1&${TRK}2&${TRK}3&${TRK}4)
exten => s,n,Set(_TITLE=${STRFTIME(${EPOCH},,%d.%m.%Y %H:%M:%S)}, EXT=${CALLERID(num)}, SRC=${CUT(AVAILCHAN,,1)} )
exten => s,n,Dial(${CUT(AVAILCHAN,,1)}/${ARG1},,e)
exten => s,n,NoOp( Dial Status: ${DIALSTATUS})
exten => s,n,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Hangup
exten => s-CONGESTION,1,Congestion
exten => s-CANCEL,1,Hangup
exten => s-BUSY,1,Busy
exten => s-CHANUNAVAIL,1,Hangup
exten => h,1,System(mail -s "Outgoing Call Record ${TITLE}, ${DST}" -a /var/spool/asterisk/monitor/${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MON_FMT} info@asterisk-pbx.ru < /home/info)
[from-exten-pjsip]
exten => _XXXXXXX,1,Macro(mixmonitor-pjsip,${EXTEN},${CALLERID(all)})

[macro-mixmonitor-pjsip]
exten => s,1,Gosub(sub-record-check-custom1,s,1(out,${EXTEN},))
exten => s,2,Set(_TITLE=${STRFTIME(${EPOCH},,%d.%m.%Y %H:%M:%S)}, EXT=${CALLERID(num)}, SRC=${CALLERID(name)}, DST=${ARG1})
exten => s,3,Dial(PJSIP/siptrunk${RAND(1,5)}/sip:${ARG1}@siptrunk.tld,,e)
exten => s,4,NoOp( Dial Status: ${DIALSTATUS})
exten => s,5,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Hangup
exten => s-CONGESTION,1,Congestion
exten => s-CANCEL,1,Hangup
exten => s-BUSY,1,Busy
exten => s-CHANUNAVAIL,1,Goto(s,3)
exten => h,1,System(mail -s "Outgoing Call Record ${TITLE}" -a /var/spool/asterisk/monitor/${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MON_FMT} info@asterisk.pbx.ru < /home/info)

</spoiler>

Asterisk Dialplan advanced (Диалплан расширенный)

~~socialite~~

  • asterisk/dialplan/send_recording_email.txt
  • Последние изменения: 2016/12/17