Accion Originate en asterisk y registros cdr.

Estoy usando un para originar llamadas desde un servidor web. Abro un socket y le mando el comando del manager con los siguientes parámetros: un canal y número para originar un extemo de la llamada y una extensión y su contexto para el otro extremo.

Action:
Channel: Zap/g1/0952563723
Context: alcatel
Exten: 646554554

Puedes mandar más parámetros. Se pueden consultar aqui

Una vez que se contesta un extremo de la llamada, se origina la segunda llamada y si es contestada las une haciendo .

a) -> NumeroA
b) -> NumeroB
c) NumeroA <- AsteriskBridge -> NúmeroB

El problema que he tenido es a la hora de la tarificación. Para saber el coste real de la llamada necesito saber cuantos segundos dura ‘a’ y cuántos ‘b’. Pero en el Master.csv solo refleja el registro del para ‘c’.

Esto lo he usado usando las funciones ResetCDR() y ForkCDR().

En mi ejemplo, en el contexto ‘alcatel’, por ejemplo para las llamadas a móbiles nacionales, dejaría la configuración del contexto de la siguiente manera.

exten => _6XXXXXXXX,n,ResetCDR()
exten => _6XXXXXXXX,n,Dial(zap/g1/0${EXTEN},90,TtA(c2c/grabación))
exten => _6XXXXXXXX,n,ForkCDR()

ResetCDR resetearía algunos valores para el registro de la llamada actual y lo almacenaría.
ForkCDR generaría un nuevo registro con el que podríamos distinguir la duración de la llamada que acabamos de establecer de la de la duración global de la llamada.

No creo que sea la mejor forma para hacerlo pero es la única con la que he podido. Si alguien sabe como hacer esto está invitado a comentarlo.

Related posts

Si te ha gustado este post, suscríbete al feed.

Categorías: operating systems, voip

Deja una respuesta