How to do routing using javascript
From Yate Documentation
(Difference between revisions)
(→Routing Script) |
(→Configure a gateway) |
||
| Line 10: | Line 10: | ||
===Configure a gateway=== | ===Configure a gateway=== | ||
| − | The example.js for outside routing requires to configure [[Accfile|accfile.conf]]. | + | The example.js for outside routing requires to configure [[Accfile|accfile.conf]]: |
| + | |||
| + | [gwout] | ||
| + | enabled=yes | ||
| + | protocol=sip | ||
| + | username=outcalls | ||
| + | password=789out123 | ||
| + | registrar=192.168.168.1 | ||
=== Routing Script=== | === Routing Script=== | ||
Revision as of 16:08, 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=789out123 registrar=192.168.168.1
Routing Script
File example.js must stay 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