Hi, im a student and we are devloping a training sytem for radio operators (for ships, police, ...) at our university. So far we are using a simple own protocol for speech and data transmission, works well at a Lan. Now we are looking for a way to connect the devices over the internet. I did some very quick testing with Asterisk and PJSIP [1] and it looks very promising. Apart from the voice transmission we need to sent some Data too (like used frequency, GPS position, very small data, about 5 kByte a minute). So my first thougt was to use SIP/Messages but some time of searching shows that asterisk doesn't handle this. We could of course use an extra tcp connection but this seems not very elegant to me ;-) because SIP should handle that... The Asterisk Console shows that asterisk drops the message: WARNING[15294]: chan_sip.c:9769 receive_message: Received message to <sip:test.user2 at 192.168.1.104> from <sip:192.168.1.101>;tag=yNOCnaUdAjHob7Gmpl-5tjCuNmQDeGJp, dropped it... Content-Type:text/plain Message: gnaaa Is there a way to get this message out of the server - to the AMI Interface for example? This would enough for us, because only our server needs to read the messages and maybe sent an answer. Or someone has an even better idee how to achive this? Thank you, Thorsten Stoffregen [1] www.pjsip.org/
On Wednesday 27 January 2010 15:18:41 thorsten.stoffregen at gmx.de wrote:> Hi, > > im a student and we are devloping a training sytem for > radio operators (for ships, police, ...) at our university. > So far we are using a simple own protocol for speech and data > transmission, works well at a Lan. Now we are looking for a way to > connect the devices over the internet. > > I did some very quick testing with Asterisk and PJSIP [1] and it looks very > promising. Apart from the voice transmission we need to sent some Data > too (like used frequency, GPS position, very small data, about 5 kByte a > minute). > > So my first thougt was to use SIP/Messages but some time of searching shows > that asterisk doesn't handle this. We could of course use an extra tcp > connection but this seems not very elegant to me ;-) because SIP should > handle that... > > The Asterisk Console shows that asterisk drops the message: > WARNING[15294]: chan_sip.c:9769 receive_message: Received message to > <sip:test.user2 at 192.168.1.104> from > <sip:192.168.1.101>;tag=yNOCnaUdAjHob7Gmpl-5tjCuNmQDeGJp, dropped it... > Content-Type:text/plain > Message: gnaaa > > Is there a way to get this message out of the server - to the AMI Interface > for example? This would enough for us, because only our server needs to > read the messages and maybe sent an answer. Or someone has an even better > idee how to achive this?That's not exactly true. Asterisk merely requires that a call be up in order to pass text messages. It does not, however, allow text messages to be passed stateless. -- Tilghman Lesher Digium, Inc. | Senior Software Developer twitter: Corydon76 | IRC: Corydon76-dig (Freenode) Check us out at: www.digium.com & www.asterisk.org
> That's not exactly true. Asterisk merely requires that a call be up > in order > to pass text messages. It does not, however, allow text messages to > be passed > stateless.Thanks for the answer, I testet it and it works for connected calls. But I have to send data even when the devices are in different conferences, so this will not work for us. Thorsten Stoffregen Sackwaldstr. 25 31061 Alfeld Tel: +49 5181 5191 Mobil: +49 173 6404335 Fax: +49 5181 807993
> By the way, Asterisk writes the contents of the SIP message to the > log, so at least there it is accessible. And since Asterisk is open source > you can extend it as needed, I think there would be quite some interest > here in slightly better testmessage features (ref. inbound SMS).Ok I found a quick and dirty way to grab the messages. In chan_sip.c Asterisk drops the message: ast_log(LOG_WARNING,"Received message to %s from %s, dropped it...\n Content-Type:%s\n Message: %s\n", get_header(req,"To"), get_header(req,"From"), content_type, buf); transmit_response(p, "405 Method Not Allowed", req); /* Good enough, or? */ So I changed the response to: transmit_response(p, "202 Accepted", req); and send the message to the AMI: manager_event(EVENT_FLAG_CALL, "MessageReceived", "From: %s\r\nTo: %s\r\nContent-Type: %s\r\nMessage: %s\r\n", get_header(req,"From"), get_header(req,"To"), content_type, buf); Its a quick way for me to get the messages, so I can go on and put a prototype together ;-) And do some further testing.... Thorsten Stoffregen