<html>
<head>
<style>
P
{
margin:0px;
padding:0px
}
body
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body><br>Silvio,<br><br>Na verdade tem muita utilidade na vida real, desenvolvi aqui na empresa (Call Center) uma aplicação Java/WEB, onde 30 operadoras trabalham. Recebem chamadas automáticas distribuidas pela aplicação onde entrego para elas somente chamadas atendidas, o sistema utiliza a biblioteca AsteriskJava que já foi pior mais está muito estável agora, comando gravações por demanda e muitas outras funcionalidades. <br><br>Att,<br>André<br><br><br><br><blockquote style="border-left: 2px solid rgb(0, 128, 128); padding-left: 5px; margin-left: 5px; margin-right: 0px;"><hr id="EC_stopSpelling">From: silvionetto@hotmail.com<br>To: AsteriskBrasil@listas.asteriskbrasil.org<br>Date: Thu, 18 Jan 2007 10:42:19 -0200<br>Subject: [AsteriskBrasil] Asterisk Manager API - AMI - Asterisk-Java<br><br>

<meta http-equiv="Content-Type" content="text/html; charset=unicode">
<meta name="Generator" content="Microsoft SafeHTML">


<style>
</style>


<div><font face="Arial" size="2">Bom dia,</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><font face="Arial" size="2">Estive tentando acessar um servidor Asterisk a 
partir de uma máquina Windows&nbsp;realizar uma ligação e transferir&nbsp;para 
um atendente.</font></div>
<div><font face="Arial" size="2">Com isso descubri várias facilidades do Asterisk e 
resolvi enviar para a lista algumas coisas interessantes na minha opinião para 
resolver o problema.</font></div>
<div><font face="Arial" size="2">A primeira coisa que me apareceu foi o Asterisk 
Manager API. Uma interface que disponibiliza acesso&nbsp;ao Asterisk via 
protocolo TCP/IP.</font></div>
<div><font face="Arial" size="2">Para utilizar o Asterisk Manager basta habilitar o 
serviço editando o arquivo de configuração 
<strong>"/etc/asterisk/manager.conf</strong>" como no exemplo 
abaixo:</font></div>
<div><font face="Arial" size="2"></font>&nbsp;</div>
<div><strong><span style="font-family: monospace;">; </span><br><span style="font-family: monospace;">&nbsp;;&nbsp;Asterisk&nbsp;Call&nbsp;Management&nbsp;support 
</span><br><span style="font-family: monospace;">&nbsp;; </span><br><span style="font-family: monospace;">&nbsp;[general] </span><br><span style="font-family: monospace;">&nbsp;enabled&nbsp;=&nbsp;yes </span><br><span style="font-family: monospace;">&nbsp;port&nbsp;=&nbsp;5038&nbsp; 
</span><br><span style="font-family: monospace;">&nbsp;bindaddr&nbsp;=&nbsp;0.0.0.0 
</span><br><br><span style="font-family: monospace;">&nbsp;[mark] 
</span><br><span style="font-family: monospace;">&nbsp;secret&nbsp;=&nbsp;mysecret 
</span><br><span style="font-family: monospace;">&nbsp;deny=0.0.0.0/0.0.0.0 
</span><br><span style="font-family: monospace;">&nbsp;permit=209.16.236.73/255.255.255.0 
</span><br><span style="font-family: monospace;">&nbsp;permit=127.0.0.1/255.255.255.0 
</span><br><span style="font-family: monospace;">&nbsp;read&nbsp;=&nbsp;system,call,log,verbose,command,agent,user 
</span><br><span style="font-family: monospace;">&nbsp;write&nbsp;=&nbsp;system,call,log,verbose,command,agent,user</span></strong></div>
<div><span style="font-family: monospace;"></span>&nbsp;</div>
<div><span style="font-family: monospace;"><font face="Arial" size="2">Para verificar 
se tudo funcionou basta acessar o servidor Asterisk através de outra máquina com 
Windows entrando via Telnet. Com um comando como o abaixo:</font></span></div>
<div><span style="font-family: monospace;"><font face="Arial" size="2"></font></span>&nbsp;</div>
<div><span style="font-family: monospace;"><strong>telnet 192.168.0.1 
5038</strong></span></div>
<div><span style="font-family: monospace;"></span>&nbsp;</div>
<div><span style="font-family: monospace;"><font face="Arial" size="2">Irá aparecer a 
seguinte mensagem:</font></span></div>
<div><span style="font-family: monospace;"><font size="2"></font></span>&nbsp;</div>
<div><span style="font-family: monospace;"><strong>Asterisk Call 
Manager/1.0</strong></span></div>
<div><span style="font-family: monospace;"><font size="2"></font></span>&nbsp;</div>
<div><span style="font-family: monospace;"><font size="2"></font></span>&nbsp;</div>
<div><span style="font-family: monospace;"><font face="Arial" size="2">Agora basta 
digitar:</font></span></div>
<div><span style="font-family: monospace;"></span><span style="font-family: monospace;"><font face="Arial" size="2"></font></span>&nbsp;</div>
<div><span style="font-family: monospace;"><strong>Action: 
login</strong></span></div>
<div><span style="font-family: monospace;"><strong>Username: 
mark</strong></span></div>
<div><span style="font-family: monospace;"><strong>Secret: 
mysecret</strong></span></div>
<div><span style="font-family: monospace;"><font face="Arial" size="2"></font></span>&nbsp;</div>
<div><span style="font-family: monospace;"><font face="Arial" size="2">Obs: Lembrando 
que qualquer caracter digitado errado, mesmo sendo apagado depois e corrigido 
faz com que o comando não funcione. Por isso não se preocupe se digitar uma 
palavra errada e depois apagar e o comando não funcionar. Basta digitar de novo 
sem errar nada. Para que isso não ocorra aconselho que tudo seja digitado em um 
bloco de notas e depois copiado para o prompt do DOS. Evitando erros e gardando 
para futura utilização dos comandos.</font></span></div>
<div><span style="font-family: monospace;"><font face="Arial" size="2"></font></span><span style="font-family: monospace;"><font face="Arial" size="2"></font></span>&nbsp;</div>
<div><span style="font-family: monospace;"><font face="Arial" size="2">E dar dois 
[<strong>enter</strong>].</font></span></div>
<div><span style="font-family: monospace;"><font face="Arial" size="2">E irá aparecer 
a mensagem:</font></span></div>
<div><span style="font-family: monospace;"><font face="Arial" size="2"></font></span>&nbsp;</div>
<div><span style="font-family: monospace;"><strong>Response: 
Success</strong></span></div>
<div><span style="font-family: monospace;"><strong>Message: Authentication 
accepted</strong></span></div>
<div><span style="font-family: monospace;"><strong></strong></span>&nbsp;</div>
<div><span style="font-family: monospace;"><font face="Arial" size="2">Para realizar 
uma ligação e tranferir para um ramal pode-se usar o comando 
<strong>originate</strong>. Como no exemplo:</font></span></div>
<div><span style="font-family: monospace;"></span>&nbsp;</div>
<div><span style="font-family: monospace;"><strong>Action: Originate<br>Channel: 
SIP/123<br>Context: default<br>Exten: 123</strong></span></div>
<div><span style="font-family: monospace;"><strong>Priority: 
1</strong></span></div>
<div><span style="font-family: monospace;"></span><span style="font-family: monospace;"></span>&nbsp;</div>
<div><span style="font-family: monospace;"><font face="Arial" size="2">Neste exemplo 
eu liguei para meu próprio softphone e transferi a ligação para mim 
também.</font></span></div>
<div><span style="font-family: monospace;"><font face="Arial" size="2"></font></span>&nbsp;</div>
<div><span style="font-family: monospace;"><font face="Arial" size="2">Para sair 
basta digitar:</font></span></div>
<div><span style="font-family: monospace;"><font face="Arial" size="2"></font></span>&nbsp;</div>
<div><span style="font-family: monospace;"><strong>action: 
logoff</strong></span></div>
<div><span style="font-family: monospace;"></span>&nbsp;</div>
<div><span style="font-family: monospace;"><font face="Arial" size="2">E terá como 
resposta:</font></span></div>
<div><span style="font-family: monospace;"></span>&nbsp;</div>
<div><span style="font-family: monospace;"><strong>Response: Goodbye<br>Message: 
Thanks for all the fish.</strong></span></div>
<div><span style="font-family: monospace;"><strong>Conexão ao host 
perdida.</strong></span></div>
<div><span style="font-family: monospace;"></span>&nbsp;</div>
<div><span style="font-family: monospace;"><font face="Arial" size="2">Blz, mas e ai 
toda vez q eu for ligar vou precisar ir no telnet?</font></span></div>
<div><span style="font-family: monospace;"><font face="Arial" size="2">Com isso 
cheguei ao <strong>Asterisk-Java</strong>. Uma biblioteca de classes em java 
para facilitar o acesso ao Asterisk Manager.</font></span></div>
<div><span style="font-family: monospace;"><font face="Arial" size="2">Para utilizar 
o Asterisk-Java basta criar um projeto em java e importar o arquivo .jar do 
Asterisk-Java para o projeto.</font></span></div>
<div><span style="font-family: monospace;"><font face="Arial" size="2">Após isso é só 
criar uma classe utilizando essa biblioteca. Como no exemplo 
abaixo:</font></span></div>
<div><span style="font-family: monospace;"><font face="Arial" size="2"></font></span>&nbsp;</div>
<div><span style="font-family: monospace;"><strong>import 
java.io.IOException;</strong></span></div>
<div><strong></strong>&nbsp;</div>
<div><span style="font-family: monospace;"><strong>import 
org.asteriskjava.manager.AuthenticationFailedException;<br>import 
org.asteriskjava.manager.ManagerConnection;<br>import 
org.asteriskjava.manager.ManagerConnectionFactory;<br>import 
org.asteriskjava.manager.ManagerEventListener;<br>import 
org.asteriskjava.manager.TimeoutException;<br>import 
org.asteriskjava.manager.action.StatusAction;<br>import 
org.asteriskjava.manager.event.ManagerEvent;</strong></span></div>
<div><strong></strong>&nbsp;</div>
<div><span style="font-family: monospace;"><strong>public class HelloEvents 
implements ManagerEventListener<br>{<br>&nbsp;&nbsp;&nbsp; private 
ManagerConnection managerConnection;</strong></span></div>
<div><strong></strong>&nbsp;</div>
<div><span style="font-family: monospace;"><strong>&nbsp;&nbsp;&nbsp; public 
HelloEvents() throws IOException<br>&nbsp;&nbsp;&nbsp; 
{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ManagerConnectionFactory factory 
= new 
ManagerConnectionFactory(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
"192.168.0.1", "mark", "mysecret");</strong></span></div>
<div><strong></strong>&nbsp;</div>
<div><span style="font-family: monospace;"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
this.managerConnection = 
factory.createManagerConnection();<br>&nbsp;&nbsp;&nbsp; }</strong></span></div>
<div><strong></strong>&nbsp;</div>
<div><span style="font-family: monospace;"><strong>&nbsp;&nbsp;&nbsp; public void 
run() throws IOException, 
AuthenticationFailedException,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
TimeoutException, InterruptedException<br>&nbsp;&nbsp;&nbsp; 
{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // register for 
events<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
managerConnection.addEventListener(this);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // connect to Asterisk and log 
in<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
managerConnection.login();</strong></span></div>
<div><span style="font-family: monospace;"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<font size="2">
</font><blockquote dir="ltr" style="margin-right: 0px;">
<font size="2">  </font><blockquote dir="ltr" style="margin-right: 0px;">
<font size="2">    </font><p align="left"><font size="3">OriginateAction originateAction = <b><font color="#7f0055">new</font></b><font color="#7f0055"></font></font> OriginateAction();</p>
    <p align="left">originateAction.setChannel(<font color="#2a00ff">"SIP/123"</font>);</p>
    <p align="left">originateAction.setContext(<font color="#2a00ff">"default"</font>);</p>
    <p align="left">originateAction.setExten(<font color="#2a00ff">"123"</font>);</p>
    <p align="left">originateAction.setPriority(1);</p>
    <p align="left">originateAction.setTimeout(<b><font color="#7f0055">new</font></b> Long(60000));</p>
    <p align="left"></p>
    <font color="#0000c0">managerConnection</font>.sendAction(originateAction);<BR></blockquote></blockquote>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
// wait 10 seconds for events to come 
in<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
Thread.sleep(10000);</strong></span></div>
<div><strong></strong>&nbsp;</div>
<div><span style="font-family: monospace;"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
// and finally log off and 
disconnect<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
managerConnection.logoff();<br>&nbsp;&nbsp;&nbsp; }</strong></span></div>
<div><strong></strong>&nbsp;</div>
<div><span style="font-family: monospace;"><strong>&nbsp;&nbsp;&nbsp; public void 
onManagerEvent(ManagerEvent event)<br>&nbsp;&nbsp;&nbsp; 
{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // just print received 
events<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
System.out.println(event);<br>&nbsp;&nbsp;&nbsp; }</strong></span></div>
<div><strong></strong>&nbsp;</div>
<div><span style="font-family: monospace;"><strong>&nbsp;&nbsp;&nbsp; public 
static void main(String[] args) throws Exception<br>&nbsp;&nbsp;&nbsp; 
{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HelloEvents 
helloEvents;</strong></span></div>
<div><strong></strong>&nbsp;</div>
<div><span style="font-family: monospace;"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
helloEvents = new HelloEvents();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
helloEvents.run();<br>&nbsp;&nbsp;&nbsp; }<br>}</strong></span></div>
<div><span style="font-family: monospace;"><font face="Arial" size="2"></font></span>&nbsp;</div>
<div><span style="font-family: monospace;"><font face="Arial" size="2">Essa classe 
faz a mesma coisa que foi feita com o telnet. Realiza uma ligação para o meu 
ramal e transfere o canal para o meu ramal também.&nbsp;Na vida real não tem 
muita utilidade mas para fazer um teste você só vai precisar de um X-Lite 
configurado com o ramal 123.</font></span></div>
<div><span style="font-family: monospace;"><font face="Arial" size="2"></font></span>&nbsp;</div>
<div><span style="font-family: monospace;"><font face="Arial" size="2">Tomara 
que&nbsp;esse tutorial&nbsp;possa ajudar alguém. Ou pelo menos mostrar mais uma 
funcionalidade do Asterisk.</font></span></div>
<div><span style="font-family: monospace;"><font face="Arial" size="2"></font></span>&nbsp;</div>
<div><span style="font-family: monospace;"><font face="Arial" size="2">Abraço a 
todos,</font></span></div>
<div><span style="font-family: monospace;"><font face="Arial" size="2"></font></span>&nbsp;</div>
<div><span style="font-family: monospace;"><font face="Arial" size="2">Silvio 
Netto</font></span></div>
<div><span style="font-family: monospace;"><font face="Arial" size="2">Asterisk 
Counter 241</font></span></div>
<div><span style="font-family: monospace;"><font face="Arial" size="2"></font></span>&nbsp;</div>
<div><span style="font-family: monospace;"><font face="Arial" size="2"></font></span>&nbsp;</div>
<div><span style="font-family: monospace;"><font face="Arial" size="2"></font></span>&nbsp;</div>
<div><span style="font-family: monospace;"><font face="Arial" size="2"></font></span>&nbsp;</div>
<div><span style="font-family: monospace;"></span>&nbsp;</div>
<div><span style="font-family: monospace;"></span>&nbsp;</div>
<div><span style="font-family: monospace;"><font size="2"></font></span>&nbsp;</div>
</blockquote><br /><hr />O Windows Live Spaces está aqui! Descubra como é fácil criar seu espaço na Web e sua rede amigos. <a href='http://spaces.live.com/signup.aspx' target='_new'>Confira!</a></body>
</html>