Hangup Cause

619 views
Skip to first unread message

Hector Antonio

unread,
Oct 22, 2008, 6:05:38 PM10/22/08
to aster...@googlegroups.com
Estimado Amigos


Como hago para que el asterisk me mande el hangup cause al cdr?, estoy utilizando E1 ISDN, ya tengo configurado el cdr y de mas, pero cuando asterisk cuelga las llamadas no manda el hangup cause al cdr.

De antemano muchas gracias

Héctor A Arteaga R

Saúl Ibarra

unread,
Oct 22, 2008, 6:53:08 PM10/22/08
to aster...@googlegroups.com
Mételo tu en el userfield, por ejemplo...


--
Saúl -- "Nunca subestimes el ancho de banda de un camión lleno de disketes."
----------------------------------------------------------------
http://www.saghul.net/

Hector Antonio

unread,
Oct 23, 2008, 12:28:22 PM10/23/08
to aster...@googlegroups.com
Lo que no se es como obtener el valor del hangupcause desde el marcado utilizando AMI, tengo un scrip el cual de una lista de telefonos realiza las llamadas he visto en los canales toda la trama de la llamada y en cuanto comienza a marcar lo manda a la extensión s@incoming, al llegar a la extension s no he podido manipuar la llamada para que me mande el hangupcause, y con la extensión "t" tambpoco dispara los eventos cuando hago la marcación desde AMI cuando la hago con un sip si manda dispara los eventos,

En mi trabajo me estan solicitando la posibilidad de que tengamos las causas del porque se cuelgan las llamadas sin establecer.

Saludos

Héctor A Arteaga R

Saúl Ibarra

unread,
Oct 23, 2008, 12:38:00 PM10/23/08
to aster...@googlegroups.com
Prueba a hacerlo en la extensión h.

Raúl Alexis Betancor Santana

unread,
Oct 23, 2008, 12:49:35 PM10/23/08
to aster...@googlegroups.com
Saúl Ibarra wrote:
> Prueba a hacerlo en la extensión h.
>
>
>
En h no estará disponible el valor, lo que ha de hacer simplemente es
coger el valor de HC en el dialplan justo a la salida de la llamada al
Dial y meterlo en el valor del CDR que le dé la gana.

Saludos.

Hector Antonio

unread,
Oct 23, 2008, 3:39:00 PM10/23/08
to aster...@googlegroups.com
Error, perdon, extension h.

Saludos
Héctor A Arteaga

Hector Antonio

unread,
Oct 23, 2008, 3:41:21 PM10/23/08
to aster...@googlegroups.com
ya lo intente, cuando yo manualmente hago la llamada desde un softphone si lo ejecuta pero cuando hago la llamada con AMI no lo ejecuta ni siquiera se ve el evento, en la consola solo aparece que se colgo el canal

Andrés Martín - martyn

unread,
Oct 23, 2008, 3:47:31 PM10/23/08
to aster...@googlegroups.com
Me imagino que desde AMI haces la llamada directa al canal.. y no por medio de un contexto en el dial plan, por lo que no se llamaría la extension h, para que ejecute lo que necesites.. si no logras utilizar el dialplan desde tu AMI, tendrias que modificar tu cdr_custom.conf para que obtengas en tu Master.csv el parametro que necesitas..


On Thu, Oct 23, 2008 at 2:41 PM, Hector Antonio <hecto...@gmail.com> wrote:
ya lo intente, cuando yo manualmente hago la llamada desde un softphone si lo ejecuta pero cuando hago la llamada con AMI no lo ejecuta ni siquiera se ve el evento, en la consola solo aparece que se colgo el canal






--
Andrés Martín Ochoa;
passport: andres...@linuxmail.org;
Linux Registered User #436420;
Asterisk User Number: 1000;
PBX: (57) 1 578 20 30;
Ext: 102;

martyn

unread,
Oct 23, 2008, 12:32:00 PM10/23/08
to asterisk-es
Hola.

