0.5.3 • Published 10 months ago
@audc/rtpengine-client v0.5.3
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 errorsWebsocket 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,
pause 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, hostor{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 |
| pause recording | pauseRecording |
| 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