How to setup chat and short file transfer using MESSAGE Request Method
From Yate Documentation
(Difference between revisions)
Line 68: | Line 68: | ||
* msg.execute is received in regexroute and is renamed to xsip.generate if callto param is a valid SIP uri. | * msg.execute is received in regexroute and is renamed to xsip.generate if callto param is a valid SIP uri. | ||
* xsip.generate will be handled by ysipchan module that will finish delivering the chat message | * xsip.generate will be handled by ysipchan module that will finish delivering the chat message | ||
+ | |||
+ | '''See also''' | ||
+ | * [http://tools.ietf.org/html/rfc3428 MESSAGE request method] | ||
+ | * [[Regular_expressions|Regexroute module]] | ||
+ | * [[Regfile| Regfile module]] | ||
+ | * [[SIP Configuration File]] |
Revision as of 17:37, 12 November 2012
This example allows chat and short files transfer between Twinkle clients using MESSAGE Request Method.
A MESSAGE request method transports instant messages using SIP.
Configuration
regexroute.conf:
[extra] sip.message=120 sip.publish=120 msg.route=25 msg.execute=90 [sip.message] ${xsip_type}^$=415 .*=echo Got SIP MESSAGE type '${xsip_type}' ${xsip_body_encoding} from '${username}': ${xsip_body} .*=enqueue msg.execute;caller=${caller};called=${called};\ domain=${domain};callto=lateroute/${called};\ body_encoding=${xsip_body_encoding};type=${xsip_type};text=${xsip_body} .*=200 [sip.publish] ${xsip_type}^application/pidf+xml$^=415 ${xsip_body}<status><basic>\(.*\)</basic></status>=echo Got SIP PRESENCE from '${username}': \1 .*=200 [msg.route] .*=rename call.route;message=msg.route [msg.execute] ${callto}^sip/\(sip:.*\)$=rename xsip.generate;\ method=MESSAGE;uri=\1;sip_From=<sip:${caller}@${domain$nosuch.dom}>;\ xsip_type=${type$text/plain};xsip_body_encoding=${body_encoding};\ xsip_body=${text}
In ysipchan.conf:
[general] maxpkt=4096 generate=yes [methods] message=yes publish=yes
To configure twinkle clients, register users in regfile.conf:
[123] password=mypass123 [234] password=mypass234
Yate flow messages
Yate receives a MESSAGE SIP Request. This will be handled generically, so a Yate message named sip.message will be sent.
- Regexroute receives this message:
- If xsip_type parameter is not set a 415 error code will be returned in SIP module, otherwise echo a message for debug purpose.
- Enqueue msg.execute message in which we'll copy the parameters defining message: caller, called, domain, callto, body_encoding, type, text. In order to deliver the message we have to find the URI for the receiving end, and for that we use lateroute. Set callto=lateroute/${called}.
- Handle message and return code 200 OK.
- Lateroute module receives the msg.execute message and sends msg.route message with called parameter the ${called} from above
- Regexroute receives msg.route and renames it to call.route
- Another module(regfile in current setup) handles call.route and returns the uri for which we need to deliver the received chat message.
- Lateroute replaces callto parameter with the returned value of the call.route message and leaves msg.execute unhandled
- msg.execute is received in regexroute and is renamed to xsip.generate if callto param is a valid SIP uri.
- xsip.generate will be handled by ysipchan module that will finish delivering the chat message
See also