Yo la obtengo con la variable ${HANGUPCAUSE} cuando se ejecuta la h en
el Dial Plan..

Saúl Ibarra

unread,
Oct 24, 2008, 2:50:38 AM10/24/08
to aster...@googlegroups.com

Ni poniendo endbeforehexten=no en el cdr.conf?

Salu2!

Hector Antonio

unread,
Oct 24, 2008, 11:27:34 AM10/24/08
to aster...@googlegroups.com
Pues no, ya intente colocando endbeforehexten=no

En mi scrip mando esto como salida:

Action: Originate
Channel: Zap/g1/numero_telefonio
WaitTime: 30
Callerid: Datos_cta <telefono>
Context: incoming
Exten: 1501
Priority: 1

En cuanto ejecuto el scrip al dar un show channels manda esto:

VoIP*CLI> show channels
Channel              Location             State   Application(Data)
Zap/1-1              s@incoming:1         Ringing (None)
1 active channel
0 active calls


y cuando la llamada no se contesta o da error al marcado, solo se ve esto en la consola:

    -- Hungup 'Zap/1-1'

y en esto es lo que aparece en el cdr :

'2008-10-24 09:35:00', '"017012" <52789369>', '52789369', '1501', 'incoming', 'Zap/1-1', '', 'Dial', 'Zap/g1/52789369', 0, 0, 'FAILED', 3, '', '1224858869.80', ''

y esto es lo que me da al estar monitoreando los eventos de asteris

Event: Newchannel
Privilege: call,all
Channel: Zap/1-1
State: Rsrvd
CallerID: <unknown>
CallerIDName: <unknown>
Uniqueid: 1224859496.81

Event: Newcallerid
Privilege: call,all
Channel: Zap/1-1
CallerID: 52789369
CallerIDName: 017012
Uniqueid: 1224859496.81
CID-CallingPres: 0 (Presentation Allowed, Not Screened)

Event: Newcallerid
Privilege: call,all
Channel: Zap/1-1
CallerID: 52789369
CallerIDName: 017012
Uniqueid: 1224859496.81
CID-CallingPres: 0 (Presentation Allowed, Not Screened)

Event: Newstate
Privilege: call,all
Channel: Zap/1-1
State: Dialing
CallerID: 52789369
CallerIDName: 017012
Uniqueid: 1224859496.81

Event: Newstate
Privilege: call,all
Channel: Zap/1-1
State: Ringing
CallerID: 52789369
CallerIDName: 017012
Uniqueid: 1224859496.81

Event: Hangup
Privilege: call,all
Channel: Zap/1-1
Uniqueid: 1224859496.81
Cause: 0
Cause-txt: Unknown

En Sip esta es lo que aparece en la consola cuando marco:

VoIP*CLI> show channels
Channel              Location             State   Application(Data)
Zap/1-1              s@incoming:1         Ringing AppDial((Outgoing Line))
SIP/20000-b7700678   952789369@internal:2 Ring    Dial(Zap/g1/52789369|30)

Esto cuando termina el tiempo de espera para que contesten:

    -- Nobody picked up in 30000 ms
    -- Hungup 'Zap/1-1'
    -- Executing Goto("SIP/20000-b7700678", "s-NOANSWER|1") in new stack
    -- Goto (internal,s-NOANSWER,1)
    -- Executing Playback("SIP/20000-b7700678", "/root/graba/2") in new stack
    -- Playing '/root/graba/2' (language 'sp')
    -- Executing Hangup("SIP/20000-b7700678", "") in new stack
  == Spawn extension (internal, s-NOANSWER, 2) exited non-zero on 'SIP/20000-b7700678'
    -- Executing AGI("SIP/20000-b7700678", "dicta.php||16") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/dicta.php
    -- AGI Script dicta.php completed, returning 0
    -- Executing Playback("SIP/20000-b7700678", "/root/graba/0") in new stack
    -- Playing '/root/graba/0' (language 'sp')
    -- Executing Hangup("SIP/20000-b7700678", "") in new stack
  == Spawn extension (internal, h, 3) exited non-zero on 'SIP/20000-b7700678'
  == End MixMonitor Recording SIP/20000-b7700678

