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.
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.