How to do routing using javascript

From Yate Documentation
(Difference between revisions)
Jump to: navigation, search
(Configure a gateway)
(Routing Script)
Line 21: Line 21:
 
=== Routing Script===
 
=== Routing Script===
  
File example.js must stay in /share/scripts where Yate sources are.
+
Write example.js in /share/scripts where Yate sources are.
  
 
  // First display calling and called party numbers
 
  // First display calling and called party numbers

Revision as of 16:10, 10 December 2012

Routing rules written in script using Yate's Javascript module.

Configure script in Javascript module

To configure a script for Javascript routing it must be listed in the javascript.conf file:

[general]
routing=example.js

Configure a gateway

The example.js for outside routing requires to configure accfile.conf:

[gwout]
enabled=yes
protocol=sip
username=outcalls
password=mypass
registrar=a.b.c.d

Routing Script

Write example.js in /share/scripts where Yate sources are.

// First display calling and called party numbers
Engine.output("Got call from '" + message.caller + "' to '" + message.called + "'");

if (message.called.substr(0,2)=="19") {
        // route calls starting with 19 to 192.168.168.1
        // 5060 is the default SIP port. When using the default port you don't need to specify it
        Channel.callJust("sip/sip:" + message.called + "@192.168.168.1:5060");
} else if (message.called.substr(0,2)=="00" && message.called.length>10) {
        //route calls using a function 
        routeOutside();
} else if (message.called.match("^60")) {
        //route calls starting with 60 to 192.168.168.1
        Channel.callJust("h323/"+message.called+"@192.168.168.1:1720");
} else if (message.caller=="209") {
        //route calls from caller: 209
        Channel.callJust("iax/user_iax@192.168.168.1:4569/"+message.called+"@iaxcontext");
} else {
        //route other calls that don't match the above rules 
        Channel.callJust("wave/play//var/spool/sounds/hello.au");
}

function routeOutside()
{
        // rewrite caller number for all calls that will be routed to this account
        message.caller = "+40211231234";
        // rewrite called number: strip 00 and add +_in front of the number
        message.called = "+" + message.called.substr(2);
        // send all calls starting with +40 to line "gwout" defined in accfile.conf
        message.line = "gwout";
        Channel.callJust("line/"+message.called);
}


See also

Personal tools
Namespaces

Variants
Actions
Preface
Configuration
Administrators
Developers