miércoles, 10 de noviembre de 2010

Data API Providers

Con el lanzamiento de Asterisk 1.8, en octubre del presente año, se incorporaron varias características nuevas, las cuales iremos comentando a medida que las vallamos testeando. Hoy nos centraremos en una utilidad desarrollada por Eliel Sardañons, un desarrollador Argentino que participó del pasado Google Summer of Code 2010. Esta nueva herramienta permite obtener información detallada sobre Asterisk y cada uno de sus módulos, aplicaciones, channels, etc. los cuales son denominados "Providers".

Sin más preámbulos, vamos a la acción y veamos en funcionamiento esta API. Para acceder a la información que necesitemos, lo primero que debemos saber es cuales son los Providers que disponemos y que nivel de de información nos interesa saber. Para ello debemos ejecutar, el siguiente comando:

*CLI> data show providers
/asterisk/channel/iax2/peers (get) [chan_iax2.c]
/asterisk/channel/iax2/users (get) [chan_iax2.c]
/asterisk/channel/dahdi/version (get) [chan_dahdi.c]
/asterisk/channel/dahdi/status (get) [chan_dahdi.c]
/asterisk/channel/dahdi/channels (get) [chan_dahdi.c]
/asterisk/channel/agent/list (get) [chan_agent.c]
/asterisk/channel/sip/peers (get) [chan_sip.c]
/asterisk/core/hints (get) [pbx.c]
/asterisk/core/channels (get) [channel.c]
/asterisk/core/channeltypes (get) [channel.c]
/asterisk/application/voicemail/list (get) [app_voicemail.c]
/asterisk/application/queue/list (get) [app_queue.c]
/asterisk/application/meetme/list (get) [app_meetme.c]

El resultado del comando anterior nos muestra la lista de Providers con su respectivo nivel de información, separado por barras (/). Por ejemplo, si únicamente nos interesa ver los datos relacionados con los Peers de IAX2, podríamos ejecutar lo siguiente:

*CLI> data get /asterisk/channel/iax2/peers
peers
  peer
      smoothing: False
      pokefreqok: 60000
      inkeys: ""
      host: "XXX.XXX.XXX.XXX"
      encryption: "no"
      mailbox: ""
      mohinterpret: ""
      cid_num: ""
      parkinglot: ""
      expiry: 60
      dbsecret: ""
      maxcallno: 0
      maxms: 2000
      status: "OK (1 ms)"
      trunk: True
      port: 4569
      regexten: ""
      outkey: ""
      historicms: 1
      mask: "255.255.255.255"
      dynamic: False
      zonetag: ""
      username: "USUARIO"
      pokefreqnotok: 10000
      secret: "CLAVE"
      peercontext: ""
      callno: 0
      mohsuggest: ""
      lastms: 1
      name: "NOMBRE PEER"
      cid_name: ""
      context: ""
      codecs
          codec
              frame_length: 80
              samplespersecond: 8000
              name: "alaw"
              description: "G.711 A-law"

A medida que vamos Quitando niveles, nos dará más información. Por ejemplo si nos interesa saber todo lo que pasa en Asterisk en general, solamente debemos ejecutar CLI*> data get /asterisk

Como se podrá apreciar, la información que este devuelve es muy completa y puede ser de gran utilidad para el desarrollo de aplicaciones de monitoreo de Asterisk.

Para cerrar este artículo, voy a mostrar como es posible llamar remotamente a esta API a través del AMI.

Action: Command
ActionID: test
Command: data get Asterisk/channel/iax2/peers \r\n\n

No hay comentarios:

Publicar un comentario