Esto lo que aparece en el CDR:

'2008-10-24 09:49:33', '"HECTOR 20000" <20000>', '20000', 's-NOANSWER', 'internal', 'SIP/20000-b7700678', 'Zap/1-1', 'Hangup', '', 32, 1, 'ANSWERED', 3, '20000', '1224859773.82', ''
**** A qui puede aver un pequeño conflicto en el disposition ya que esta llamada entra a un conmutador el cual le contesta pero la extensión destino no lo hace, por lo que es corrector que se valla al NOANSWER.

Y por ultimo esto es lo que aparece monitoreando los eventos:

Event: Newchannel
Privilege: call,all
Channel: SIP/20000-b7700678
State: Ring
CallerID: 20000
CallerIDName: HECTOR 20000
Uniqueid: 1224859773.82

Event: Newexten
Privilege: call,all
Channel: SIP/20000-b7700678
Context: internal
Extension: 952789369
Priority: 1
Application: MixMonitor
AppData: /var/spool/asterisk/monitor/1224859773.82.wav
Uniqueid: 1224859773.82

Event: Newexten
Privilege: call,all
Channel: SIP/20000-b7700678
Context: internal
Extension: 952789369
Priority: 2
Application: Dial
AppData: Zap/g1/52789369|30
Uniqueid: 1224859773.82

Event: Newchannel
Privilege: call,all
Channel: Zap/1-1
State: Rsrvd
CallerID: <unknown>
CallerIDName: <unknown>
Uniqueid: 1224859773.83

Event: Newstate
Privilege: call,all
Channel: Zap/1-1
State: Dialing
CallerID: 20000
CallerIDName: HECTOR 20000
Uniqueid: 1224859773.83

Event: Dial
Privilege: call,all
Source: SIP/20000-b7700678
Destination: Zap/1-1
CallerID: 20000
CallerIDName: HECTOR 20000
SrcUniqueID: 1224859773.82
DestUniqueID: 1224859773.83

Event: Newcallerid
Privilege: call,all
Channel: Zap/1-1
CallerID: 952789369
CallerIDName: <Unknown>
Uniqueid: 1224859773.83
CID-CallingPres: 0 (Presentation Allowed, Not Screened)

Event: Newstate
Privilege: call,all
Channel: Zap/1-1
State: Ringing
CallerID: 952789369
CallerIDName: <unknown>
Uniqueid: 1224859773.83

Event: Hangup
Privilege: call,all
Channel: Zap/1-1
Uniqueid: 1224859773.83
Cause: 0
Cause-txt: Unknown

Event: Newexten
Privilege: call,all
Channel: SIP/20000-b7700678
Context: internal
Extension: 952789369
Priority: 3
Application: Goto
AppData: s-NOANSWER|1
Uniqueid: 1224859773.82

Event: Newexten
Privilege: call,all
Channel: SIP/20000-b7700678
Context: internal
Extension: s-NOANSWER
Priority: 1
Application: Playback
AppData: /root/graba/2
Uniqueid: 1224859773.82

Event: Newstate
Privilege: call,all
Channel: SIP/20000-b7700678
State: Up
CallerID: 20000
CallerIDName: HECTOR 20000
Uniqueid: 1224859773.82

Event: Newexten
Privilege: call,all
Channel: SIP/20000-b7700678
Context: internal
Extension: s-NOANSWER
Priority: 2
Application: Hangup
AppData:
Uniqueid: 1224859773.82

Event: Newexten
Privilege: call,all
Channel: SIP/20000-b7700678
Context: internal
Extension: h
Priority: 1
Application: AGI
AppData: dicta.php||16
Uniqueid: 1224859773.82

