quien termina la llamada?

5,780 views
Skip to first unread message

axlaxl2010

unread,
Jun 9, 2010, 1:57:18 PM6/9/10
to asterisk-es
Hola a todos, tengo una cosnulta a ve si me pueden ayudar
como puedo saber quien terminó una llamada? quien la originó o quien
la contestó?
casos:
- cliente llama y el corta antes que atiendan la llamada (hay forma de
saber si fue el que originó quien cortó la llamada o algun problema en
el asterisk causo el corte?)
- en una llamada establecida se corto de repente (hay forma de saber
si fue el que originó quien cortó o fue el que contestó el que cortó
la llamada)

todas las comunicaciones son sip

gracias a todos

Saúl Ibarra Corretgé

unread,
Jun 9, 2010, 2:36:26 PM6/9/10
to aster...@googlegroups.com
2010/6/9 axlaxl2010 <axlax...@gmail.com>:

Todo en el CDR, o te falta algun dato ahi?


--
/Saúl
http://saghul.net | http://sipdoc.net

axlaxl2010

unread,
Jun 9, 2010, 3:34:22 PM6/9/10
to asterisk-es
tengo los cdr standar, pero que parámetro que indica quien terminó la
llamada?
agradezco si me puedes esclarecer esto


On 9 jun, 13:36, Saúl Ibarra Corretgé <sag...@gmail.com> wrote:
> 2010/6/9 axlaxl2010 <axlaxl2...@gmail.com>:

axlaxl2010

unread,
Jun 9, 2010, 4:26:48 PM6/9/10
to asterisk-es
Tengo los cdr standar :
`calldate`, `clid`,
`src`,`dst`,`dcontext`,`channel`,`dstchannel`,`lastapp`,
`lastdata`,`duration`,`billsec`,`disposition`,`amaflags`,`accountcode`,`userfield

alguno de estos me ayuda? agradezo su ayuda en despejarme esta duda


On 9 jun, 13:36, Saúl Ibarra Corretgé <sag...@gmail.com> wrote:
> 2010/6/9 axlaxl2010 <axlaxl2...@gmail.com>:
>

axlaxl2010

unread,
Jun 10, 2010, 3:51:06 PM6/10/10
to asterisk-es
Tengo los cdr standars, s me puedes auidar que cmapo es el que debo
analizar o cómo les agradeceria, veo todos los campos pero no se cual
es lo q necesito para diferenciar bien quien corto la llamada, me
parecerb q me falta algo

gracias

On 9 jun, 13:36, Saúl Ibarra Corretgé <sag...@gmail.com> wrote:
> 2010/6/9 axlaxl2010 <axlaxl2...@gmail.com>:
>

Saúl Ibarra Corretgé

unread,
Jun 10, 2010, 4:31:07 PM6/10/10
to aster...@googlegroups.com
2010/6/9 axlaxl2010 <axlax...@gmail.com>:

> tengo los cdr standar, pero que parámetro que indica quien terminó la
> llamada?
> agradezco si me puedes esclarecer esto
>

'dst' debería contener el dato que buscas. Sino, puedes guardarlo
desde el dialplan en el campo userfield.

Saludos,

LoThaR

unread,
Jun 10, 2010, 5:56:47 PM6/10/10
to aster...@googlegroups.com
Pero.… en el cdr no figura quien corto.

La pregunta es válida, aunque no conozco la respuesta.

lo más cercano sería ver las causas de Hangup en la variable HANGUPCAUSE.
Aunque suele ser esclarecedor para casos especiales.

Entiendo que en el caso que dices en ambas situaciones te devolverá
"16" - normal clearing.

Pruebalo. Evalúa esa variable en la extensión h.

Saludos.


El 10/06/10, Saúl Ibarra Corretgé <sag...@gmail.com> escribió:

> --
> Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org)
>
> Entra ahora en el canal de irc de Asterisk-ES para charlar en directo sobre
> VoIP y
> Asterisk: http://www.asterisk-es.org/
>
> ~~~~~ Normas de la lista Asterisk-ES: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> - Para anular la suscripción: asterisk-es...@googlegroups.com
>

axlaxl2010

unread,
Jun 10, 2010, 5:48:40 PM6/10/10
to asterisk-es
dst me guarga el numero llamado, en este caso, es decir una llamada
establecida, con que otro campo o de q forma me puedo dar cueta quien
termino la llamada? quien originó o quien contesto?
espero me puedan ayudar

On 10 jun, 15:31, Saúl Ibarra Corretgé <sag...@gmail.com> wrote:
> 2010/6/9 axlaxl2010 <axlaxl2...@gmail.com>:
>

Raúl Alexis Betancor Santana

unread,
Jun 11, 2010, 3:42:20 AM6/11/10
to aster...@googlegroups.com
On Wednesday 09 June 2010 21:26:48 axlaxl2010 wrote:
> Tengo los cdr standar :
> `calldate`, `clid`,
> `src`,`dst`,`dcontext`,`channel`,`dstchannel`,`lastapp`,
> `lastdata`,`duration`,`billsec`,`disposition`,`amaflags`,`accountcode`,`use
>rfield
>
> alguno de estos me ayuda? agradezo su ayuda en despejarme esta duda

