Envio de texto a un display de telefono SIP desde una aplicacion externa

138 views
Skip to first unread message

HORMAX

unread,
Apr 22, 2008, 11:02:46 AM4/22/08
to asterisk-es
Necesito que mensajes generados por una aplicación externa sean
enviados por Asterisk a un teléfono SIP que está en conversación, para
ser mostrados en el display del teléfono.

El teléfono, ya muestra, en display, mensajes enviados con SendText(),
pero si los datos son generados en un programa externo ¿como puedo
hacer para que Asterisk los envíe?

Saludos y gracias de antemano

TelecoSilvia

unread,
Apr 22, 2008, 11:07:21 AM4/22/08
to asterisk-es
con un agi o system() puedes ejecutar codigo externo a asterisk.
Haz que esa aplicacion los deje en algun sitio, o llene la base de
datos de asterisk:
asterisk -rx `database put datos LOSDATOS`

Y despues en el dialplan Set(DATOS=DB(....))

Saúl Ibarra

unread,
Apr 22, 2008, 11:08:20 AM4/22/08
to aster...@googlegroups.com
A ver, ya se te contestó a eso en otro hilo, así que por favor, NO
REPITAS HILOS!!!


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

Saúl Ibarra

unread,
Apr 22, 2008, 11:09:34 AM4/22/08
to aster...@googlegroups.com
2008/4/22 TelecoSilvia <teleco...@gmail.com>:

>
> con un agi o system() puedes ejecutar codigo externo a asterisk.
> Haz que esa aplicacion los deje en algun sitio, o llene la base de
> datos de asterisk:
> asterisk -rx `database put datos LOSDATOS`
>
> Y despues en el dialplan Set(DATOS=DB(....))
>

sipsak could also be you very best friend Silvia :)

HORMAX

unread,
Apr 22, 2008, 11:19:14 AM4/22/08
to asterisk-es
No, la pregunta que hice en otro hilo era distinta ese tema ya esta
solucionado gracias a las respuestas que recibí.

Una vez solucionado ese problema anterior, me encuentro con un NUEVO
problema que es el que aqui planteo.

HORMAX

unread,
Apr 22, 2008, 11:23:38 AM4/22/08
to asterisk-es
Mochas gracias Silvia, pero creo que no me explique bien. La
aplicación externa se ejecuta por si misma, no la lanza Asterisk.

La aplicación coge datos de las llamadas en curso a través del AMI y
como resultado delproceso debe enviar datos al display del teléfono.

La función SendText() de Asterisk sirve para eso, pero no se como
hacer que se ejecute repetitivamente y con los datos que le entrega la
aplicacioón externa.

Gracias por tu colaboración.

Iñaki Baz Castillo

unread,
Apr 22, 2008, 1:27:26 PM4/22/08
to aster...@googlegroups.com

Asterisk manda los MESSAGE (con la aplicación "SendText") en modo "in-dialog",
esto es, la cabecera "To" contiene un parámetro "tag" con el mismo valor que
el "To tag" de la sesión de voz actual.
Aunque es perfectamente correcto algunos clientes no soportan recibir MESSAGE
in-dialog (como muy bien demostró Paco Gil en los X-Lite). Así que yo por mí
prescindiría totalmente de Asterisk y su cutre "SendText" y enviaría los
MESSAGE en modo "initial-request" (sin "To tag") desde otra aplicación
(SipSak es tu amigo como dice Saúl).

No cargues a Asterisk con cosas que hace fatal ;)


~~~~~~ uso de NGREP (captura traza SIP) ~~~~~~
En el servidor Asterisk:
~$ ngrep -d any -P ' ' -W byline -T port 5060
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

--
Iñaki Baz Castillo
i...@in.ilimit.es

HORMAX

unread,
Apr 22, 2008, 12:02:44 PM4/22/08
to asterisk-es
Hola Iñaki:
tienes la respuesta precisa a cada pregunta.

El asunto del tag, ya me lo habia olido, intentando enviar
MESSAGE a telefonos SIP. desde la aplicación externa, la respuesta es
desigual, un softphone Twinkle 1.1 los recibe correctamente pero los
telefonos Hardware que con SendText() funcionan correctamente, no
muestran nada cuando el paquete proviene de la aplicación externa.

Voy a probar lo que me has indicado pero quizá pudieras
sugerirme como hacerlo también con SendText() auqnue ese método a ti
no te caiga muy simpatico.

Gracias por todo.



Iñaki Baz Castillo

unread,
Apr 22, 2008, 2:29:30 PM4/22/08
to aster...@googlegroups.com
El Tuesday 22 April 2008 16:02:44 HORMAX escribió:

> El asunto del tag, ya me lo habia olido, intentando enviar
> MESSAGE a telefonos SIP. desde la aplicación externa, la respuesta es
> desigual, un softphone Twinkle 1.1 los recibe correctamente pero los
> telefonos Hardware que con SendText() funcionan correctamente, no
> muestran nada cuando el paquete proviene de la aplicación externa.

Algunos tfnos se pueden configurar para que sólo puedan recibir request
(INVITE, MESSAGE...) desde el proxy (ip:puerto). Si estás usando una
aplicación externa obviamente estás usando otro ip:puerto origen.
Pero dudo que sea eso ya que sólo he visto esa opción en los Linksys y no
viene por defecto.
Desde la máquina donde corres la aplicación externa que manda el MESSAGE haz
un ngrep (ver mi firma) y pega la salida.


> Voy a probar lo que me has indicado pero quizá pudieras
> sugerirme como hacerlo también con SendText() auqnue ese método a ti
> no te caiga muy simpatico.

Con SendText va a ser siempre en modo in-dialog y en X-Lite no funciona (no lo
soporta). Por lo demás no puedo decir nada que no haya dicho ya Silvia:

"con un agi o system() puedes ejecutar codigo externo a asterisk.
Haz que esa aplicacion los deje en algun sitio, o llene la base de
datos de asterisk:
asterisk -rx `database put datos LOSDATOS`
Y despues en el dialplan Set(DATOS=DB(....))"

HORMAX

