Using SIP MESSAGE or how to enable chat messages in SIP

From Yate Documentation
Revision as of 15:19, 25 October 2013 by Monica (Talk | contribs)

Jump to: navigation, search

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 different ways: javascript global script, external module, regexroute etc.

Here is an example of a javascript global script that allows SIP MESSAGE only for user 101.

In javascript.conf in section scripts:

[scripts]
sip_messages=filter_sip_messages.js

Then in file filter_sip_messages.js from share/scripts directory in yate's sources (unless you configured a different path in javascript.conf or you installed yate) copy:

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

Personal tools
Namespaces

Variants
Actions
Preface
Configuration
Administrators
Developers