Event: Newexten
Privilege: call,all
Channel: SIP/20000-b7700678
Context: internal
Extension: h
Priority: 2
Application: Playback
AppData: /root/graba/0
Uniqueid: 1224859773.82

Event: Newexten
Privilege: call,all
Channel: SIP/20000-b7700678
Context: internal
Extension: h
Priority: 3
Application: Hangup
AppData:
Uniqueid: 1224859773.82

Event: Hangup
Privilege: call,all
Channel: SIP/20000-b7700678
Uniqueid: 1224859773.82
Cause: 16
Cause-txt: Normal Clearing

En este ejemplo si manda la causa pero esto por que en el plan de marcado yo indico en que momento colgar a la llamada.

Pero si yo cuelgo la llamada pasa esto:

Event: Newchannel
Privilege: call,all
Channel: SIP/20000-b7700678
State: Ring
CallerID: 20000
CallerIDName: HECTOR 20000
Uniqueid: 1224860429.90

Event: Newexten
Privilege: call,all
Channel: SIP/20000-b7700678
Context: internal
Extension: 952789369
Priority: 1
Application: MixMonitor
AppData: /var/spool/asterisk/monitor/1224860429.90.wav
Uniqueid: 1224860429.90

Event: Newexten
Privilege: call,all
Channel: SIP/20000-b7700678
Context: internal
Extension: 952789369
Priority: 2
Application: Dial
AppData: Zap/g1/52789369|30
Uniqueid: 1224860429.90

Event: Newchannel
Privilege: call,all
Channel: Zap/1-1
State: Rsrvd
CallerID: <unknown>
CallerIDName: <unknown>
Uniqueid: 1224860429.91

Event: Newstate
Privilege: call,all
Channel: Zap/1-1
State: Dialing
CallerID: 20000
CallerIDName: HECTOR 20000
Uniqueid: 1224860429.91

Event: Dial
Privilege: call,all
Source: SIP/20000-b7700678
Destination: Zap/1-1
CallerID: 20000
CallerIDName: HECTOR 20000
SrcUniqueID: 1224860429.90
DestUniqueID: 1224860429.91

Event: Newcallerid
Privilege: call,all
Channel: Zap/1-1
CallerID: 952789369
CallerIDName: <Unknown>
Uniqueid: 1224860429.91
CID-CallingPres: 0 (Presentation Allowed, Not Screened)

Event: Newstate
Privilege: call,all
Channel: Zap/1-1
State: Ringing
CallerID: 952789369
CallerIDName: <unknown>
Uniqueid: 1224860429.91

Event: Hangup
Privilege: call,all
Channel: Zap/1-1
Uniqueid: 1224860429.91
Cause: 0
Cause-txt: Unknown

Event: Newexten
Privilege: call,all
Channel: SIP/20000-b7700678
Context: internal
Extension: h
Priority: 1
Application: AGI
AppData: dicta.php||0
Uniqueid: 1224860429.90

Event: Hangup
Privilege: call,all
Channel: SIP/20000-b7700678
Uniqueid: 1224860429.90
Cause: 0
Cause-txt: Unknown


hay forma de obtener los hangupcause de este tipo de marcaciones? Estoy trabajando con E1 ISDN y una tajeta SANGOMA de 4 puertos.

Hector Antonio

unread,
Nov 18, 2008, 11:51:26 AM11/18/08
to aster...@googlegroups.com
Buen día a todos

he provado hacer esto mismo utilizando la salida desde un sip, es decir, en el archivo .call o desde mi app lo coloco de la siguiente forma:

Action: Originate
Channel: SIP/20000
Context: external
Exten: 0445532266499
Priority: 1
Callerid: 0445532266499

Al termino de la llamada si meda el status, BUSY, NOANSWER, CANCEL, CONGESTION, CHANUNAVAIL, DONTCALL, TORTURE, INVALIDARGS.

con esto me surge la necesidad de provar con extensiones sip virtuales, es decir que no este nada conectado pero pueda registrar las extensiones para realizar las llamadas y manipularlas.