unread,
Apr 22, 2008, 1:07:59 PM4/22/08
to asterisk-es
Asterisk no necesita lanzar ninguna aplicación mediante AGI o
system(), porque la aplicación externa ya está funcionando y en la
misma maquina,=> la IP es la misma.

La aplicación externa puede meter los datos en la base de datos de
Asterisk y se puede hacer que una variable Asterisk tome el valor
almacenado en esa DB, hasta ahí todo bién.

Mi problema consiste en que no se como hacer que cada vez que aparece
un nuevo dato se ejecute un SendText(DATOS) y asi el string llegue al
display del telefono.

Por lo que veo mis telefonos solo acepten MESSAGE desde Asterisk, si
no fuera así ya lo tendria solucionado.

Gracias por vuestra colaboración.

paco gil

unread,
Apr 22, 2008, 2:10:40 PM4/22/08
to aster...@googlegroups.com
tus teléfonos aceptan MESSAGE, ya sea desde Asterisk o desde lo que
sea que mande paqutes MESSAGE...

2008/4/22 HORMAX <hor...@gmail.com>:

--
http://ualtech.wordpress.com

TelecoSilvia

unread,
Apr 23, 2008, 3:03:56 AM4/23/08
to asterisk-es
Es que mi mensaje tenía dos partes:
Opcion 1: "con un agi o system() puedes ejecutar codigo externo a
asterisk.
Opcion 2: Haz que esa aplicacion los deje en algun sitio, o llene la
base de
datos de asterisk:
asterisk -rx `database put datos LOSDATOS`
Y despues en el dialplan Set(DATOS=DB(....))"

La opción 2 es la que tu necesitas.

:P

Iñaki Baz Castillo

unread,
Apr 23, 2008, 5:45:20 AM4/23/08
to aster...@googlegroups.com
El Tuesday 22 April 2008 17:07:59 HORMAX escribió:
> Asterisk no necesita lanzar ninguna aplicación mediante AGI o
> system(), porque la aplicación externa ya está funcionando y en la
> misma maquina,=> la IP es la misma.

Da igual que la IP sea la misma, el puerto origen no puesto que ya lo está
usando Asterisk así que a efectos SIP n oes la misma comunicación ni el mismo
UAC.


> La aplicación externa puede meter los datos en la base de datos de
> Asterisk y se puede hacer que una variable Asterisk tome el valor
> almacenado en esa DB, hasta ahí todo bién.
>
> Mi problema consiste en que no se como hacer que cada vez que aparece
> un nuevo dato se ejecute un SendText(DATOS) y asi el string llegue al
> display del telefono.

Entonces tienes que tirar de un proceso externo, un cron o algo así, que
ejecute un "asterisk -r comando...".

> Por lo que veo mis telefonos solo acepten MESSAGE desde Asterisk, si
> no fuera así ya lo tendria solucionado.

A ver, no digamos tonterías (con cariño).
¿¿¿¿¿Qué es eso de que tus teléfonso sólo aceptan MESSAGE desde Asterisk????
Que no y que no, que estarás haciendo algo mal y punto.
NOTA: Salvo que tus teléfonos sólo permitan MESSAGE in dialog y da la
casualidad que Asterisk los envía in-dialog mientras que un softphone normla
te los manda como initial-request.

Haz una prueba: Coge un Twinkle y desde él envía un MESSAGE al usuario@IP del
teléfono que recibe los MESSAGE (me refiero a la IP del teléfono, no del
Asterisk). ¿Llega?

HORMAX

unread,
Apr 23, 2008, 7:01:40 AM4/23/08
to asterisk-es
He hecho la prueba enviando mensaje desde Twinkle con la llamada
establecida y ni llega nada al teléfono ni aparece ningun mensaje de
error en Twinkle.

Creo que tu apreciación es correcta, este teléfono parece que solo
está admitiendo mensajes in-dialog, mientras que Twinkle lo hace con
initial-request.

¿Alguna idea?

HORMAX

unread,
Apr 23, 2008, 7:03:35 AM4/23/08
to asterisk-es
Gracias Silvia, pero meter el dato en la DB, no hace que aparezca en
el display del teléfono, al menos yo no se como hacerlo.

Gracias de todas formas.

TelecoSilvia

unread,
Apr 23, 2008, 7:10:46 AM4/23/08
to asterisk-es
Nada que ultimamente escribo un poco con las prisas.

una vez tengas la bbdd llena en tu dialplan haces:
exten => loquesea,n,Set(DATOS=${DB(datos_aplica/loquesea)})
exten => loquesea,n,SendText("aqui van los datos ${DATOS}")

Más o menos algo así. Esto lo pones en la macro aquella famosa que
esta dentro del Dial.

Iñaki Baz Castillo

unread,
Apr 23, 2008, 9:27:11 AM4/23/08
to aster...@googlegroups.com
El Wednesday 23 April 2008 11:01:40 HORMAX escribió:
> He hecho la prueba enviando mensaje desde Twinkle con la llamada
> establecida y ni llega nada al teléfono ni aparece ningun mensaje de
> error en Twinkle.

Aunque la llamada esté establecida Twinkle envía el MESSAGE fuera de diálogo
(o sea, sin "tag" en el header "To").


> Creo que tu apreciación es correcta, este teléfono parece que solo
> está admitiendo mensajes in-dialog, mientras que Twinkle lo hace con
> initial-request.

Pero algún error tiene que decir. ¿Puedes ejecutar ngrep en la máuqina donde
corres Twinkle y pegar la traza cuando Twinkle envía el MESSAGE?

HORMAX

unread,
Apr 23, 2008, 7:40:32 AM4/23/08
to asterisk-es
Lo he hecho con ngrep, Twinkle está en la IP ...25:5061, donde también
corre Asterisk en el puerto 5060 y el teléfono en la IP ...29 y
entonces Twinkle ha dado el error:

Delivery failure: 408 Request Timeout

Te envio también la traza

