[globals] CIDFILE=/etc/asterisk/inc-calls/call-noanswer SQLHOST=db.domain.ru SQLUSER=asterisksql SQLPASS=Gt6Rju8FkS SQLDB=asteriskdb IVRWORK=custom/IVR_company_wav [incoming-74951234567] exten => h,1,Set(WAITTIME=10) exten => h,n,Set(CTALL=$[${CDR(duration)}]) exten => h,n,Set(CTANSWER=$[${CDR(billsec)}]) exten => h,n,Set(CTDTIME=$[${CTALL}-${CTANSWER}]) exten => h,n,NoOP(${CDR(disposition)}) exten => h,n,NoOP(${CTDTIME}) exten => h,n,GotoIf($["${CDR(disposition)}" = "NO ANSWER"]?timecheck:n1) exten => h,n(n1),GotoIf($["${CDR(disposition)}" = "BUSY"]?timecheck:n2) exten => h,n(n2),GotoIf($["${CDR(disposition)}" = "FAILED"]?timecheck:n3) exten => h,n(n3),GotoIf($["${CDR(disposition)}" = "ANSWERED"]?n4:misscall) exten => h,n(n4),MYSQL(Connect connid ${SQLHOST} ${SQLUSER} ${SQLPASS} ${SQLDB}) exten => h,n,MYSQL(Query resultid ${connid} UPDATE office_calls SET active=0 WHERE asterisk_id='${QID}') exten => h,n,MYSQL(Clear ${resultid}) exten => h,n,MYSQL(Disconnect ${connid}) exten => h,n(hang),Hangup() exten => h,n(timecheck),GotoIf($[${CTDTIME} > ${WAITTIME}]?misscall:hang) exten => h,n(misscall),Goto(noanswer,s,1) exten => s,1,NoOp(${CALLERID(num)}) exten => s,n,Set(CALLID=74951234567) exten => s,n,Set(CALLER=${CALLERID(num)}) exten => s,n,Set(__QID=${CDR(uniqueid)}) exten => s,n(begin),GotoIfTime(10:00-22:00,mon-sat,*,*?workdays:outofoffice) exten => s,n(workdays),NoOp(Incoming CALL from ${CALLERID(num)} to ${EXTEN}) exten => s,n,Answer() exten => s,n,ResetCDR(w) exten => s,n,Wait(1) exten => s,n,Background(${IVRWORK}) exten => s,n,Queue(operators,t,,,300,,startflag1) exten => s,n,NoOp(${DIALSTATUS}) exten => s,n,Goto(noanswer,s,1) exten => s,n,Hangup()
[noanswer] exten => s,1,NoOp(UID CALL: ${UNIQUEID} / DATE: ${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)})) exten => s,n,Set(RANDOM=${RAND(1000,9999)}) exten => s,n,Set(COUNT=${DB(fwcid2/count)}) exten => s,n,GotoIf($[${ISNULL(${COUNT})}]?:nextstep) exten => s,n,Set(DB(fwcid2/count)=1) exten => s,n,NoOp() exten => s,n,NoOp(UNIQID = ${COUNT}) exten => s,n,Set(COUNT=$[${COUNT} + 1]) exten => s,n,Set(DB(fwcid2/count)=${COUNT}) exten => s,n,System(echo " +7${CALLERID(NUM)} ${STRFTIME(${EPOCH},,%H:%M)}" > ${CIDFILE}-${CALLERID(NUM)}-${COUNT}) exten => s,n,System(echo "" >> ${CIDFILE}-${CALLERID(NUM)}-${COUNT}) exten => s,n,System(echo " ${CTDTIME} " >> ${CIDFILE}-${CALLERID(NUM)}-${COUNT}) exten => s,n,System(echo "hello" | mutt -x -s "+74951234567: ${STRFTIME(${EPOCH},,%d.%m.%Y)} ${STRFTIME(${EPOCH},,%H:%M)}" -e "set from="voip@domain.ru"" -e 'set realname='Asterisk'' voip@domain.ru < ${CIDFILE}-${CALLERID(NUM)}-${COUNT}) exten => s,n,System(/bin/rm -f ${CIDFILE}-${CALLERID(NUM)}-${COUNT}) exten => s,n,Hangup()
[macro-startflag1] exten => s,1,Set(CALLID=74951234567) exten => s,n,MYSQL(Connect connid ${SQLHOST} ${SQLUSER} ${SQLPASS} ${SQLDB}) exten => s,n,MYSQL(Query resultid ${connid} INSERT INTO office_calls VALUES (NULL,'${STRFTIME(,GMT,%G-%m-%d %H:%M:%S)}',1,'${CALLID}','${CDR(src)}','${CDR(dstcha nnel):0:9}','${STRFTIME(,GMT,%G-%m-%d %H:%M:%S)}','${STRFTIME(,GMT,%G-%m-%d %H:%M:%S)}','${QID}')) exten => s,n,MYSQL(Clear ${resultid}) exten => s,n,MYSQL(Disconnect ${connid}) exten => s,n,Hangup()
<?xml version="1.0" encoding="UTF-8"?> <callback_request> <id>100XXXX</id> --- XXX - <name></name> --- , <phone>123456</phone> --- , <comment> </comment> <completed>false</completed> <created_at>11.12.2012 - 17:19</created_at> --- <updated_at>11.12.2012 - 17:19</updated_at> --- <no_answer/> </callback_request>
yum install perl-XML-Writer
#!/usr/bin/env perl # Create XML file use strict; use warnings; use XML::Writer; # Out to file #open STDOUT, ">", "REQUEST.20121211171903.xml" or die "$0: open: $!"; my $doc = new XML::Writer(); # Pring attributes $doc->xmlDecl('UTF-8'); $doc->startTag("callback_request"); $doc->dataElement( id => "$ARGV[0]"); $doc->startTag( "name"); $doc->characters( "$ARGV[1]"); $doc->endTag( "name"); $doc->dataElement( phone => "$ARGV[2]"); $doc->dataElement( comment => " "); $doc->dataElement( completed => "false"); $doc->dataElement( created_at => "$ARGV[3]"); $doc->dataElement( updated_at => "$ARGV[3]"); $doc->emptyTag( "no_answer"); $doc->endTag(); $doc->end();
exten => s,n,System(/usr/bin/perl /etc/asterisk/scripts/genxml.pl "100${RANDOM}" "74951234567" "${CALLERID(NUM)}" "${STRFTIME(${EPOCH},,%d.%m.%Y - %H:%M)}" > /srv/www/domain.ru/xml/REQUEST.${STRFTIME(${EPOCH},,%Y%m%d%H%M%S)}.xml)
Source: https://habr.com/ru/post/162825/
All Articles