Anda di halaman 1dari 21

Asterisk

Asterisk Manager Interface


ASTERISK MANAGER API

- Permite a una aplicacin cliente


conectarse a una instancia de Asterisk va
TCP/IP y ejecutar comandos o leer
eventos.
- Generalmente, se utiliza el puerto 5038.
- Utiliza un protocolo en modo texto que
consiste en lneas de tipo "clave: valor".
- Conjunto de lneas: paquete.
Julin Dunayevich, Lzaro Baca,
Andrs Brassara, Santiago Alberch,
Antonio Lobo 2
MANAGER: PROTOCOLO

1) Se debe establecer una sesin con el


manager antes de ejecutar comandos.
2) Los paquetes pueden ser transmitidos en
ambas direcciones.
3) El orden de las lneas dentro del paquete
es indistinto.
4) Las lneas se delimitan con CRLF y una
lnea en blanco (2 CRLF consecutivos)
indica el final del paquete.
Julin Dunayevich, Lzaro Baca,
Andrs Brassara, Santiago Alberch,
Antonio Lobo 3
MANAGER: TIPOS DE PAQUETE

El tipo de paquete est dado por las siguientes


claves:
Action: paquete originado en el cliente
requiriendo llevar a cabo una accin particular.
Contiene el nombre de la accin y los parmetros
de la misma.
Response: la respuesta del Asterisk a la Accin
requerida por el cliente.
Event: datos correspondientes a un evento
generado dentro del ncleo de Asterisk o mdulo.
Julin Dunayevich, Lzaro Baca,
Andrs Brassara, Santiago Alberch,
Antonio Lobo 4
MANAGER: AUTENTICACIN
Las cuentas de usuario se configuran en /etc/asterisk/manager.conf.
Por ej:

[general]
enabled=yes

[admin]
secret = claveadmin
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.0
read = system,call,log,verbose,command,agent,user,originate
write = system,call,log,verbose,command,agent,user,originate

En este caso, "admin" es el nombre de usuario, la clave es "claveadmin" y


slo se permiten conexiones para este usuario va localhost. El resto de las
lneas establecen permisos (r,w,r/w) para cada clase (system, call, etc.).

Julin Dunayevich, Lzaro Baca,


Andrs Brassara, Santiago Alberch,
Antonio Lobo 5
MANAGER: CONEXIN
Enviar un mensaje con accin "Login", junto con el
usuario y la clave como parmetros. Por ej:

Action: login
Username: admin
Secret: adminclave
Events: off

(La ltima lnea indica que la conexin no recibir


eventos por parte del Asterisk.)

Julin Dunayevich, Lzaro Baca,


Andrs Brassara, Santiago Alberch,
Antonio Lobo 6
MANAGER: CONEXIN
Se recibir por parte del servidor

Asterisk Call Manager/1.0


Response: Success
Message: Authentication accepted

O, en caso de error:

Asterisk Call Manager/1.0


Response: Error
Message: Authentication failed

Julin Dunayevich, Lzaro Baca,


Andrs Brassara, Santiago Alberch,
Antonio Lobo 7
MANAGER: PAQUETES ACTION
Se pueden proveer parmetros adicionales (por ej, un
nmero a llamar o canal a desconectar).
En el caso que la accin determine la ejecucin de una
entrada del plan de marcacin, tambin se pueden
proveer variables.
Formato:
Action: <action type><CRLF>
<Key 1>: <Value 1><CRLF>
<Key 2>: <Value 2><CRLF>
...
Variable: <Variable 1>=<Value 1><CRLF>
Variable: <Variable 2>=<Value 2><CRLF>
...
<CRLF>

Julin Dunayevich, Lzaro Baca,


Andrs Brassara, Santiago Alberch,
Antonio Lobo 8
MANAGER: PAQUETES ACTION
Algunos ejemplos de acciones
Command: ejecuta un comando (por ej, reload) (privilege: command,all)
DAHDIHangup: cuelga un canal DAHDI
DAHDIShowChannel: muestra los canales DAHDI
DAHDITransfer: transfiere un canal DAHDI
Events: controla el flujo de los eventos
Hangup: colgar canal (privilege: call,all)
IAXpeers: lista los peers IAX (privilege: system,all)
ListCommands: lista los comando disponibles del manager
Logoff: logoff del manager
MailboxCount: verifica la cantidad de mensajes en el mailbox (privilege:
call,all)
MailboxStatus: verifica el status del mailbox (privilege: call,all)

Julin Dunayevich, Lzaro Baca,


Andrs Brassara, Santiago Alberch,
Antonio Lobo 9
MANAGER: PAQUETES ACTION
Algunos ejemplos de acciones (cont.)
Monitor: comienza a monitorear un canal (graba un archivo con el audio)
(privilege: call, all).
Originate: origina llamada (privilege: call,all,originate)
Park: realiza un parking de la llamada.
ParkedCalls: lista las parked calls (privilege: call, all).
QueueAdd: agrega un miembro a la cola (privilege: agent,all)
Queues: devuelve configuracin e informacin estadstica de las colas.
QueueRemove: remueve un miembro de la cola (privilege: agent,all)
SIPpeers: lista los peers SIP (privilege: system,all)
Status: Status (privilege: call,all)
Redirect: transfiere una llamada (privilege: call, all)
UpdateConfig: actualiza configuracin bsica del servidor (privilege:
config,all)

Julin Dunayevich, Lzaro Baca,


Andrs Brassara, Santiago Alberch,
Antonio Lobo 10
MANAGER: CLI
Los siguientes comandos pueden ser ejecutados
en la CLI para obtener informacin sobre el
manager:

manager show command <command>: muestra


informacin sobre el comando <command> del manager
manager show commands: lista todos los comandos
del manager
manager show connected: lista los usuarios
conectados al manager
manager show users: lista los usuarios configurados
para acceder al manager
Julin Dunayevich, Lzaro Baca,
Andrs Brassara, Santiago Alberch,
Antonio Lobo 11
MANAGER: EJEMPLO LLAMADA
El cliente enva:
ACTION: Originate
Channel: SIP/12345
Exten: 1234
Priority: 1
Context: default
El cliente recibe, en caso de xito:
Event: Newchannel
Channel: SIP/12345-ed8f
State: Down
CallerID:
Uniqueid: 1124982019.19157

Julin Dunayevich, Lzaro Baca,


Andrs Brassara, Santiago Alberch,
Antonio Lobo 12
MANAGER: EJEMPLO LLAMADA
El cliente recibe, en caso de xito (cont):

Event: Newchannel
Channel: SIP/12345-ed8f
State: Ringing
CallerID:
Uniqueid: 1124982019.19157

Event: Newstate
Channel: SIP/12345-ed8f
State: Up
CallerID:
Uniqueid: 1124982019.19157
Julin Dunayevich, Lzaro Baca,
Andrs Brassara, Santiago Alberch,
Antonio Lobo 13
MANAGER: EJEMPLO LLAMADA
El cliente recibe, en caso de xito (cont):
Event: Newexten
Channel: SIP/12345-ed8f
Context: default
Extension: 1234
Priority: 1
Application: Dial
AppData: SIP/pepe
Uniqueid: 1124982019.19157

Response: Success
Message: Originate successfully queued

Julin Dunayevich, Lzaro Baca,


Andrs Brassara, Santiago Alberch,
Antonio Lobo 14
MANAGER: EJEMPLO LLAMADA
El cliente recibe, en caso de error:

Event: Newexten
Channel: OutgoingSpoolFailed
Context: default
Extension: failed
Priority: 1
Application: SetVar
AppData: extension=failed
Uniqueid: 1124981514.58775

Julin Dunayevich, Lzaro Baca,


Andrs Brassara, Santiago Alberch,
Antonio Lobo 15
MANAGER: EJEMPLO LLAMADA
El cliente recibe, en caso de error (cont):

Event: Hangup
Channel: OutgoingSpoolFailed
Uniqueid: 1124981514.58775
Cause: 0

Response: Error
Message: Originate failed

Julin Dunayevich, Lzaro Baca,


Andrs Brassara, Santiago Alberch,
Antonio Lobo 16
MANAGER: Ejemplo en PHP
<?php

// Apertura del socket


$socket = fsockopen("127.0.0.1","5038", $errno, $errstr, $timeout);

// Login del usuario


fputs($socket, "Action: Login\r\n");
fputs($socket, "UserName: admin\r\n");
fputs($socket, "Secret: amp111\r\n\r\n");

// Lista los comandos disponibles para la clave Action


fputs($socket, "Action: ListCommands\r\n\r\n");

// Logoff del usuario


fputs($socket, "Action: Logoff\r\n\r\n");

Julin Dunayevich, Lzaro Baca,


Andrs Brassara, Santiago Alberch,
Antonio Lobo 17
MANAGER: Ejemplo en PHP
// Obtiene la respuesta del manager
while (!feof($socket)) {
$wrets .= fread($socket, 8192);
}

// Cierra el socket
fclose($socket);

// Muestra la salida del manager por pantalla


echo <<<ASTERISKMANAGEREND
ASTERISK MANAGER OUTPUT:
$wrets
ASTERISKMANAGEREND;

?>

Julin Dunayevich, Lzaro Baca,


Andrs Brassara, Santiago Alberch,
Antonio Lobo 18
MANAGER: PROBLEMAS
La documentacin sobre el protocolo y la funcionalidad
del manager est incompleta.

No es estable con el manejo de una cantidad grande de


conexiones a la vez.

Es recomendada la utilizacin de un Proxy (por, ej


ProxyAstMan), para sistemas que hagan un uso
intensivo del manager, como pueden ser sistemas de
monitoreo, panel de control y campaas/encuestas
telefnicas.

Julin Dunayevich, Lzaro Baca,


Andrs Brassara, Santiago Alberch,
Antonio Lobo 19
Ejercicio 11: AMI
Administrar y utilizar la funcionalidad
del servidor Asterisk va la AMI

Julin Dunayevich, Lzaro Baca,


Andrs Brassara, Santiago Alberch,
Antonio Lobo 20
Curso elaborado por
Julin Dunayevich, Lzaro Baca, Andrs Brassara,
Santiago Alberch y Antonio Lobo
julian@dunayevich.com
lazaro.baca@gmail.com
abrassara@gmail.com
salberch@gmail.com
antoniwolf@gmail.com
Detalles de la licencia:
http://creativecommons.org/licenses/by-nc-sa/2.5/deed.es_AR
Autores: Julin Dunayevich, Lzaro Baca, Andrs Brassara, Santiago
Alberch, Antonio Lobo
(cc) Creative Commons - Attribute Non-Commercial Share-Alike 2.5
Basndose en: Irontec: contacto@irontec.com (CC)
Asterisk, The Future of Telephony, Jim Meggelen, Jared Smith, and Leif Madsen, OREILLY, 2005
Julin Dunayevich, Lzaro Baca,
Andrs Brassara, Santiago Alberch,
Antonio Lobo 21