orencio@ubuntu:~$ ngrep -d any -P ' ' -W byline -T port 5060
interface: any
filter: (ip or ip6) and ( port 5060 )
#
U +3.593407 172.26.0.25:5061 -> 172.26.0.29:5060
MESSAGE sip:SIP:4...@172.26.0.29 SIP/2.0
Via: SIP/2.0/UDP 172.26.0.25:5061;rport;branch=z9hG4bKllbnahht
Max-Forwards: 70
To: <sip:SIP:4...@172.26.0.29>
From: "UBUNTU_41" <sip:4...@172.26.0.25>;tag=pjivi
Call-ID: nxqpdhv...@172.26.0.25
CSeq: 788 MESSAGE
Content-Type: text/plain;charset=utf-8
User-Agent: Twinkle/1.1
Content-Length: 23

%p0501Mensaje de prueba
#
U +0.500120 172.26.0.25:5061 -> 172.26.0.29:5060
MESSAGE sip:SIP:4...@172.26.0.29 SIP/2.0
Via: SIP/2.0/UDP 172.26.0.25:5061;rport;branch=z9hG4bKllbnahht
Max-Forwards: 70
To: <sip:SIP:4...@172.26.0.29>
From: "UBUNTU_41" <sip:4...@172.26.0.25>;tag=pjivi
Call-ID: nxqpdhv...@172.26.0.25
CSeq: 788 MESSAGE
Content-Type: text/plain;charset=utf-8
User-Agent: Twinkle/1.1
Content-Length: 23

%p0501Mensaje de prueba
#
U +1.000424 172.26.0.25:5061 -> 172.26.0.29:5060
MESSAGE sip:SIP:4...@172.26.0.29 SIP/2.0
Via: SIP/2.0/UDP 172.26.0.25:5061;rport;branch=z9hG4bKllbnahht
Max-Forwards: 70
To: <sip:SIP:4...@172.26.0.29>
From: "UBUNTU_41" <sip:4...@172.26.0.25>;tag=pjivi
Call-ID: nxqpdhv...@172.26.0.25
CSeq: 788 MESSAGE
Content-Type: text/plain;charset=utf-8
User-Agent: Twinkle/1.1
Content-Length: 23

%p0501Mensaje de prueba
#
U +2.000368 172.26.0.25:5061 -> 172.26.0.29:5060
MESSAGE sip:SIP:4...@172.26.0.29 SIP/2.0
Via: SIP/2.0/UDP 172.26.0.25:5061;rport;branch=z9hG4bKllbnahht
Max-Forwards: 70
To: <sip:SIP:4...@172.26.0.29>
From: "UBUNTU_41" <sip:4...@172.26.0.25>;tag=pjivi
Call-ID: nxqpdhv...@172.26.0.25
CSeq: 788 MESSAGE
Content-Type: text/plain;charset=utf-8
User-Agent: Twinkle/1.1
Content-Length: 23

%p0501Mensaje de prueba
#
U +1.246646 172.26.0.42:5060 -> 172.26.0.25:5060
hello
#
U +2.753774 172.26.0.25:5061 -> 172.26.0.29:5060
MESSAGE sip:SIP:4...@172.26.0.29 SIP/2.0
Via: SIP/2.0/UDP 172.26.0.25:5061;rport;branch=z9hG4bKllbnahht
Max-Forwards: 70
To: <sip:SIP:4...@172.26.0.29>
From: "UBUNTU_41" <sip:4...@172.26.0.25>;tag=pjivi
Call-ID: nxqpdhv...@172.26.0.25
CSeq: 788 MESSAGE
Content-Type: text/plain;charset=utf-8
User-Agent: Twinkle/1.1
Content-Length: 23

%p0501Mensaje de prueba
#
U +4.000455 172.26.0.25:5061 -> 172.26.0.29:5060
MESSAGE sip:SIP:4...@172.26.0.29 SIP/2.0
Via: SIP/2.0/UDP 172.26.0.25:5061;rport;branch=z9hG4bKllbnahht
Max-Forwards: 70
To: <sip:SIP:4...@172.26.0.29>
From: "UBUNTU_41" <sip:4...@172.26.0.25>;tag=pjivi
Call-ID: nxqpdhv...@172.26.0.25
CSeq: 788 MESSAGE
Content-Type: text/plain;charset=utf-8
User-Agent: Twinkle/1.1
Content-Length: 23

%p0501Mensaje de prueba
#
U +4.000344 172.26.0.25:5061 -> 172.26.0.29:5060
MESSAGE sip:SIP:4...@172.26.0.29 SIP/2.0
Via: SIP/2.0/UDP 172.26.0.25:5061;rport;branch=z9hG4bKllbnahht
Max-Forwards: 70
To: <sip:SIP:4...@172.26.0.29>
From: "UBUNTU_41" <sip:4...@172.26.0.25>;tag=pjivi
Call-ID: nxqpdhv...@172.26.0.25
CSeq: 788 MESSAGE
Content-Type: text/plain;charset=utf-8
User-Agent: Twinkle/1.1
Content-Length: 23

%p0501Mensaje de prueba
#
U +0.160734 172.26.0.29:5060 -> 172.26.0.25:5060

exit
9 received, 0 dropped
orencio@ubuntu:~$

Iñaki Baz Castillo

unread,
Apr 23, 2008, 9:42:18 AM4/23/08
to aster...@googlegroups.com
El Wednesday 23 April 2008 13:27:11 Iñaki Baz Castillo escribió:
> El Wednesday 23 April 2008 11:01:40 HORMAX escribió:
> > He hecho la prueba enviando mensaje desde Twinkle con la llamada
> > establecida y ni llega nada al teléfono ni aparece ningun mensaje de
> > error en Twinkle.
>
> Aunque la llamada esté establecida Twinkle envía el MESSAGE fuera de
> diálogo (o sea, sin "tag" en el header "To").
>
> > Creo que tu apreciación es correcta, este teléfono parece que solo
> > está admitiendo mensajes in-dialog, mientras que Twinkle lo hace con
> > initial-request.
>
> Pero algún error tiene que decir. ¿Puedes ejecutar ngrep en la máuqina
> donde corres Twinkle y pegar la traza cuando Twinkle envía el MESSAGE?

o si no pega lo que te diga el log del twinkle al enviar el MESSAGE:

~/.twinkle/twinkle.log

Iñaki Baz Castillo

