ну вот типа того:
сам макрос
[macro-call-event]
exten => s,1,noop(--==IVR actions for VPBX ${vpbx_id}==--)
exten => s,n,noop(${ARG1})
exten => s,n,Set(CDR_ADD_EVENT(${vpbx_id})=${CUT(UNIQUEID,.,1)}\,${CUT(UNIQUEID,.,2)}\,${CDR(clid)}\,${CDR(src)}\,${CDR(dst)}\,${CDR(dcontext)}\,${CDR(channel)}\,${CDR(dstchannel)}\,${CDR(duration)}\,${CDR(billsec)}\,${CDR(disposition)}\,${CDR(accountcode)}\,${ARG1})
тут небольшая засада, некоторые переменные не еще определены, например CDR(duration)...
как его применять
[ivr]
exten => _X.,1,noop(--==IVR [${EXTEN}] for VPBX [${vpbx_id}]==--)
exten => _X.,n,macro(call-event,"Caller ${CDR(clid)} inter in IVR menu [${EXTEN}]")
exten => _X.,n,Set(ARRAY(_ivr_actions_id, _ivr_enable_direct_dial, _max_calls)=${IVR_SETTINGS(${vpbx_id},${EXTEN})})
exten => _X.,n,goto(ivr-actions,s,1)
это функция ODBC
[ADD_EVENT]
prefix=CDR
dsn=lcdrdb
write=INSERT INTO vpbx_${ARG1} (uniqueid_leg1,uniqueid_leg2,clid,src,dst,dcontext,channel,dstchannel,duration,billsec,disposition,accountcode,event) values ('${VAL1}','${VAL2}','${VAL3}','${VAL4}','${VAL5}','${VAL6}','${VAL7}','${VAL8}','${VAL9}','${VAL10}','${VAL11}','${VAL12}','${VAL13}')
вебморду еще не делал...
По замыслу должно получиться ка у switchvox