next-yate-compat
v0.0.5
Published
Next-Yate is Nodejs interface library to the Yate external module (Yet Another Telephony Engine) compatible to javascript.yate module
Downloads
2
Maintainers
Readme
Next-Yate-Compat (experimental)
Next-Yate-Compat is Nodejs interface library to the Yate external module (Yet Another Telephony Engine) compatible with javascript.yate module.
This is the next level of abstraction over the Next-Yate library to provide some code compatibility with original javascript.yate API
Compatibility table
| API | javascrip.yate | next-yate | (*) | | :-------------------- | :------------- | :-------- | :--------- | | Message.watch | - | yes | | | Message.unwatch | - | yes | | | Message.install | yes | yes | | | Message.uninstall | yes | yes | | | Message.enqueue | yes | yes | void | | Message.dispatch | yes | yes | async | | Message.handlers | yes | - | | | Message.installHook | yes | - | | | Message.uninstallHook | yes | - | | | Message.trackName | yes | yes | async | | Message.broadcast | yes | - | | | Message.getParam | yes | yes | | | Message.setParam | yes | yes | | | Message.copyParams | yes | yes | | | Message.retValue | yes | yes | | | Message.msgTime | yes | yes | | | Message.getColumn | yes | - | | | Message.getRow | yes | - | | | Message.getResult | yes | - | | | Engine.output | yes | yes | | | Engine.debug | yes | yes | | | Engine.alarm | yes | yes | | | Engine.sleep | yes | yes | async | | Engine.usleep | yes | yes | async | | Engine.yield | yes | - | | | Engine.idle | yes | - | | | Engine.restart | yes | - | | | Engine.dump_r | yes | yes | async | | Engine.print_r | yes | yes | | | Engine.dump_t | yes | yes | async | | Engine.print_t | yes | yes | | | Engine.debugName | yes | yes | | | Engine.debugLevel | yes | yes | | | Engine.debugEnabled | yes | yes | | | Engine.debugAt | yes | yes | | | Engine.setDebug | yes | yes | | | Engine.started | yes | yes | | | Engine.runParams | yes | - | | | Engine.configFile | yes | - | | | Engine.setInterval | yes | yes | | | Engine.setTimeout | yes | yes | | | Engine.clearInterval | yes | yes | | | Engine.clearTimeout | yes | yes | | | Engine.loadLibrary | yes | - | | | Engine.loadObject | yes | - | | | Engine.replaceParams | yes | yes | | | Engine.atob | yes | yes | | | Engine.btoa | yes | yes | | | Engine.atoh | yes | - | | | Engine.htoa | yes | - | | | Engine.btoh | yes | - | | | Engine.htob | yes | - | | | Engine.shared | yes | - | | | Engine.name | yes | yes | | | Math.abs | yes | yes | | | Math.max | yes | yes | | | Math.min | yes | yes | | | Math.random | yes | yes | different| | parseInt | yes | yes | | | isNan | yes | - | | | RegExp.test | yes | yes | | | RegExp.valid | yes | - | | | Date | yes | yes | | | XML | yes | - | | | Hasher | yes | - | | | JSON.parse | yes | yes | | | JSON.stringify | yes | yes | | | JSON.loadFile | yes | - | | | JSON.saveFile | yes | - | | | JSON.replaceParams | yes | - | | | DNS | yes | - | | | Shared | yes | - | | | File | yes | - | | | ConfigFile | yes | - | | | ConfigSection | yes | - | | | Channel | yes | yes | async | | String | yes | yes | different|
Quick start
Before starting
(If you still don't know what Yate is https://docs.yate.ro/wiki/Main_Page)
Make sure the Yate's module extmodule.yate is successfully loaded (https://docs.yate.ro/wiki/External_Module)
yate.conf:
[modules]
extmodule.yate=true
extmodule.conf:
; For network connection
[listener sample]
type=tcp
addr=127.0.0.1
port=5040
role=global
;
; Local stdin/stdout connected scripts
[scripts]
myscript.sh= ; Custom shell wrapper around Nodejs script
node.sh=my_script.js ; Run my_script.js with example wrapper: examples/node.sh
Install
npm install next-yate
Network connected script
example_compatible_api.js:
const { Engine, Message } = require("next-yate-compat").getEngine({ host: "127.0.0.1" });
Engine.output("Hello World!");
Local connected script
When launching your script, be sure that Nodejs will find the necessary libraries.
extmodule.conf:
[scripts]
node.sh=my_scrypt.js
Example of shell wrapper around Nodejs
node.sh:
#!/bin/sh
SCRIPTS=/path_to/share/scripts
export NODE_PATH=$SCRIPTS
NODE=`which node`
$NODE $SCRIPTS/$1
Direct script execution in channel mode
regexroute.conf:
^NNN=extmodule/nodata/node.sh example.js
example.js
const {Engine, Message, Channel} = require("next-yate-compat").getEngine({channel: true});
Channel.init(main, {autoring: true});
async function main(message) {
await Channel.callTo("wave/play/./share/sounds/welcome.au");
await Channel.answered();
Channel.callJust("conf/333", {"lonely": true});
}
(Please find welcome.js in /examples)