<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=iso-8859-1"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Texto de balão Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";
        mso-fareast-language:EN-US;}
span.EstiloDeEmail17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.TextodebaloChar
        {mso-style-name:"Texto de balão Char";
        mso-style-priority:99;
        mso-style-link:"Texto de balão";
        font-family:"Tahoma","sans-serif";}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 3.0cm 70.85pt 3.0cm;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=PT-BR link=blue vlink=purple><div class=WordSection1><p class=MsoNormal>Cenário:<o:p></o:p></p><p class=MsoNormal>Possuo duas lojas interligadas por trunkiax e as ligações internamente funcionam perfeitamente mas preciso fazer um call-back agendado caso o ramal da outra loja esteja ocupado. <o:p></o:p></p><p class=MsoNormal>Da maneira que está implementado hoje, é possível monitorar que o call-back chega até a outra loja mostra que está chamando(&#8216;ringing&#8217;) através do putty em seguida mostra Atendido (&#8216;answered&#8217;) mas não retorna.<o:p></o:p></p><p class=MsoNormal>Meu DialPlan(extensions.conf) ficou algo assim:<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>Versão do Asterisk  1.4.36<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>[interno]<o:p></o:p></p><p class=MsoNormal>exten =&gt; _10[5-9]X,3,Dial(IAX2/trunkiax/${EXTEN},200,tT)       <o:p></o:p></p><p class=MsoNormal>exten =&gt; _10[5-9]X,4,GotoIf($[${DIALSTATUS} = CHANUNAVAIL | ${DIALSTATUS} = CONGESTION | ${DIALSTATUS} = BUSY]?6:5)<o:p></o:p></p><p class=MsoNormal>exten =&gt; _10[5-9]X,5,Hangup() <o:p></o:p></p><p class=MsoNormal>exten =&gt; _10[5-9]X,6,Noop(** RAMAL OCUPADO - COM OPÇÃO DE CALLBACK **)  <o:p></o:p></p><p class=MsoNormal><span lang=EN-US>exten =&gt; _10[5-9]X,7,Set(R-DESTINO=${EXTEN})                                          <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>exten =&gt; _10[5-9]X,8,Playback(custom/Tecle 6)                                         <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>exten =&gt; _10[5-9]X,9,Read(digito||1|6)  <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>exten =&gt; _10[5-9]X,10,GotoIf($[${digito} = 6]?callback-hidraulica,s,1) <o:p></o:p></span></p><p class=MsoNormal>exten =&gt; _10[5-9]X,11,Hangup()<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>Esse é o contexto do CallBack Agendado<o:p></o:p></p><p class=MsoNormal>[callback-hidraulica]<o:p></o:p></p><p class=MsoNormal>exten =&gt; s,1,Set(RAMAL-DESTINO=${R-DESTINO})<o:p></o:p></p><p class=MsoNormal>exten =&gt; s,n,Set(RAMAL-ORIGEM=${CALLERID(num)})<o:p></o:p></p><p class=MsoNormal>exten =&gt; s,n,System(/var/lib/asterisk/scripts/callback-agendado-filial.sh ${RAMAL-ORIGEM} ${RAMAL-DESTINO})<o:p></o:p></p><p class=MsoNormal><span lang=EN-US>exten =&gt; s,n,Playback(custom/Callback Agendado Ativo)<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>exten =&gt; s,n,Hangup()   <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span lang=EN-US>Shell Script (callback-agendado.sh)<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#!/bin/bash<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span lang=EN-US>make_callfile()<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>{ <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>ORIGEM=$1<o:p></o:p></span></p><p class=MsoNormal>DESTINO=$2<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>#Verifica se já existe esse callback na fila<o:p></o:p></p><p class=MsoNormal><span lang=EN-US>if [ -e /var/spool/asterisk/outgoing/$(date +%d%m%Y)-$DESTINO-$ORIGEM.call ]; then<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        exit;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>fi<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span lang=EN-US>CALLFILE=$(cat &lt;&lt;-EOF1 <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Channel: IAX2/trunkiax/$ORIGEM<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>MaxRetries: 30<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>RetryTime: 5<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>WaitTime: 10<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Context: interno<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Extension: $DESTINO<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Priority: 1)<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span lang=EN-US>FILE_NAME=$TEMP_SPOOL/$(date +%d%m%Y)-$DESTINO-$ORIGEM.call<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>echo &quot;$CALLFILE&quot; &gt;&gt; $FILE_NAME<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>chown root /$FILE_NAME<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>chmod 777 /$FILE_NAME<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>mv /$FILE_NAME /var/spool/asterisk/outgoing<o:p></o:p></span></p><p class=MsoNormal>} <o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>#VARIAVEIS DIRETORIOS<o:p></o:p></p><p class=MsoNormal>ASTERISK_CFG=&quot;/etc/asterisk&quot; <o:p></o:p></p><p class=MsoNormal><span lang=EN-US>TEMP_SPOOL=&quot;/var/spool/asterisk&quot; <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p><p class=MsoNormal>make_callfile &quot;$2&quot; &quot;$1&quot;<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>exit<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>; CONTEXTO TRUNK IAX DE INTERLIGACAO <o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>register=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX<o:p></o:p></p><p class=MsoNormal>                              <o:p></o:p></p><p class=MsoNormal><span lang=EN-US>[trunkiax]   <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>username=trunkiax<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>qualify=yes<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>type=friend<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>secret=xxxxxxxxxxxxxxxxxxxxxxx<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>host=dynamic<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>trunk=yes<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>context=entrada-loja1<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>requirecalltoken=no<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>disallow=all<o:p></o:p></span></p><p class=MsoNormal>allow=g729<o:p></o:p></p><p class=MsoNormal>allow=gsm<o:p></o:p></p><p class=MsoNormal>allow=g723<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal align=center style='text-align:center'><b><span style='font-size:13.5pt;mso-fareast-language:PT-BR'>Att.<o:p></o:p></span></b></p><p class=MsoNormal align=center style='text-align:center'><b><span style='font-size:13.5pt;mso-fareast-language:PT-BR'>Fernando Lino da Silva</span></b><span style='mso-fareast-language:PT-BR'><br><a href="mailto:fernando@erimatoeste.com.br" target="_blank"><span style='color:blue'>fernando@erimatoeste.com.br</span></a><o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:PT-BR'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal align=center style='text-align:center'><span style='mso-fareast-language:PT-BR'><img border=0 width=242 height=141 id="_x0000_i1025" src="cid:image001.gif@01CDFAE1.E5ED9270" alt="http://www.erimat.com.br/img/logo.gif"></span><span style='mso-fareast-language:PT-BR'><o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:PT-BR'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal align=center style='text-align:center'><b><span style='font-size:13.5pt;mso-fareast-language:PT-BR'>(17)2139-3950</span></b><span style='mso-fareast-language:PT-BR'><o:p></o:p></span></p><p class=MsoNormal><o:p>&nbsp;</o:p></p></div></body></html>