0.0.5 • Published 6 years ago
next-yate-compat v0.0.5
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=trueextmodule.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.shInstall
npm install next-yateNetwork 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.jsExample of shell wrapper around Nodejs
node.sh:
#!/bin/sh
SCRIPTS=/path_to/share/scripts
export NODE_PATH=$SCRIPTS
NODE=`which node`
$NODE $SCRIPTS/$1Direct script execution in channel mode
regexroute.conf:
^NNN=extmodule/nodata/node.sh example.jsexample.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)
Examples
API
0.0.5
6 years ago