unread,
Apr 23, 2008, 9:47:56 AM4/23/08
to aster...@googlegroups.com
El Wednesday 23 April 2008 11:40:32 HORMAX escribió:
> Lo he hecho con ngrep, Twinkle está en la IP ...25:5061, donde también
> corre Asterisk en el puerto 5060 y el teléfono en la IP ...29 y
> entonces Twinkle ha dado el error:
>
> Delivery failure: 408 Request Timeout

Ok, sencillamente ni response. Entonces no creo que no permita MESSAGE fuera
de diálogo, ya que al menos tendría que responder con un "Method not
upported" o algún error 4XX. No es normal que no responda nada, luego pienso
que ese teléfono sólo permite recibir peticiones desde el proxy/pbx en el que
se registra (o sea, 172.26.0.25:5060, pero no desde 172.26.0.25:5061).
¿Qué teléfono es?

Haz una prueba bestia: apaga el Asterisk y pon a Twinkle en el 5060 y prueba
de nuevo.

HORMAX

unread,
Apr 23, 2008, 8:10:08 AM4/23/08
to asterisk-es
Hice la prueba con Twinkle en el 5060 y la respuesta fué el mismo
mensaje de error.

<Delivery failure: 408 Request Timeout>

El teléfono es un GCE5019VoIP, que el fabricante modificó para que
pudiera recibir mensajes en las coordenadas de pantalla que se le
indique.

Con SendText() funcionó bién pero no sé como enviarle una sucesión de
SendText() en el transcurso de una llamada para que el display se vaya
actualizando.

paco gil

unread,
Apr 23, 2008, 8:23:14 AM4/23/08
to aster...@googlegroups.com
"amos haber".... usar "Originate" con el manager no te vale????

2008/4/23 HORMAX <hor...@gmail.com>:

--
http://ualtech.wordpress.com

Iñaki Baz Castillo

unread,
Apr 23, 2008, 11:02:35 AM4/23/08
to aster...@googlegroups.com
El Wednesday 23 April 2008 12:10:08 HORMAX escribió:
> Hice la prueba con Twinkle en el 5060 y la respuesta fué el mismo
> mensaje de error.
>
> <Delivery failure: 408 Request Timeout>
>
> El teléfono es un GCE5019VoIP, que el fabricante modificó para que
> pudiera recibir mensajes en las coordenadas de pantalla que se le
> indique.

Vale, probemos una cosa. Te adjunto un scritp que he hecho en Ruby (necesitas
ruby instalado).

Quita el Asterisk y Twinkle y haz dos pruebas:

~# ruby send_message.rb user@IP_tfno "hola que tal"

~# ruby send_message.rb user@IP_tfno "hola que tal" --in-dialog


En ambos casos pega la salida.


> Con SendText() funcionó bién pero no sé como enviarle una sucesión de
> SendText() en el transcurso de una llamada para que el display se vaya
> actualizando.

Imposible. Eso no se puede hacer con el dialplan de Asterisk puesto que si se
está ejecutnado el Dial no se está ejecutando otra cosa.

send_message.rb

HORMAX

unread,
Apr 23, 2008, 9:36:24 AM4/23/08
to asterisk-es
Eso aún no lo he probado, pero si, es una idea...

HORMAX

unread,
Apr 23, 2008, 10:01:00 AM4/23/08
to asterisk-es
Esta es la respuesta obtenida, en ningún caso se muestra salida por
display de teléfono

--------------------------------------------------------------
{
orencio@ubuntu:~$ ruby send_message.rb 4...@172.26.0.29 "%p0501Hola que
tal"


DEBUG: Sent request from 172.26.0.25:6060 to 172.26.0.29:5060
------------------------
MESSAGE sip:4...@172.26.0.29:5060 SIP/2.0
Via: SIP/2.0/UDP 172.26.0.25:6060;branch=z9hG4bK5490
Max-Forwards: 70
From: <sip:tes...@172.26.0.29>;tag=210
To: <sip:4...@172.26.0.29:5060>
CSeq: 44 MESSAGE
Call-ID: 79899674579
Contact: <sip:tes...@172.26.0.29>
Content-Type: text/plain;charset=utf-8
Content-Length: 20

%p0501Hola que tal


send_message.rb:143:in `readline': Interrupt
from send_message.rb:143

orencio@ubuntu:~$ ruby send_message.rb 4...@172.26.0.29 "%p0501Hola que
tal" --in-dialog

DEBUG: Sent in-dialog request from 172.26.0.25:6060 to
172.26.0.29:5060
------------------------
MESSAGE sip:4...@172.26.0.29:5060 SIP/2.0
Via: SIP/2.0/UDP 172.26.0.25:6060;branch=z9hG4bK6884
Max-Forwards: 70
From: <sip:tes...@172.26.0.29>;tag=1415
To: <sip:4...@172.26.0.29:5060>;tag=5577
CSeq: 27 MESSAGE
Call-ID: 50201043514
Contact: <sip:tes...@172.26.0.29>
Content-Type: text/plain;charset=utf-8
Content-Length: 20

%p0501Hola que tal


send_message.rb:143:in `readline': Interrupt
from send_message.rb:143

}
---------------------------------------------------
¿Que te parece lo que dice Paco Gil?, podria crear un context que
contenga un SendText() con los datos que quiero que reciba el display
y ejecutarlo con <originate> a través del AMI..


On 23 abr, 17:02, Iñaki Baz Castillo <i...@in.ilimit.es> wrote:
> El Wednesday 23 April 2008 12:10:08 HORMAX escribió:
>
> > Hice la prueba con Twinkle en el 5060 y la respuesta fué el mismo
> > mensaje de error.
>
> > <Delivery failure: 408 Request Timeout>
>
> > El teléfono es un GCE5019VoIP, que el fabricante modificó para que
> > pudiera recibir mensajes en las coordenadas de pantalla que se le
> > indique.
>
> Vale, probemos una cosa. Te adjunto un scritp que he hecho en Ruby (necesitas
> ruby instalado).
>
> Quita el Asterisk y Twinkle y haz dos pruebas:
>
> ~# ruby send_message.rb user@IP_tfno "hola que tal"
>
> # ruby send_message.rb user@IP_tfno "hola que tal" --in-dialog
>

