Using SIP MESSAGE or how to enable chat messages in SIP
(→Custom applications) |
(→Custom applications) |
||
Line 30: | Line 30: | ||
If you want to build a custom application with the use of SIP MESSAGE request then you will have to enable it from configuration and intercept the [[call.route]] message. You can do this in diffent ways: [[Javascript|javascript script]], external module, [[Regular expresions|regexroute]] etc. | If you want to build a custom application with the use of SIP MESSAGE request then you will have to enable it from configuration and intercept the [[call.route]] message. You can do this in diffent ways: [[Javascript|javascript script]], external module, [[Regular expresions|regexroute]] etc. | ||
− | Here is an example | + | Here is an example of a [[javascript]] global script: |
− | + | function onCallRoute(msg) | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
{ | { | ||
− | + | Engine.output("Handling call.route caller="+msg.caller+" called="+msg.called); | |
− | + | ||
+ | if (msg.route_type=="msg") { | ||
+ | if (msg.caller!="101") { | ||
+ | Engine.output("Stopping sip message for user "+msg.caller); | ||
+ | msg.reason = "rejected"; | ||
+ | } | ||
+ | } | ||
} | } | ||
+ | |||
+ | Message.install(onCallRoute, "call.route", 50); | ||
==Debugging== | ==Debugging== |
Revision as of 15:10, 25 October 2013
Starting with Yate 5 or svn revision 5629 yate changed the way it handles SIP MESSAGE request method.
You can now enable chat messages between SIP clients much easier.
Contents |
Configuration
In ysipchan.conf section message set enable=yes.
[message] ; Controls the behaviour for SIP messaging ; enable: bool: Allow the SIP module to receive MESSAGE requests enable=yes ; auth_required: bool: Automatically challenge all senders for authentication ;auth_required=enable ; async_process: bool: Process SIP MESSAGE asynchronously in their own thread ;async_process=enable
How it works
Default behaviour
When yate receives SIP MESSAGE request from user it will send a call.route message with route_type='msg'.
This message will be handled by the routing module. You won't need to make other configurations besides the ones you normally do for allowing SIP calls besides enabling messages in ysipchan.conf.
To test this set two clients in regfile.conf and send chat messages between the two of them. Regfile module will handle the authentication, registration and routing of the users.
Custom applications
If you want to build a custom application with the use of SIP MESSAGE request then you will have to enable it from configuration and intercept the call.route message. You can do this in diffent ways: javascript script, external module, regexroute etc.
Here is an example of a javascript global script:
function onCallRoute(msg) { Engine.output("Handling call.route caller="+msg.caller+" called="+msg.called);
if (msg.route_type=="msg") { if (msg.caller!="101") { Engine.output("Stopping sip message for user "+msg.caller); msg.reason = "rejected"; } } }
Message.install(onCallRoute, "call.route", 50);
Debugging
You don't have 'message' section in ysipchan.conf
If you don't have this section in ysipchan.conf then you need to update yate to a newer version.
- After updating you will notice that ysipchan.conf.sample was changed.
- Backup old ysipchan.conf,
- Rename ysipchan.conf.sample to ysipchan.conf and
- Apply old configuration from backup file to new ysipchan.conf.
- You should have message section in ysipchan.conf
- Set enable=yes in message section
- Restart Yate
501 Not Implemented
If you receive '501 Not Implemented' from Yate it means that you didn't set 'enable=yes' in message section or the Yate is too old and you need to install a newer version.
SIP/2.0 501 Not Implemented
405 Method Not Allowed
If you receive '405 Method Not Allowed' then the user you are trying to send a message to is offline.
SIP/2.0 405 Method Not Allowed
See also