SIP Methods
(→Additional methods) |
(→Enable MESSAGE Method) |
||
Line 15: | Line 15: | ||
==== Enable MESSAGE Method ==== | ==== Enable MESSAGE Method ==== | ||
− | + | This example allows chat and short files transfer between Twinkle clients using MESSAGE request method. | |
+ | A [http://tools.ietf.org/html/rfc3428 MESSAGE request method] transports instant messages using SIP | ||
− | + | regexroute.conf: | |
− | + | ||
− | + | ||
− | + | ||
[extra] | [extra] | ||
sip.message=120 | sip.message=120 | ||
− | + | sip.publish=120 | |
+ | msg.route=25 | ||
+ | msg.execute=90 | ||
+ | |||
[sip.message] | [sip.message] | ||
+ | ${xsip_type}^$=415 | ||
.*=echo Got SIP MESSAGE type '${xsip_type}' ${xsip_body_encoding} from '${username}': ${xsip_body} | .*=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}\(.*\)=echo Got SIP PRESENCE from '${username}': | ||
+ | .*=200 | ||
+ | |||
+ | [msg.route] | ||
+ | .*=rename call.route;message=msg.route | ||
+ | |||
+ | [msg.execute] | ||
+ | ${callto}^sip/\(sip:.*\)$=rename xsip.generate;\ | ||
+ | method=MESSAGE;uri=;sip_From=;\ | ||
+ | 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 | ||
==== Enable SUBSCRIBE Method==== | ==== Enable SUBSCRIBE Method==== |
Revision as of 10:57, 9 November 2012
This page describes the Sip methods that are handled by default in Yate and how to enable the ones that are not generically handled.
Contents |
SIP Methods in Yate
Some standard SIP methods can be handled generically in Yate like INVITE, CANCEL, ACK, BYE, REFER, OPTIONS and REGISTER.
For example SIP method INFO in a dialog is handled internally by Yate but dialogless is handled generically (by using parameter lazy100 in ysipchan.conf).
Additional methods
Use section [methods] from ysipchan.conf to allow/restrict the processing of specific SIP methods. For enabled methods yate will generate internal messages with name sip.<methodname> that can be handled from other modules.
Examples
Enable MESSAGE Method
This example allows chat and short files transfer between Twinkle clients using MESSAGE request method. A MESSAGE request method transports instant messages using SIP
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}\(.*\)=echo Got SIP PRESENCE from '${username}': .*=200 [msg.route] .*=rename call.route;message=msg.route [msg.execute] ${callto}^sip/\(sip:.*\)$=rename xsip.generate;\ method=MESSAGE;uri=;sip_From=;\ 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
Enable SUBSCRIBE Method
ysipchan.conf
[methods] subscribe=yes
You then configure the allowed events for subscribing in sipfeatures.conf and define the logic for SUBSCRIBE/NOTIFY in subscription.conf.
See also