> En ambos casos pega la salida.
>
> > Con SendText() funcionó bién pero no sé como enviarle una sucesión de
> > SendText() en el transcurso de una llamada para que el display se vaya
> > actualizando.
>
> Imposible. Eso no se puede hacer con el dialplan de Asterisk puesto que si se
> está ejecutnado el Dial no se está ejecutando otra cosa.
>
> ~~~~~~ uso de NGREP (captura traza SIP) ~~~~~~
> En el servidor Asterisk:
> ~$ ngrep -d any -P ' ' -W byline -T port 5060
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> --
> Iñaki Baz Castillo
> i...@in.ilimit.es
>
> send_message.rb
> 3 KDescargar

Iñaki Baz Castillo

unread,
Apr 23, 2008, 12:09:13 PM4/23/08
to aster...@googlegroups.com


No lo entiendo, es como si no se hubiese recibido el paquete UDP ya que en
caso de recibirlo ese script debe mostrar la repuesta. Ejemplo:


./send_message.rb sip:2...@192.168.1.58 "EOO"

DEBUG: Sent request from 192.168.1.58:6060 to 192.168.1.58:5060
------------------------
MESSAGE sip:2...@192.168.1.58:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.58:6060;branch=z9hG4bK3361
Max-Forwards: 70
From: <sip:tes...@192.168.1.58>;tag=20
To: <sip:2...@192.168.1.58:5060>
CSeq: 7 MESSAGE
Call-ID: 54662124714
Contact: <sip:tes...@192.168.1.58>
Content-Type: text/plain;charset=utf-8
Content-Length: 5

EOO

DEBUG: Received response from 192.168.1.58:5060 to 192.168.1.58:6060
------------------------
SIP/2.0 200 OK
v: SIP/2.0/UDP 192.168.1.58:6060;branch=z9hG4bK3361
t: <sip:2...@192.168.1.58:5060>;tag=kewhv
f: <sip:tes...@192.168.1.58>;tag=20
i: 54662124714
CSeq: 7 MESSAGE
Server: Twinkle/1.2alpha2
l: 0

> ---------------------------------------------------
> ¿Que te parece lo que dice Paco Gil?, podria crear un context que
> contenga un SendText() con los datos que quiero que reciba el display
> y ejecutarlo con <originate> a través del AMI..

Sí, seguro que funcionaría. Pero lo que me mosquea es porqué demonios ese
teléfono no recibe los MESSAGE. Su comportamiento es raro de narices.

Iñaki Baz Castillo

unread,
Apr 23, 2008, 12:27:11 PM4/23/08
to aster...@googlegroups.com
El Wednesday 23 April 2008 16:09:13 Iñaki Baz Castillo escribió:

> Sí, seguro que funcionaría. Pero lo que me mosquea es porqué demonios ese
> teléfono no recibe los MESSAGE. Su comportamiento es raro de narices.

Mira por ejemplo lo que dice el nuevo firmware de los Linksys:

10.Support reception and display of text messages sent to the phone using the SIP
MESSAGE method. A few new parameters to control this features:
[REGIONAL]<Alert Tone>: A TONE SCRIPT. This should be a brief tone which
plays whenever the phone receives a new text message
[USER]<Text Message>: Enable/disable reception of text messages sent by
the SIP Proxy server.Default is "yes"
[USER]<Text Message From 3rd Party>: Enable/disable reception of text messages sent by
a third party (other than the SIP Proxy server).
Default is "no".
[USER]<Alert Tone Off>: Enable/disable playing the Alert tone on reception
of new text messages. Default is "no"

HORMAX

unread,
Apr 23, 2008, 11:37:47 AM4/23/08
to asterisk-es
Lo he intentado con originate y he aqui los resultados

En extensions.conf he creado el context: text

[text]
exten => 43,1,Answer (esta línea da igual que no esté el resultado
es el mismo)
exten => 43,n,SendText(%p0502Texto enviado por text)

Luego me he registrado con AJAM, descolgado el tfno y establecida una
llamada, comprobado que hay conexión y enviado:

http://localhost:8088/asterisk/rawman?action=originate&channel=SIP/43&context=text&exten=43&priority=1

----------------------------------------------------------------
El resultado ha sido una llamada que le entra a la segunda línea del
telefono, pero el mensaje sigue sin aparecer.

Iñaki Baz Castillo

unread,
Apr 23, 2008, 1:45:35 PM4/23/08
to aster...@googlegroups.com
El Wednesday 23 April 2008 15:37:47 HORMAX escribió:
> El resultado ha sido una llamada que le entra a la segunda línea del
> telefono, pero el mensaje sigue sin aparecer.

Una vez más te sugiero que captures la traza SIP de todo esto puesto que lo
vital es saber si el tfno responde o no (aunque responda un 4XX o 5XX).
Decir "el mensaje sigue sin aparecer" no ayuda.


~~~~~~ uso de NGREP (captura traza SIP) ~~~~~~
En el servidor Asterisk:
~$ ngrep -d any -P ' ' -W byline -T port 5060
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

--
Iñaki Baz Castillo
i...@in.ilimit.es

HORMAX

unread,
Apr 23, 2008, 11:57:49 AM4/23/08
to asterisk-es
Disculpa Iñaki, tienes razón, ahí va la traza

interface: any
filter: (ip or ip6) and ( port 5060 )
#
U +2.424380 172.26.0.42:5060 -> 172.26.0.25:5060
hello
#
U +1.182406 172.26.0.25:5060 -> 172.26.0.29:5060
INVITE sip:4...@172.26.0.29:5060 SIP/2.0
Via: SIP/2.0/UDP 172.26.0.25:5060;branch=z9hG4bK61e5781e;rport
From: "asterisk" <sip:aste...@172.26.0.25>;tag=as32f03e8f
To: <sip:4...@172.26.0.29:5060>
Contact: <sip:aste...@172.26.0.25>
Call-ID: 1dbd4ad11db764f8...@172.26.0.25
CSeq: 102 INVITE
User-Agent: Asterisk PBX
Max-Forwards: 70
Date: Wed, 23 Apr 2008 15:55:57 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Supported: replaces
Content-Type: application/sdp
Content-Length: 285

