Los nuevos cambios que nos traerá Asterisk 13.5.0

Se acaba de publicar la nueva y primera release candidate de Asterisk, para la versión  Asterisk 13.5.0 y Matthew Jordan cuenta los nuevos cambios que traerá la nueva versión.

Asterisk

Esta nueva release trae unos cambios interesantes.  Con estos se nos hará más construir soluciones, tanto para  los integradores y desarrolladores que componen el ecosistema de Asterisk.

Sorcery Caching

Sorcery es una capa de abstracción para los datos de configuración de Asterisk. Permite mejor manejo y acceso a los datos al  crear, actualizar, eliminar y obtener desde bases de datos y distintos backends.

Ahora trae full soporte para la configuración del cache:

  • Control de la tiempo de caducación de los objetos.
  • Numeros máximos de objetos a incluir en el cache.
  • Forzar actualización de los objectos en la cache.
  • Opciones para configurar y controlar la eliminación de la cache.
  • Comandos para AMI y CLI para trabajar con el cache.

Puedes leer mas en Sorcery Caching

Operaciones de los modulos mediante ARI

ARI es la Asterisk REST Interface, una API RESTFul que permite y está enfocada a la creación de aplicaciones para Asterisk.  La idea de ARI es dar la caracteristica del desarrollo de modulos o aplicaciones sin la necesidad que sea en C, ya que la puedes construir en cualquier lenguaje usando el sistema de API.  Actualmente existen bibliotecas para distintos lenguajes:

Lib Lenguaje Sitio/Url
ari-py Python https://github.com/asterisk/ari-py
AsterNET.ARI C# / .NET https://asternetari.codeplex.com/
ari4java Java https://github.com/l3nz/ari4java
node-ari-client JavaScript (node) https://github.com/asterisk/node-ari-client
phpari PHP http://www.phpari.org/
asterisk-ari-client Ruby https://github.com/svoboda-jan/asterisk-ari

Ahora la nueva funcionalidad que trae la 13.5.0 es que  puede manipular las operaciones de los modulos.  Operaciones como comunes como load, unload, reload, etc..

Por ejemplo, un reload al modulo chan chan_sip  usando curl sería

curl -v -X PUT -u usuario:password http://127.0.0.1:8088/ari/asterisk/modules/chan_sip

Con esto verás en la CLI de Asterisk

astdev*CLI> 
 -- Reloading module 'chan_sip.so' (Session Initiation Protocol (SIP))
 Reloading SIP
astdev*CLI>

 

Configuración mediante Push

Esta es -a modo personal-  una de las grandes nuevas de esta release. Generalmente, ya sea mediante realtime o en los archivos de configuración, uno realiza cambios (actualizaciones) a las configuraciones y luego de esto aplicas un reload al modulo involucrado.

Ahora es posible realizar una configuración “on the fly”, o sea mando una determinada configuración mediante un request y esta queda aplicada :), con esto me desentiendo de los reload y si los cambios hechos y  aplicados.

Como ejemplo,  vamos usar la configuración de un endpoint con PJSIP. Para habilitar ARI te recomiendo leer Getting Started with ARI

Este ejemplo agregar el endpoind a res_pjsip llamado policarpo, esto usando curl

curl -X PUT -H "Content-Type: application/json" -u usuario:password -d '{"fields": [ {"attribute": "context", "value": "default" },
 {"attribute": "auth", "value": "policarpo" }, {"attribute": "aors", "value": "policarpo"} ] }' 
http://localhost:8088/ari/asterisk/config/dynamic/res_pjsip/endpoint/policarpo

Verás en la CLI algo como:

astdev*CLI> Endpoint policarpo is now Unreachable

 

Si muestras los endpoints debes ejecutar en la CLI pjsip show endpoints

astdev*CLI> pjsip show endpoints

Endpoint: <Endpoint/CID.....................................> <State.....> <Channels.>
 I/OAuth: <AuthId/UserName...........................................................>
 Aor: <Aor............................................> <MaxContact>
 Contact: <Aor/ContactUri...............................> <Status....> <RTT(ms)..>
 Transport: <TransportId........> <Type> <cos> <tos> <BindAddress..................>
 Identify: <Identify/Endpoint.........................................................>
 Match: <ip/cidr.........................>
 Channel: <ChannelId......................................> <State.....> <Time(sec)>
 Exten: <DialedExten...........> CLCID: <ConnectedLineCID.......>
 =========================================================================================

Endpoint: policarpo Invalid 0 of inf

astdev*CLI>

Ahí podrás ver como fue agregado el endpoints. Si quieres empezar a usar pjsip te recomiendo leer Building and Installing pjproject

Como indique, actualmente está disponible la primera release candidate, la puedes descargar y probar estas nuevas características.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *