<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 12 (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:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@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;}
@font-face
        {font-family:Webdings;
        panose-1:5 3 1 2 1 5 9 6 7 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
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;}
span.EstiloDeEmail17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@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="2050" />
</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>Olá galera,<o:p></o:p></p><p class=MsoNormal>Hoje precisei criar um callback na empresa que trabalho, esse callback funciona da seguinte maneira:<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>Ligo na empresa do meu celular(ou de qualquer número que bine) de qualquer região, o servidor pega o meu número, desliga a chamada e me retorna, após isso, digito o numero que desejo fazer a ligação e ele disca e completa para mim.<o:p></o:p></p><p class=MsoNormal>Isso foi necessário, pois nossos celulares só fazem ligação para região 43...<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>Então criei uma tutorial Básico para quem necessitar.<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>Callback para ligações externas<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>primeiro, criaremos a regra de entrada, nesse caso estou simulando uma ligação entrando por um <o:p></o:p></p><p class=MsoNormal><o:p></o:p></p><p class=MsoNormal>determinado DDR de um link E1, mais pode ser ligações de entrada de qualquer tipo (FXO, SIP, <o:p></o:p></p><p class=MsoNormal><o:p></o:p></p><p class=MsoNormal>Analógico, etc) bastando apenas ser alterado para cada situação.<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>[entrada]<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>exten =&gt; _3200,1,NoOp(Realizando CallBack )<o:p></o:p></p><p class=MsoNormal><span lang=EN-US>exten =&gt; _3200,2,Wait(1)<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>exten =&gt; _3200,3,Macro(callback,)<o:p></o:p></span></p><p class=MsoNormal>exten =&gt; _3200,4,Hangup()<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>linha 1 - mostra na tela a descrição dentro dos parenteses &quot;()&quot;<o:p></o:p></p><p class=MsoNormal>linha 2 - espera um segundo antes de continuar<o:p></o:p></p><p class=MsoNormal>linha 3 - vai para macro callback que veremos a seguir.<o:p></o:p></p><p class=MsoNormal>linha 4 - derruba a ligação após colher as primeiras informações.<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>agora, criaremos uma macro callback onde criaremos o arquivo .call que fará o retorno da ligação para o número que ligou.<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><span lang=EN-US>[macro-callback]<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>exten =&gt; s,1,set(CALLBACK-FILE=/var/spool/asterisk/outgoing/${MACRO_EXTEN}-${CALLERID(num)}.call)<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>exten =&gt; s,n,system(echo Channel: SIP/0${CALLERID(num)}@g1entrada &gt; ${CALLBACK-FILE})<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>exten =&gt; s,n,system(echo Context: saida-callback &gt;&gt; ${CALLBACK-FILE})<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>exten =&gt; s,n,system(echo Extension: 1000 &gt;&gt; ${CALLBACK-FILE})<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>exten =&gt; s,n,system(echo Callerid: ${CALLERID(num)} &gt;&gt; ${CALLBACK-FILE})<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>exten =&gt; s,n,system(echo MaxRetries: 2 &gt;&gt; ${CALLBACK-FILE})<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>exten =&gt; s,n,system(echo RetryTime: 30 &gt;&gt; ${CALLBACK-FILE})<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>exten =&gt; s,n,system(echo WaitTime: 30 &gt;&gt; ${CALLBACK-FILE})<o:p></o:p></span></p><p class=MsoNormal>exten =&gt; s,n,MacroExit<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>linha 1 - seto uma variável com o diretório /var/spool/asterisk/outgoing/ + o nome do arquivo que será criado automaticamente. <o:p></o:p></p><p class=MsoNormal>linhas n - no restante das linhas, escrevo dentro do arquivo as opções necessárias para rodar um arquivo .call (vejam mais informações de arquivos .call para entenderem melhor caso tenham dúvidas).<o:p></o:p></p><p class=MsoNormal>linha 2 - canal que sairá a ligação, no meu caso estou enviando pela operadora da empresa em que trabalho.<o:p></o:p></p><p class=MsoNormal>linha 3 - contexto que será direcionado para que a pessoa possa digitar o numero desejado.<o:p></o:p></p><p class=MsoNormal>linha 4 - extensão que será entregue esta ligação dentro do contexto anterior.<o:p></o:p></p><p class=MsoNormal>linha 5 - callerid da chamada<o:p></o:p></p><p class=MsoNormal>linha 6 - Numero maximo de vezes que o asterisk irá  tentar chamar o originador antes de considerar que a chamada falhou.<o:p></o:p></p><p class=MsoNormal>Este parâmetro não considera a primeira tentativa, portanto se definido como 0, o asterisk tentará chamar apenas uma vez.<o:p></o:p></p><p class=MsoNormal>linha 7 - Seguntos entre as tentativas de chamar o originador. O padrão é 300 segundos.<o:p></o:p></p><p class=MsoNormal>linha 8 - Numero de segundos que o asterisk irá chamar o originador a cada tentativa. O padrão é 45.<o:p></o:p></p><p class=MsoNormal>linha 9 - sai da Macro.<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>após sair da macro, o asterisk dará o hangup conforme linha 4 do contexto entrada, após isso, o arquivo .call criado já será executado chamando o número que havia ligado anteriormente, quando houver o atendimento dessa chamada, jogará para o contexto descrito no arquivo .call que criamos (saida-callback).<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>o contexto saida-callback dará um bip e aguardará um numero ser digitado. Nesse caso dará um Bip, mais pode-se personalizar com uma gravação da maneira que desejar.<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><span lang=EN-US>[saida-callback]<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>exten =&gt; 1000,1,Answer()<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>exten =&gt; 1000,2,PlayBack(beep)<o:p></o:p></span></p><p class=MsoNormal>exten =&gt; 1000,n,Read(NUMERO)<o:p></o:p></p><p class=MsoNormal>exten =&gt; 1000,n,Dial(SIP/${NUMERO}@g1telecom,40,tg)<o:p></o:p></p><p class=MsoNormal>exten =&gt; 1000,n,Macro(hangupcall,)<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>linha 1 - atende a chamada<o:p></o:p></p><p class=MsoNormal>linha 2 - dá um bip após o atendimento da chamada, aqui pode-se colocar uma mensagem para o usuário ouvir tipo: digite o numero que deseja, ou coisa do tipo.<o:p></o:p></p><p class=MsoNormal>linha 3 - lê os digitos e salva na variável NUMERO<o:p></o:p></p><p class=MsoNormal>linha 4 - dá um dial para o numero capturado.<o:p></o:p></p><p class=MsoNormal>linha 5 - dá um hangup ao término da ligação.<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>acho que é isso pessoal, desculpem qualquer coisa, mais esse é um dos meus primeiros tutoriais e fiz correndo, qualquer erro me perdoem..rsrs.<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>abraços.<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><b><span style='font-family:"Tahoma","sans-serif";color:#000066'>att<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Tahoma","sans-serif";color:#000066'><o:p>&nbsp;</o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Tahoma","sans-serif";color:#000066'>Danilo Ricardo de Almeida</span></b><b><span style='font-size:12.0pt;font-family:"Tahoma","sans-serif";color:#000066'><o:p></o:p></span></b></p><p class=MsoNormal><i><span style='font-size:7.0pt;color:#000066'>Engenharia e Desenvolvimento / Engineering and Development<o:p></o:p></span></i></p><p class=MsoNormal><b><span style='font-size:8.0pt;color:#000066'><o:p>&nbsp;</o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Tahoma","sans-serif";color:#000066'>GRUPO G1 TELECOMUNICAÇÕES LTDA.<o:p></o:p></span></b></p><p class=MsoNormal style='text-align:justify'><!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
<v:stroke joinstyle="miter" />
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0" />
<v:f eqn="sum @0 1 0" />
<v:f eqn="sum 0 0 @1" />
<v:f eqn="prod @2 1 2" />
<v:f eqn="prod @3 21600 pixelWidth" />
<v:f eqn="prod @3 21600 pixelHeight" />
<v:f eqn="sum @0 0 1" />
<v:f eqn="prod @6 1 2" />
<v:f eqn="prod @7 21600 pixelWidth" />
<v:f eqn="sum @8 21600 0" />
<v:f eqn="prod @7 21600 pixelHeight" />
<v:f eqn="sum @10 21600 0" />
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" />
<o:lock v:ext="edit" aspectratio="t" />
</v:shapetype><v:shape id="Imagem_x0020_2" o:spid="_x0000_s1026" type="#_x0000_t75" alt="logo.gif" style='position:absolute;left:0;text-align:left;margin-left:1.2pt;margin-top:9.8pt;width:74.5pt;height:72.75pt;z-index:1;visibility:visible;mso-wrap-style:square;mso-wrap-distance-left:9pt;mso-wrap-distance-top:0;mso-wrap-distance-right:9pt;mso-wrap-distance-bottom:0;mso-position-horizontal:absolute;mso-position-horizontal-relative:text;mso-position-vertical:absolute;mso-position-vertical-relative:text'>
<v:imagedata src="cid:image001.gif@01CE1A8F.93EAD7D0" o:title="logo" />
<w:wrap type="square"/>
</v:shape><![endif]--><![if !vml]><img width=99 height=97 src="cid:image003.png@01CE1A91.06AB6900" align=left hspace=12 alt=logo.gif v:shapes="Imagem_x0020_2"><![endif]><b><span style='font-size:8.0pt;color:#000066'><o:p></o:p></span></b></p><p class=MsoNormal style='text-align:justify'><span style='font-size:8.0pt;color:#000066'>Rua: Ponta Grossa, n°587 &#8211; Jardim Dom Bosco<o:p></o:p></span></p><p class=MsoNormal style='text-align:justify'><span style='font-size:8.0pt;color:#000066'>CEP: 86060-450 - Londrina - PR<o:p></o:p></span></p><p class=MsoNormal style='text-align:justify'><span style='font-size:7.5pt;font-family:Wingdings;color:#000066'>(</span><span style='font-size:8.0pt;color:#000066'>Fone/Fax: +55 43 3028-1120 / +55 43 3028-1120<o:p></o:p></span></p><p class=MsoNormal style='text-align:justify'><span style='font-size:7.5pt;font-family:Wingdings;color:#000066'>y</span><span style='font-size:8.0pt;color:#000066'>EMAIL:&nbsp;&nbsp;</span><u><span lang=EN-US style='font-size:8.0pt;color:#0707C9'><a href="mailto:danilo.almeida@g1telecom.com.br"><span lang=PT-BR style='color:#0707C9'>danilo.almeida@g1telecom.com.br</span></a></span></u><span style='font-size:8.0pt;color:#000066'><o:p></o:p></span></p><p class=MsoNormal style='text-align:justify'><span style='font-size:7.5pt;font-family:Wingdings;color:#000066'>y</span><span lang=EN-US style='font-size:8.0pt;color:#000066'>MSN:&nbsp;&nbsp;&nbsp; </span><u><span lang=EN-US style='font-size:8.0pt;color:#0707C9'><a href="mailto:danilo.almeida@g1telecom.com.br"><span style='color:#0707C9'>danilo.almeida@g1telecom.com.br</span></a></span></u><b><span lang=EN-US style='font-size:8.0pt;color:#0707C9'><o:p></o:p></span></b></p><p class=MsoNormal style='text-align:justify'><span style='font-size:7.5pt;font-family:Wingdings;color:#000066'>y</span><span style='font-size:8.0pt;color:#000066'>Suporte:  </span><span style='font-size:8.0pt;color:#0707C9'><a href="mailto:suporte@g1telecom.com.br"><span style='color:#0707C9'>suporte@g1telecom.com.br</span></a><u><o:p></o:p></u></span></p><p class=MsoNormal style='text-align:justify'><span style='font-family:Wingdings;color:#000066'>:</span><span style='font-size:8.0pt;color:#000066'>Site:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style='color:#0000CC'><a href="http://www.g1telecom.com.br/"><span style='font-size:8.0pt;color:#0000CC'>www.g1telecom.com.br</span></a></span><u><span style='font-size:8.0pt;color:#0000CC'><o:p></o:p></span></u></p><p class=MsoNormal><b><span style='font-size:24.0pt;font-family:Webdings;color:green'><o:p>&nbsp;</o:p></span></b></p><p class=MsoNormal><b><span style='font-size:24.0pt;font-family:Webdings;color:green'>P</span></b><span style='font-size:10.0pt;color:#1F497D'>&nbsp; </span><b><span style='font-size:7.5pt;color:green'>&#8220;VOCÊ PRECISA MESMO IMPRIMIR?&#8221;</span></b><span style='color:black'><o:p></o:p></span></p><p class=MsoNormal><o:p>&nbsp;</o:p></p></div></body></html>