v=0
o=root 29589 29589 IN IP4 172.26.0.25
s=session
c=IN IP4 172.26.0.25
t=0 0
m=audio 15746 RTP/AVP 3 0 8 101
a=rtpmap:3 GSM/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=silenceSupp:off - - - -
a=ptime:20
a=sendrecv

#
U +0.017912 172.26.0.29:5060 -> 172.26.0.25:5060
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 172.26.0.25:5060;branch=z9hG4bK61e5781e;rport=5060
From: "asterisk" <sip:aste...@172.26.0.25>;tag=as32f03e8f
To: <sip:4...@172.26.0.29:5060>
Call-ID: 1dbd4ad11db764f8...@172.26.0.25
CSeq: 102 INVITE
User-Agent: 03/19-07.22.33
Content-Length: 0


#
U +0.004984 172.26.0.29:5060 -> 172.26.0.25:5060
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP 172.26.0.25:5060;branch=z9hG4bK61e5781e;rport=5060
From: "asterisk" <sip:aste...@172.26.0.25>;tag=as32f03e8f
To: <sip:4...@172.26.0.29:5060>;tag=1760477822
Call-ID: 1dbd4ad11db764f8...@172.26.0.25
CSeq: 102 INVITE
Contact: <sip:4...@172.26.0.29:5060>
User-Agent: 03/19-07.22.33
Content-Length: 0


#
U +2.179152 172.26.0.29:5060 -> 172.26.0.25:5060

exit
5 received, 0 dropped


----------------------------------------------------------------------

Iñaki Baz Castillo

unread,
Apr 23, 2008, 2:02:05 PM4/23/08
to aster...@googlegroups.com
El Wednesday 23 April 2008 15:57:49 HORMAX escribió:
> Disculpa Iñaki, tienes razón, ahí va la traza

Hola. En esa traza no se ve ningún MESSAGE que haya enviado Asterisk.

HORMAX

unread,
Apr 23, 2008, 12:13:17 PM4/23/08
to asterisk-es
Efectivamente. parece que solo envia INVITES.

Por ahí iba mi pregunta al enviarte una copia del context creado en
extensions.conf, que contiene el SendText() y la peticion "originate"
con ese mismo context como parámetro.

Tal como yo lo entiendo "originate" debe ejecutar ese context y el
SendText() enviar su contenido, pero no lo hace, tan solo intenta
establecer la llamada.

-----------------------------------------------------------------------------------

Iñaki Baz Castillo

unread,
Apr 23, 2008, 2:23:43 PM4/23/08
to aster...@googlegroups.com
El Wednesday 23 April 2008 16:13:17 HORMAX escribió:
> Tal como yo lo entiendo "originate" debe ejecutar ese context y el
> SendText() enviar su contenido, pero no lo hace, tan solo intenta
> establecer la llamada.

Es normal.El SendText sólo vale en este reducido escenario:

- Un tfno llama a una extensión de Asterisk.
- Asterisk ejecuta el dialplan en el que se encuentra un SendText.

Lo que tú estás intentando no es ese escenario. Creo sinceramente que tienes
un buen follón de difícil solución:


- Tu tfno parece que sólo admite MESSAGE in-dialog, o sea, con el
mismo "To_tag", "From_tag" y "Call-ID" que una sesión de audio (INVITE) en
curso. Así que aunque lo envies desde una aplicación externa es necesario que
esos parámetros del paquete MESSAGE se respeten.
- Y aún así nos queda la duda de si el tfno aceptaría dich MESSAGE desde una
IP:puerto distinto que el Asterisk (que es con quien está hablando).

En caso de que esto último no fuese cierto (no hubiese dicha necesidad) te las
tendrías que ingeniar para que una aplicación externa enviase el MESSAGE
in-dialog con esos parámetros, que los puedes averiguar así:

asterisk*CLI> sip show channel
CAD2B545-C874-447B...@192.168.1.72
asterisk*CLI>
* SIP Call
Curr. trans. direction: Incoming
Call-ID: CAD2B545-C874-447B...@192.168.1.72
Owner channel ID: <none>
Our Codec Capability: 1572878
Non-Codec Capability (DTMF): 1
Their Codec Capability: 0
Joint Codec Capability: 0
Format: 0x0 (nothing)
MaxCallBR: 0 kbps
Theoretical Address: 192.168.1.72:5060
Received Address: 192.168.1.72:5060
SIP Transfer mode: open
NAT Support: RFC3581
Audio IP: 192.168.1.213 (local)
Our Tag: as2587a196
Their Tag: 3064610920472
SIP User agent:
Need Destroy: 0
Last Message: Rx: OPTIONS
Promiscuous Redir: No
Route: N/A
DTMF Mode: rfc2833
SIP Options: (none)


En el MESSAGE que deberías generar:
- From tag = as2587a196
- To tag = 3064610920472
- Call-ID = CAD2B545-C874-447B...@192.168.1.72


Pero veo demasiadas dudas. Lo mejor sería que contactases con el proveedor que
ha hecho ese firmware y te explicase qué requisitos ha introducido para
aceptar o no el MESSAGE (¿debe ser in-dialog? ¿debe ser desde la misma
IP:puerto que el proxy?).

paco gil

unread,
Apr 23, 2008, 12:35:48 PM4/23/08
to aster...@googlegroups.com
"amos haber vien"... no hemos quedao que el "Originate" según

http://www.voip-info.org/wiki/view/Asterisk+Manager+API+Action+Originate

tiene un apartado que es:

Application: Application to use on connect (use Data for parameters)

parece que no lo estás haciendo bien no???

2008/4/23 HORMAX <hor...@gmail.com>:

--
http://ualtech.wordpress.com

Iñaki Baz Castillo

unread,
Apr 23, 2008, 2:46:03 PM4/23/08
to aster...@googlegroups.com
El Wednesday 23 April 2008 16:35:48 paco gil escribió:
> "amos haber vien"... no hemos quedao que el "Originate" según
>
> http://www.voip-info.org/wiki/view/Asterisk+Manager+API+Action+Originate
>
> tiene un apartado que es:
>
> Application: Application to use on connect (use Data for parameters)
>
> parece que no lo estás haciendo bien no???

