rtpengine-client
v0.4.12
Published
node client for rtpengine daemon
Downloads
961
Readme
rtpengine-client
A Promises-based nodejs client for accessing rtpengine via ng protocol
Usage
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}`);
});
Constructing a client
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
Websocket support
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}`);
});
});
Making requests
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