Alguien sabe como crear lineas virtuales?

DiegoF

unread,
Nov 19, 2008, 7:56:19 AM11/19/08
to asterisk-es
Utilize los canales locales, algo asi:
Channel: local/$telefono@contexto

Esto para que la llamada se inicie desde el plan de marcacion y pueda
utilizar la extension h

Algo asi tengo funcionando y me arroja valores como
CHANUNAVAIL
CANCEL
ANSWER

No se si lo este haciendo bien, si alguien me indica que algo tengo
mal, le agradecere la correcion

Hector Antonio

unread,
Nov 19, 2008, 12:33:19 PM11/19/08
to aster...@googlegroups.com
ya intente esto y en efecto, ya me manda los status de los telefonos y todo ahora el problema que tengo es que en el script original paso el numero de expediente del titular y con esta modificación el CALLERIDNAME y queda en blanco, como puedo pasar este parametro al realizar la marcación?

el scrip completo se ejecuta de la siguiente forma:

./originate.php 52789369 865656723 376

Lo que contiene es lo siguiente:

    echo " Autentificar al usuario";
    $entrada = "Action: Login\r\n";
    $entrada .= "Username: pfox\r\n";
    $entrada .= "Secret: pfoxpas\r\n";
    $entrada .= "ActionID: 1\r\n\r\n";
    socket_write($socket, $entrada, strlen($entrada));
    echo "Originar llamada";
    $entrada = "Action: Originate\r\n";
    $entrada .= "Channel: local/$argv[1]@mensajes\r\n";
    $entrada .= "Context: incoming\r\n";
    $entrada .= "Exten: $argv[3]\r\n";
    $entrada .= "Priority: 1\r\n";
    $entrada .= "Callerid: $argv[1] <$argv[2]>\r\n\r\n";
    socket_write($socket, $entrada, strlen($entrada));
    socket_close($socket);
    echo "Llamada Originada\n\n";

donde:
argv[1] = numero telefonico que voy a marcar
argv[2] = numero de expediente del cliente
argv[3] = extension para el plan de marcado


y el plan de marcado es de la siguiente forma:

[mensajes]
exten => _ZXXXXXXX,1,Dial(Zap/g1/${EXTEN},30)
[incoming]
exten => 376,n,Playback(/root/graba/C376)
exten => 376,n,AGI(dicta.php|${CALLERIDNAME}|${CALLERIDNUMBER})
exten => 376,n,Playback(/root/graba/C376)
exten => 376,n,AGI(dicta.php|${CALLERIDNAME}|${CALLERIDNUMBER})
exten => 376,n,Hangup()

DiegoF

unread,
Nov 20, 2008, 7:50:10 AM11/20/08
to asterisk-es
Buenos dias, no se porque le pasa eso, yo lo hago asi:

fputs($socket, "CallerID: $nomb_clie $apel_clie 1-AUT-$cons_camp-
$cons_terc <$tele_terc>\r\n");
esto mas que todo es para el CDR y como necesito mas variables,
al originate le pongo otra opcion que es "Variable"

$variables="TELE_TERC=$tele_terc|NUME_EXTE=$tota_exte|CONS_TERC=
$cons_terc|TIPO_CAMP=$tipo_camp|CONS_CAMP=$cons_camp|CONS_COLA=
$cons_camp_cola";
fputs($socket, "Variable: $variables\r\n")

y ahi ya tengo todos los valores que necesito, no se si eso le
funcione,
cualquier cosa me cuenta.

Hector Antonio

unread,
Jun 25, 2009, 6:06:02 PM6/25/09
to aster...@googlegroups.com
Despues de tanto tiempo, porfin tube tiempo y termine.
La solucion fue utilizando los canales locales como me lo habian comentado y utilizando la opcion de variables.
Gracias por la ayuda.
Saludos!!
Héctor A Arteaga R
Reply all
Reply to author
Forward
0 new messages