Pero es que ese teléfono al que llama no va a terminar de "conectar" porque
está atendiendo otra llamada, luego nunca se va a ejecutar esa aplicación.

~~~~~~ uso de NGREP (captura traza SIP) ~~~~~~
En el servidor Asterisk:
~$ ngrep -d any -P ' ' -W byline -T port 5060
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

--
Iñaki Baz Castillo
i...@in.ilimit.es

HORMAX

unread,
Apr 23, 2008, 12:55:42 PM4/23/08
to asterisk-es
Si, creo que la solución va a ser hablar con el proveedor, pero la
cosa no se presenta fácil, tengo el chino un poco oxidado...

Mientras pienso que me voy a tener que montar paquetes desde 0, que
simulen los provenientes del Asterik, pero eso va a ser una tarea de
narices...

En cualquier caso, muchas gracias por tu colaboración, cuando te pases
por Madrid, dame un toque y nos tomamos unas cañas...

On 23 abr, 20:23, Iñaki Baz Castillo <i...@in.ilimit.es> wrote:
> El Wednesday 23 April 2008 16:13:17 HORMAX escribió:
>
> > Tal como yo lo entiendo "originate" debe ejecutar ese context y el
> > SendText() enviar su contenido, pero no lo hace, tan solo intenta
> > establecer la llamada.
>
> Es normal.El SendText sólo vale en este reducido escenario:
>
> - Un tfno llama a una extensión de Asterisk.
> - Asterisk ejecuta el dialplan en el que se encuentra un SendText.
>
> Lo que tú estás intentando no es ese escenario. Creo sinceramente que tienes
> un buen follón de difícil solución:
>
> - Tu tfno parece que sólo admite MESSAGE in-dialog, o sea, con el
> mismo "To_tag", "From_tag" y "Call-ID" que una sesión de audio (INVITE) en
> curso. Así que aunque lo envies desde una aplicación externa es necesario que
> esos parámetros del paquete MESSAGE se respeten.
> - Y aún así nos queda la duda de si el tfno aceptaría dich MESSAGE desde una
> IP:puerto distinto que el Asterisk (que es con quien está hablando).
>
> En caso de que esto último no fuese cierto (no hubiese dicha necesidad) te las
> tendrías que ingeniar para que una aplicación externa enviase el MESSAGE
> in-dialog con esos parámetros, que los puedes averiguar así:
>
> asterisk*CLI> sip show channel
> CAD2B545-C874-447B-BED2-450188DED...@192.168.1.72
> asterisk*CLI>
> * SIP Call
> Curr. trans. direction: Incoming
> Call-ID: CAD2B545-C874-447B-BED2-450188DED...@192.168.1.72
> Owner channel ID: <none>
> Our Codec Capability: 1572878
> Non-Codec Capability (DTMF): 1
> Their Codec Capability: 0
> Joint Codec Capability: 0
> Format: 0x0 (nothing)
> MaxCallBR: 0 kbps
> Theoretical Address: 192.168.1.72:5060
> Received Address: 192.168.1.72:5060
> SIP Transfer mode: open
> NAT Support: RFC3581
> Audio IP: 192.168.1.213 (local)
> Our Tag: as2587a196
> Their Tag: 3064610920472
> SIP User agent:
> Need Destroy: 0
> Last Message: Rx: OPTIONS
> Promiscuous Redir: No
> Route: N/A
> DTMF Mode: rfc2833
> SIP Options: (none)
>
> En el MESSAGE que deberías generar:
> - From tag = as2587a196
> - To tag = 3064610920472
> - Call-ID = CAD2B545-C874-447B-BED2-450188DED...@192.168.1.72

HORMAX

unread,
Apr 23, 2008, 12:57:17 PM4/23/08
to asterisk-es
Explicate Paco, no tengop idea de para que sirve eso de Application,
¿puedes poner un ejemplo que me situe en el buén camino?

Gracias


On 23 abr, 18:35, "paco gil" <pag...@gmail.com> wrote:
> "amos haber vien"... no hemos quedao que el "Originate" según
>
> http://www.voip-info.org/wiki/view/Asterisk+Manager+API+Action+Originate
>
> tiene un apartado que es:
>
> Application: Application to use on connect (use Data for parameters)
>
> parece que no lo estás haciendo bien no???
>
> 2008/4/23 HORMAX <hor...@gmail.com>:
>
>
>
>
>
> > Lo he intentado con originate y he aqui los resultados
>
> > En extensions.conf he creado el context: text
>
> > [text]
> > exten => 43,1,Answer (esta línea da igual que no esté el resultado
> > es el mismo)
> > exten => 43,n,SendText(%p0502Texto enviado por text)
>
> > Luego me he registrado con AJAM, descolgado el tfno y establecida una
> > llamada, comprobado que hay conexión y enviado:
>
> > http://localhost:8088/asterisk/rawman?action=originate&channel=SIP/43...

paco gil

unread,
Apr 23, 2008, 12:49:26 PM4/23/08
to aster...@googlegroups.com
2008/4/23 Iñaki Baz Castillo <i...@in.ilimit.es>:

>
> El Wednesday 23 April 2008 16:35:48 paco gil escribió:
>
> > "amos haber vien"... no hemos quedao que el "Originate" según
> >
> > http://www.voip-info.org/wiki/view/Asterisk+Manager+API+Action+Originate
> >
> > tiene un apartado que es:
> >
> > Application: Application to use on connect (use Data for parameters)
> >
> > parece que no lo estás haciendo bien no???
>
> Pero es que ese teléfono al que llama no va a terminar de "conectar" porque
> está atendiendo otra llamada, luego nunca se va a ejecutar esa aplicación.

no creo... ten en cuenta que en un funcionamiento normal por dialplan,
el telefono muestra mensajes (recibidos con SendText(), claro), con el
canal respondido (despues de un answer).... Yo tengo telefonos basados
en el chipset de palmmicro PA168 (el nuevo AR1688) y funcionan bien.

supongo que es cuestión de probar ;)