Para terminar con este hilo ... que ya marea un poco ...

Respuesta corta: NO, con el CDR de Asterisk, ni con el Dialplan puedes saber
quien terminó primero la llamada.

Para saber lo que quieres, te toca tirar de los eventos del AMI, para pillar
el release del canal.

Saludos
--
Raúl Alexis Betancor Santana
Dimensión Virtual

José Ferney Franco Baquero

unread,
Jun 17, 2010, 2:03:58 PM6/17/10
to aster...@googlegroups.com
Hola Raúl.

La respuesta que das no es cierta. Ya que mediante el plan de marcación si es posible determinar quien cortó la llamada (por lo general), para ello es necesario usar la opción "g" del Dial:
    g    - Proceed with dialplan execution at the current extension if the
           destination channel hangs up.

De esta manera, si se tiene el siguiente contexto:

[Interno]
exten => _XXX,1,NoOp()
exten => _XXX,n,Set(DIALEDEXTEN=${EXTEN})
exten => _XXX,n,Dial(SIP/${EXTEN},45,gtT)
exten => _XXX,n,Goto(${DIALSTATUS})

exten => h,1,Goto(${DIALEDEXTEN},h-${DIALSTATUS})

exten => _XXX,n(BUSY),NoOp(Estaba ocupada la liena)
....
exten => _XXX,n(ANSWER),NoOp(Colgó el llamado)
.....
exten => _XXX,n(h-ANSWER),NoOp(Colgó el llamante)

Si se manejan correctamente los diferentes que puede tomar la variable DIALSTATUS es posible determinar quien colgó la llamada sin mayores problemas.
Por último, si se valida bien el flujo del plan de marcación no te pasará que se ejecute la prioridad ANSWER y luego h-ANSWER.

Seguro que funciona. De hecho así me toca hacer reportes porque el CDR de Asterisk no sirve para nada.

Ahora para llamadas que ingresan a una cola no es necesario hacer tantas "chapuzas". El Asterisk solito lo informa.

Saludos.

2010/6/11 Raúl Alexis Betancor Santana <ra...@dimension-virtual.com>
--

Raúl Alexis Betancor Santana

unread,
Jun 17, 2010, 3:13:24 PM6/17/10
to aster...@googlegroups.com
On Thu, Jun 17, 2010 at 01:03:58PM -0500, Jos� Ferney Franco Baquero wrote:
> Hola Ra�l.
>
> La respuesta que das no es cierta. Ya que mediante el plan de marcaci�n si
> es posible determinar quien cort� la llamada (por lo general), para ello es
> necesario usar la opci�n "g" del Dial:

> g - Proceed with dialplan execution at the current extension if the
> destination channel hangs up.
>
> De esta manera, si se tiene el siguiente contexto:
>
> [Interno]
> exten => _XXX,1,NoOp()
> exten => _XXX,n,Set(DIALEDEXTEN=${EXTEN})
> exten => _XXX,n,Dial(SIP/${EXTEN},45,gtT)
> exten => _XXX,n,Goto(${DIALSTATUS})
>
> exten => h,1,Goto(${DIALEDEXTEN},h-${DIALSTATUS})
>
> exten => _XXX,n(BUSY),NoOp(Estaba ocupada la liena)
> ....
> exten => _XXX,n(ANSWER),NoOp(Colg� el llamado)
> .....
> exten => _XXX,n(h-ANSWER),NoOp(Colg� el llamante)

>
> Si se manejan correctamente los diferentes que puede tomar la variable
> DIALSTATUS es posible determinar quien colg� la llamada sin mayores
> problemas.
> Por �ltimo, si se valida bien el flujo del plan de marcaci�n no te pasar�

> que se ejecute la prioridad ANSWER y luego h-ANSWER.
>
> Seguro que funciona. De hecho as� me toca hacer reportes porque el CDR de

> Asterisk no sirve para nada.
>
> Ahora para llamadas que ingresan a una cola no es necesario hacer tantas
> "chapuzas". El Asterisk solito lo informa.

Sabes que nada de ese dialplan funciona en el caso de transferencias
�verdad? ... adem�s el GoTo que tienes despu�s del Dial est� mal.

Saludos
--
Ra�l Alexis Betancor Santana
Dimensi�n Virtual S.L.

José Ferney Franco Baquero

unread,
Jun 17, 2010, 3:26:08 PM6/17/10
to aster...@googlegroups.com
Raúl.

Es sólo un pequeño ejemplo que hice para mostrar como se hacía. De hecho lo hice directamente en el correo y no me fije muy bien en la sintaxis o las implicaciones adicionales. Ahora bien, con respecto a las observaciones que realizas:
a) Para manejar las transferencias basta con tener en cuenta la variable TRANSFER_CONTEXT.
b) No veo porque el Goto está mal:
CLI> show application Goto
Goto([[context|]extension|]priority): This application will set the current
......
El campo priority puede ser también un label (Prueba y verás que es cierto)

