<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> </div>
<div><font face="Arial" size="2">Estive tentando acessar um servidor Asterisk a
partir de uma máquina Windows realizar uma ligação e transferir 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 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> </div>
<div><strong><span style="font-family: monospace;">; </span><br><span style="font-family: monospace;"> ; Asterisk Call Management support
</span><br><span style="font-family: monospace;"> ; </span><br><span style="font-family: monospace;"> [general] </span><br><span style="font-family: monospace;"> enabled = yes </span><br><span style="font-family: monospace;"> port = 5038
</span><br><span style="font-family: monospace;"> bindaddr = 0.0.0.0
</span><br><br><span style="font-family: monospace;"> [mark]
</span><br><span style="font-family: monospace;"> secret = mysecret
</span><br><span style="font-family: monospace;"> deny=0.0.0.0/0.0.0.0
</span><br><span style="font-family: monospace;"> permit=209.16.236.73/255.255.255.0
</span><br><span style="font-family: monospace;"> permit=127.0.0.1/255.255.255.0
</span><br><span style="font-family: monospace;"> read = system,call,log,verbose,command,agent,user
</span><br><span style="font-family: monospace;"> write = system,call,log,verbose,command,agent,user</span></strong></div>
<div><span style="font-family: monospace;"></span> </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> </div>
<div><span style="font-family: monospace;"><strong>telnet 192.168.0.1
5038</strong></span></div>
<div><span style="font-family: monospace;"></span> </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> </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> </div>
<div><span style="font-family: monospace;"><font size="2"></font></span> </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> </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> </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> </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> </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> </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> </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> </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> </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> </div>
<div><span style="font-family: monospace;"><strong>action:
logoff</strong></span></div>
<div><span style="font-family: monospace;"></span> </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> </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> </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> </div>
<div><span style="font-family: monospace;"><strong>import
java.io.IOException;</strong></span></div>
<div><strong></strong> </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> </div>
<div><span style="font-family: monospace;"><strong>public class HelloEvents
implements ManagerEventListener<br>{<br> private
ManagerConnection managerConnection;</strong></span></div>
<div><strong></strong> </div>
<div><span style="font-family: monospace;"><strong> public
HelloEvents() throws IOException<br>
{<br> ManagerConnectionFactory factory
= new
ManagerConnectionFactory(<br>
"192.168.0.1", "mark", "mysecret");</strong></span></div>
<div><strong></strong> </div>
<div><span style="font-family: monospace;"><strong>
this.managerConnection =
factory.createManagerConnection();<br> }</strong></span></div>
<div><strong></strong> </div>
<div><span style="font-family: monospace;"><strong> public void
run() throws IOException,
AuthenticationFailedException,<br>
TimeoutException, InterruptedException<br>
{<br> // register for
events<br>
managerConnection.addEventListener(this);<br>
<br> // connect to Asterisk and log
in<br>
managerConnection.login();</strong></span></div>
<div><span style="font-family: monospace;"><strong>
<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> <br>
// wait 10 seconds for events to come
in<br>
Thread.sleep(10000);</strong></span></div>
<div><strong></strong> </div>
<div><span style="font-family: monospace;"><strong>
// and finally log off and
disconnect<br>
managerConnection.logoff();<br> }</strong></span></div>
<div><strong></strong> </div>
<div><span style="font-family: monospace;"><strong> public void
onManagerEvent(ManagerEvent event)<br>
{<br> // just print received
events<br>
System.out.println(event);<br> }</strong></span></div>
<div><strong></strong> </div>
<div><span style="font-family: monospace;"><strong> public
static void main(String[] args) throws Exception<br>
{<br> HelloEvents
helloEvents;</strong></span></div>
<div><strong></strong> </div>
<div><span style="font-family: monospace;"><strong>
helloEvents = new HelloEvents();<br>
helloEvents.run();<br> }<br>}</strong></span></div>
<div><span style="font-family: monospace;"><font face="Arial" size="2"></font></span> </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. 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> </div>
<div><span style="font-family: monospace;"><font face="Arial" size="2">Tomara
que esse tutorial 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> </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> </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> </div>
<div><span style="font-family: monospace;"><font face="Arial" size="2"></font></span> </div>
<div><span style="font-family: monospace;"><font face="Arial" size="2"></font></span> </div>
<div><span style="font-family: monospace;"><font face="Arial" size="2"></font></span> </div>
<div><span style="font-family: monospace;"></span> </div>
<div><span style="font-family: monospace;"></span> </div>
<div><span style="font-family: monospace;"><font size="2"></font></span> </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>