>
>
>
> ~~~~~~ uso de NGREP (captura traza SIP) ~~~~~~
> En el servidor Asterisk:
> ~$ ngrep -d any -P ' ' -W byline -T port 5060
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> --
> Iñaki Baz Castillo
> i...@in.ilimit.es
>
>
>
> >
>

--
http://ualtech.wordpress.com

paco gil

unread,
Apr 23, 2008, 1:09:11 PM4/23/08
to aster...@googlegroups.com
mirate este ejemplo y practica (no me he parado a entender lo que hace
con el telefono snom, pero parece que le activa y desactiva el dnd):

[snom_setdndon]
exten => _.,1,NoOp(Dummy Routine Called for ${EXTEN})
exten => _.,n,TrySystem(wget -qb -O /dev/null -o /dev/null
"http://admin:${SNOM_PASSWD}@${EXTEN}/dummy.htm?settings=save&dnd_mode=on")
exten => _.,n,Hangup

[snom_setdndoff]
exten => _.,1,NoOp(Dummy Routine Called for ${EXTEN})
exten => _.,n,TrySystem(wget -qb -O /dev/null -o /dev/null
"http://admin:${SNOM_PASSWD}@${EXTEN}/dummy.htm?settings=save&dnd_mode=off")
exten => _.,n,Hangup

and then from the manager interface one can do:

Action: Originate
Channel: Local/192.168.1.21@snom_setdndon
Application: NoOp
Data: Setting DND

Tu podrías intentar

Action: Originate
Channel: elquesea
Application: SendText
Data: Chino mamon, muestrame el mensaje en pantalla

XDDD

2008/4/23 HORMAX <hor...@gmail.com>:

--
http://ualtech.wordpress.com

HORMAX

unread,
Apr 23, 2008, 1:47:32 PM4/23/08
to asterisk-es
Seguí tus instrucciones pero el "chino mamón" no mostró el mensaje en
pantalla, te pego lo que me devolvió el ngrep, que viene a ser lo
mismo que antes.

El telefono recibiouna llamada por la linea 2, aparentemente
"originate" siempre genera una llamada,

¿No existe otra manera de que se ejecute una funcion Asterisk?

interface: any
filter: (ip or ip6) and ( port 5060 )
#
U +3.192974 172.26.0.25:5060 -> 172.26.0.29:5060
INVITE sip:4...@172.26.0.29:5060 SIP/2.0
Via: SIP/2.0/UDP 172.26.0.25:5060;branch=z9hG4bK550d10fb;rport
From: "asterisk" <sip:aste...@172.26.0.25>;tag=as657f98c4
Call-ID: 3f9d9f652862f5de...@172.26.0.25
CSeq: 102 INVITE
User-Agent: Asterisk PBX
Max-Forwards: 70
Date: Wed, 23 Apr 2008 17:42:06 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Supported: replaces
Content-Type: application/sdp
Content-Length: 285

v=0
o=root 29589 29589 IN IP4 172.26.0.25
s=session
c=IN IP4 172.26.0.25
t=0 0
m=audio 14004 RTP/AVP 3 0 8 101
a=rtpmap:3 GSM/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=silenceSupp:off - - - -
a=ptime:20
a=sendrecv

#
U +0.017895 172.26.0.29:5060 -> 172.26.0.25:5060
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 172.26.0.25:5060;branch=z9hG4bK550d10fb;rport=5060
From: "asterisk" <sip:aste...@172.26.0.25>;tag=as657f98c4
To: <sip:4...@172.26.0.29:5060>
Call-ID: 3f9d9f652862f5de...@172.26.0.25
CSeq: 102 INVITE
User-Agent: 03/19-07.22.33
Content-Length: 0


#
U +0.005537 172.26.0.29:5060 -> 172.26.0.25:5060
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP 172.26.0.25:5060;branch=z9hG4bK550d10fb;rport=5060
From: "asterisk" <sip:aste...@172.26.0.25>;tag=as657f98c4
To: <sip:4...@172.26.0.29:5060>;tag=1466636044
Call-ID: 3f9d9f652862f5de...@172.26.0.25
CSeq: 102 INVITE
Contact: <sip:4...@172.26.0.29:5060>
User-Agent: 03/19-07.22.33
Content-Length: 0


#
U +14.315846 172.26.0.42:5060 -> 172.26.0.25:5060
hello
#
U +0.893455 172.26.0.29:5060 -> 172.26.0.25:5060

exit
5 received, 0 dropped


paco gil

unread,
Apr 23, 2008, 1:52:48 PM4/23/08
to aster...@googlegroups.com
jeje, a mi no me mandes ngrepes que me hundes!!!! todavía sigo como
cabra loca por el monte XDDD

yo creo que hay algo que no estás haciendo bien en el manager, ya que
no estas enviando MESSAGES, sino INVITES... y obviamente el teléfono,
aunque es chino, no es tan listo :)

2008/4/23 HORMAX <hor...@gmail.com>:

--
http://ualtech.wordpress.com

paco gil

unread,
Apr 23, 2008, 4:59:05 PM4/23/08
to aster...@googlegroups.com
despues de mirar un rato lo del originate... creo que no vale. PArece
que es útil para iniciar una llamada, pero no ejecutar una aplicación.
Según lo estoy mirando, siempre empieza mandando INVITES, o sea que
parece que no sirve...

2008/4/23 paco gil <pag...@gmail.com>:

--
http://ualtech.wordpress.com

Iñaki Baz Castillo

unread,
Apr 24, 2008, 6:02:03 AM4/24/08
to aster...@googlegroups.com
El Wednesday 23 April 2008 20:59:05 paco gil escribió:
> despues de mirar un rato lo del originate... creo que no vale. PArece
> que es útil para iniciar una llamada, pero no ejecutar una aplicación.
> Según lo estoy mirando, siempre empieza mandando INVITES, o sea que
> parece que no sirve...

Es que el originate origina una llamada, o sea, un INVITE. :)


~~~~~~ uso de NGREP (captura traza SIP) ~~~~~~
En el servidor Asterisk:
~$ ngrep -d any -P ' ' -W byline -T port 5060
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

--
Iñaki Baz Castillo
i...@in.ilimit.es

Reply all
Reply to author
Forward
0 new messages