Files
jambonz-node/README.md

2.7 KiB

@jambonz/node-client

A Node.js SDK for the open source jambonz CPaaS platform. Node.js applications can use this library to respond to jambonz webhooks and to make REST API calls to a jambonz platform.

Webooks

To respond to webhooks, you will need a lightweight http server. An example is shown below using express.

const WebhookResponse = require('@jambonz/node-client').WebhookResponse;
const express = require('express');
const app = express();

app.use(express.json());

app.post('/my-app', (req, res) => {
  const jambonz = new WebhookResponse();
    jambonz
      .pause({length: 1.5})
      .say({
        text: 'Good morning. This is a simple test of text to speech functionality.  That is all.  Goodbye',
        synthesizer: {
          vendor: 'google',
          language: 'en-US'
        }
      });
    res.status(200).json(app);
});

app.listen(port, () => {
  logger.info(`listening at http://localhost:${port}`);
});

See here for information on the available verbs you can use in a jambonz application, and for their associated properties.

REST API calls

Creating a client

To use the REST API you need to know your account sid and api key (both of which you can view in the jambonz portal). You generate a REST client as shown below.

const client = require('@jambonz/node-client')(<my-account-sid>, <my-api-key>, {
  baseUrl: http://<my-jambonz-sbc>
});

All of the above parameters are required (account sid, api key, and baseUrl);

Calls

Creating a call
const sid = await client.calls.create({
  from: '16172223333',
  to: {
    type: 'phone',
    number: '15083084808'
  },
  call_hook: 'http://myurl.com/myapp-webhook',
  call_status_hook: 'http://myurl.com/call-status'
});

See here for further details.

Updating a call

To update a call in progress -- for example to mute/unmute, hangup the call etc -- you need to know the call sid. Typically you would get this from a webhook sent from an existing call event.

  // play a whisper prompt to one party on the call
  await client.calls.update(<my-call-sid>, {
    whisper: {
        verb: 'say',
        text: 'You have 30 seconds remaining on this call.'
      }
    }
  });

See here for further details.

Example

See here for a full-featured example application built using this API.

Status

This project is under active development and is currently very much pre-beta.