0.3.2 • Public • Published

    rtpengine-client Build Status NPM version Coverage Status

    A Promises-based nodejs client for accessing rtpengine via ng protocol


    const Client = require('rtpengine-client').Client;
    const client = new Client();
    client.ping(22222, '')
      .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, ''); // listen on a specific port and address
    // or..
    client = new Client({port: 9055, host: ''}); // 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', () => {
        .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, '', {
      '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: '}, {
      'sdp': ..
      'call-id': ..
      'from-tag': ..
    }) // ...etc



    npm i rtpengine-client

    DownloadsWeekly Downloads






    Unpacked Size

    38.8 kB

    Total Files


    Last publish


    • beachdog