Además, el tema del hilo es sobre cómo saber quién termina la llamada y creo que el ejemplo resuelve la inquietud. O por lo menos aclaro que es posible hacerlo (Tal como dije anteriormente, así lo hago y me funciona)

Saludos.


2010/6/17 Raúl Alexis Betancor Santana <ra...@dimension-virtual.com>
On Thu, Jun 17, 2010 at 01:03:58PM -0500, José Ferney Franco Baquero wrote:
> Hola Raúl.
>
> La respuesta que das no es cierta. Ya que mediante el plan de marcación si
> es posible determinar quien cortó la llamada (por lo general), para ello es
> necesario usar la opción "g" del Dial:

>     g    - Proceed with dialplan execution at the current extension if the
>            destination channel hangs up.
>
> De esta manera, si se tiene el siguiente contexto:
>
> [Interno]
> exten => _XXX,1,NoOp()
> exten => _XXX,n,Set(DIALEDEXTEN=${EXTEN})
> exten => _XXX,n,Dial(SIP/${EXTEN},45,gtT)
> exten => _XXX,n,Goto(${DIALSTATUS})
>
> exten => h,1,Goto(${DIALEDEXTEN},h-${DIALSTATUS})
>
> exten => _XXX,n(BUSY),NoOp(Estaba ocupada la liena)
> ....
> exten => _XXX,n(ANSWER),NoOp(Colgó el llamado)
> .....
> exten => _XXX,n(h-ANSWER),NoOp(Colgó el llamante)

>
> Si se manejan correctamente los diferentes que puede tomar la variable
> DIALSTATUS es posible determinar quien colgó la llamada sin mayores
> problemas.
> Por último, si se valida bien el flujo del plan de marcación no te pasará

> que se ejecute la prioridad ANSWER y luego h-ANSWER.
>
> Seguro que funciona. De hecho así me toca hacer reportes porque el CDR de

> Asterisk no sirve para nada.
>
> Ahora para llamadas que ingresan a una cola no es necesario hacer tantas
> "chapuzas". El Asterisk solito lo informa.

Sabes que nada de ese dialplan funciona en el caso de transferencias
¿verdad? ... además el GoTo que tienes después del Dial está mal.


Saludos
--
Raúl Alexis Betancor Santana
Dimensión Virtual S.L.

Raúl Alexis Betancor Santana

unread,
Jun 18, 2010, 3:22:21 AM6/18/10
to aster...@googlegroups.com
On Thursday 17 June 2010 20:26:08 José Ferney Franco Baquero wrote:
> Raúl.
>
> Es sólo un pequeño ejemplo que hice para mostrar como se hacía. De hecho lo
> hice directamente en el correo y no me fije muy bien en la sintaxis o las
> implicaciones adicionales. Ahora bien, con respecto a las observaciones que
> realizas:
> a) Para manejar las transferencias basta con tener en cuenta la variable
> TRANSFER_CONTEXT.

Si valiese solo con eso ... pero Asterisk maneja igual de mal el
peer-matching, que las transferencias, que la negociación de codecs ...
que .... mejor lo dejo.

> b) No veo porque el Goto está mal:

Porque la opción g de Dial lo que hace es que se SIGA ejecutando la EXTENSION
actual, en vez de saltar a la h, por lo que ese GoTo después del dial, hará
que se traten todas las llamadas como si hubiese colgado EL ORIGINADOR de
llamada.

> Además, el tema del hilo es sobre cómo saber quién termina la llamada y
> creo que el ejemplo resuelve la inquietud. O por lo menos aclaro que es
> posible hacerlo (Tal como dije anteriormente, así lo hago y me funciona)

Enhorabuena si te funciona ... pero el ejemplo no era correcto .. ;-)

José Ferney Franco Baquero

unread,
Jun 18, 2010, 10:43:35 AM6/18/10
to aster...@googlegroups.com


2010/6/18 Raúl Alexis Betancor Santana <ra...@dimension-virtual.com>

> a) Para manejar las transferencias basta con tener en cuenta la variable
> TRANSFER_CONTEXT.

Si valiese solo con eso ... pero Asterisk maneja igual de mal el
peer-matching, que las transferencias, que la negociación de codecs ...
que .... mejor lo dejo.

Estoy de acuerdo. Pero una cosa es una configuración incorrecta y otra son los errores que pueda tener Asterisk

> b) No veo porque el Goto está mal:

Porque la opción g de Dial lo que hace es que se SIGA ejecutando la EXTENSION
actual, en vez de saltar a la h, por lo que ese GoTo después del dial, hará
que se traten todas las llamadas como si hubiese colgado EL ORIGINADOR de
llamada.

Estas equivocado. ¿Lo has probado antes de refutarlo?

> Además, el tema del hilo es sobre cómo saber quién termina la llamada y
> creo que el ejemplo resuelve la inquietud. O por lo menos aclaro que es
> posible hacerlo (Tal como dije anteriormente, así lo hago y me funciona)

Enhorabuena si te funciona ... pero el ejemplo no era correcto .. ;-)

Creo que es más correcto que afirmar "NO, con el CDR de Asterisk, ni con el Dialplan puedes saber
Reply all
Reply to author
Forward
0 new messages