Chan_local, A2Billing y números geográficos

El otro día un cliente me ha pedido este tipo de solución:

alquilar un numero geográfico y enrutar las llamadas entrantes primero a un numero fijo y si este no contestara dentro de 15 segundos, a un numero móvil.

Desde un punto de vista de Asterisk este tipo de configuración no tendría mayores problemas. Pero yo tenía el problema de como facturarle las llamadas con A2Billing.

Después de pensarlo un poco he encontrado este tipo de solución.

He creado una cuenta en A2Billing para el cliente: supongamos que su numero de cuenta sea: 123456789

He enrutado la llamadas entrantes del DID a una numero de extensión de Asterisk (la extensión 1000). Una nota: es muy importante que puedan autenticar las llamadas entrantes de los números geográficos que alquilen para evitar de tener allowguest=yes en el sip. conf. Normalmente la mayoría de proveedores de DID proveen las direcciones IP o el range de direcciones IP de donde llegarán las llamadas (los INVITE).

En Asterisk, en el contexto donde llegan las llamadas del DID he puesto:

exten => 1000,1,Goto(ca-phones,1,1)
exten => 1000,n,Hangup

es decir he enviado todas las llamada procedentes de ese numero geográfico al contexto ca-phones, extensión 1, prioridad 1

El contexto ca-phones lo he configurado de esta manera:

[ca-phones]
exten => 1,1,Dial(local/100@ca-phones/n,15)
same => n,GotoIf($["${DIALSTATUS}" = "NOANSWER" | "${DIALSTATUS}" = "BUSY" ]?4)
same => n,hangup
same => n,Dial(local/200@ca-phones/n,45)
same => n,hangup

exten => 100,1,Set(CALLERID(num)=123456789)
same => n,Set(CDR(accountcode)=${CALLERID(num)})
same => n,Goto(voztovoice,57100000000,1)
same => n,Hangup

exten => 200,1,Set(CALLERID(num)=123456789)
same => n,Set(CDR(accountcode)=${CALLERID(num)})
same => n,Goto(voztovoice,57300000000,1)
same => n,Hangup

En el primer bloque utilizo el chan_local para enviar la llamada a la extensión 100 contexto ca-phones. En la extensión 100 asocio al CALLERID al numero de tarjeta del cliente y en el CDR accountcode hago lo mismo. De esta manera A2Billing cursará la llamada porque reconoce el numero de tarjeta del cliente y al mismo tiempo sabe cual es la cuenta que hay que facturar. Luego envío la llamada al contexto voztovoice, extensión 57100000000 (el numero del teléfono fijo del cliente), prioridad 1. En el contexto voztovoice, prioridad 1 arranca el AGI de a2billing.

Como en la línea del chan_local he puesto la opción 15, si dentro de 15 segundos nadie contesta, el dialplan continuará con la segunda línea del primer bloque. Ahí se comprueba que la llamada no ha sido contestada o si el numero estaba ocupado. Si se verifica una de estas dos condiciones se sigue con la prioridad 4 donde, utilizando otra vez el canal chan_local, se enviará la llamada a la extensión 200 contexto ca-phones. Aquí si seguirán los mismo pasos vistos para la extensión 100 con la única diferencia que ahora el numero a marcar será un celular.

En la primera prueba que hice en la línea:

exten => 1,1,Dial(local/100/n,15)

no había puesto la opción /n después de la extensión 100. Todo funcionaba bien solo que en A2billing me aparecía la llamada pero con una duración de cero segundo (no se facturaba).

Leyendo en Voip-info - Chan_local me he dato cuenta que en mi caso la opción /n se necesitaba.

Esa opción se pone si se quiere que el chan_local actué como un normal canal (SIP – IAX) y esto era lo que yo necesitaba.

Espero les sirva.

Vota el Articulo: 

Sin votos (todavía)
Evalúa la calidad del articulo
Suscribirse a Comentarios de "Chan_local, A2Billing y números geográficos" Suscribirse a VozToVoice - Todos los comentarios