A Promises-based nodejs client for accessing rtpengine via ng protocol
const Client = require('rtpengine-client').Client;
const client = new Client();
client.ping(22222, '39.194.250.246')
.then((res) => {
console.log(`received ${JSON.stringify(res)}`); // {result: 'pong'}
})
.catch((err) => {
console.log(`Error: ${err}`);
});
client = new Client(); // listen on any port and default address
// or..
client = new Client(9055); // listen on a specific port
// or..
client = new Client(9055, '192.168.1.10'); // listen on a specific port and address
// or..
client = new Client({port: 9055, host: '192.168.1.10'}); // listen on a specific port and address
// or..
client = new Client({timeout: 1500}); // wait a max of 1500 ms for each command reply, throw error on timeout
// or..
client = new Client({rejectOnFailure: true});
// reject promise on any command if response from rtpengine has error
// default behavior is to resolve with any response from rtpengine, even errors
const client = new Client('ws://<IP>:8080');
client.on('listening', () => {
client.statistics()
.then((res) => {
console.log('received data', res);
})
.catch((err) => {
console.log(`Error: ${err}`);
});
});
The ng request verbs (ping
, offer
, answer
, delete
, query
, start recording
, stop recording
, block DTMF
, unblock DTMF
, block media
, unblock media
) are available as methods on the client
object. The sytax for each is the same:
- the destination of the request comes first, either as
port, host
or{port, host}
- following that, if any options are required for the request, those come next in an object.
The function call returns a promise that is resolved when the response is received.
Function names are as follows:
ng verb | function name |
---|---|
ping | ping |
offer | offer |
answer | answer |
delete | delete |
query | query |
start recording | startRecording |
stop recording | stopRecording |
block DTMF | blockDTMF |
unblock DTMF | unblockDTMF |
play DTMF | playDTMF |
block media | blockMedia |
unblock media | unblockMedia |
silence media | silenceMedia |
unsilence media | unsilenceMedia |
start forwarding | startForwarding |
stop forwarding | stopForwarding |
play media | playMedia |
stop media | stopMedia |
statistics | statistics |
publish | publish |
subscribe request | subscribeRequest |
subscribe answer | subscribeAnswer |
unsubscribe | unsubscribe |
For instance
client.offer(22222, '35.195.250.243', {
'sdp': ..
'call-id': ..
'from-tag': ..
})
.then((res) => {
console.log(res); // { "result": "ok", "sdp": "v=0\r\no=..." }
})
.catch((err) => {
});
// or..
client.offer({port: 22222, host: '35.195.250.243}, {
'sdp': ..
'call-id': ..
'from-tag': ..
}) // ...etc