JSPM

  • Created
  • Published
  • Downloads 531
  • Score
    100M100P100Q106178F
  • License MIT

utility functions for querying jambonz redis database

Package Exports

  • @jambonz/realtimedb-helpers
  • @jambonz/realtimedb-helpers/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@jambonz/realtimedb-helpers) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

jambonz-realtimedb-helpers CI

A set of helper functions to access data in the jambonz in-memory database (currently implemented using redis).

This module exposes a function that should be called with redis configuration options and, optionally, a pino logger function. It then returns an object containing various useful functions for accessing and updating the database.

const opts = {
  "host": "localhost",
  "port": 3279
};
const logger = require('pino')();
const {updateCallStatus} = require('jambonz-realtimedb-helpers')(opts, logger);

Functions

  • updateCallStatus - adds or updates the call status for a given call identified by call Sid.
  • retrieveCallInfo - retrieves the call data for a call.
  • listCallInfo - retrieves all the calls for a given account
  • deleteCall - removes call data for a call.
  • purgeCalls - removes call data for all calls that completed some time ago.
  • synthAudio - retrieves generated tts audio from cache, or generates it

updateCallStatus

updateCallStatus(callInfo, serviceUrl)

returns a Promise yielding a boolean indicating success or failure of the operation.

Adds or updates the information about a call. The callInfo object must contain (at least) the following properties:

property description
callSid the Call Sid for this call
callId the SIP Call-ID
sipStatus the most recent sip status - a value of 100 means this is a new call that should be added
callStatus one of 'trying', 'ringing', 'early-media', 'in-progress', 'completed', 'failed', 'busy', 'no-answer', or 'queued'

Additionally, the serviceUrl parameter is required if the sipStatus is 100 (i.e. a new call). It must contain the service endpoint of the specific feature-server instance that is controlling this call.

When a call reaches a final state ('completed', 'failed', 'busy', or 'no-answer') the associated call data will be purged one hours later. This database is intended only to be used for live call information.

retrieveCallInfo

retrieveCallInfo(accountSid, callSid)

returns a Promise yielding the call information as an object.

Retrieves the call information associated with a given call sid, if available.

const callInfo = await retrieveCallInfo(accountSid, callSid);
if (!callInfo) {
  logger.info(`call for ${callSid} not found);
}

listCallInfo

listCallInfo(accountSid)

returns a Promise yielding an array of information about calls.

Retrieves all of the active (or recently-active) calls for an Account.

const calls = await listCallInfo(accountSid);

deleteCall

deleteCall(accountSid, callSid)

returns boolean indicating if call was successfully deleted

Deletes a Call.

const result = await deleteCall(accountSid, callSid);

purgeCalls

purgeCalls()

returns number of calls purged

Purges call data for calls that ended some time ago.

const countDeleted = await purgeCalls();

synthAudio

synthAudio({vendor, language, voice, text})

returns the path to a temporary file containing the generated audio

Generates audio for text, retrieving previously generated audio from cache if available. Audio is cached for 24 hours.

const path = await synthAudio({
  vendor: 'aws', 
  language: 'en-US', 
  voice: 'Amy', 
  text: 'This is a test'
});