UNPKG

@jambonz/realtimedb-helpers

Version:

utility functions for querying jambonz redis database

127 lines (98 loc) 4.62 kB
# jambonz-realtimedb-helpers ![CI](https://github.com/jambonz/realtimedb-helpers/workflows/CI/badge.svg) 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](https://github.com/NodeRedis/node_redis#rediscreateclient) and, optionally, a [pino](https://www.npmjs.com/package/pino) logger function. It then returns an object containing various useful functions for accessing and updating the database. If standalone redis is used: ``` const opts = { "host": "localhost", "port": 3279 }; const logger = require('pino')(); const {updateCallStatus} = require('jambonz-realtimedb-helpers')(opts, logger); ``` If redis with authentication is used: ``` const opts = { "host": "localhost", "port": 3279, "username": "daveh", "password": "password" }; const logger = require('pino')(); const {updateCallStatus} = require('jambonz-realtimedb-helpers')(opts, logger); ``` If redis Sentinel is used: ``` const opts = { sentinels: [ { host: '54.53.52.51', port: 6379 }, { host: '54.53.52.52', port: 6379 }, { host: '54.53.52.53', port: 6379 }, ], name: 'masterNodeName', }; const logger = require('pino')(); const {updateCallStatus} = require('jambonz-realtimedb-helpers')(opts, logger); ``` ### Functions - [updateCallStatus](#updateCallStatus) - adds or updates the call status for a given call identified by call Sid. - [retrieveCallInfo](#retrieveCallInfo) - retrieves the call data for a call. - [listCallInfo](#listCallInfo) - retrieves all the calls for a given account - [deleteCall](#deleteCall) - removes call data for a call. - [purgeCalls](#purgeCalls) - removes call data for all calls that completed some time ago. - [synthAudio](#synthAudio) - retrieves generated tts audio from cache, or generates it #### updateCallStatus `updateCallStatus(callInfo, serviceUrl)` <p style="margin: -5px 0px 10px 25px;font-size: smaller">returns a Promise yielding a boolean indicating success or failure of the operation.</p> 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)` <p style="margin: -5px 0px 10px 25px;font-size: smaller">returns a Promise yielding the call information as an object.</p> 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)` <p style="margin: -5px 0px 10px 25px;font-size: smaller">returns a Promise yielding an array of information about calls.</p> Retrieves all of the active (or recently-active) calls for an Account. ``` const calls = await listCallInfo(accountSid); ``` #### deleteCall `deleteCall(accountSid, callSid)` <p style="margin: -5px 0px 10px 25px;font-size: smaller">returns boolean indicating if call was successfully deleted</p> Deletes a Call. ``` const result = await deleteCall(accountSid, callSid); ``` #### purgeCalls `purgeCalls()` <p style="margin: -5px 0px 10px 25px;font-size: smaller">returns number of calls purged</p> Purges call data for calls that ended some time ago. ``` const countDeleted = await purgeCalls(); ``` #### synthAudio `synthAudio({vendor, language, voice, text})` <p style="margin: -5px 0px 10px 25px;font-size: smaller">returns the path to a temporary file containing the generated audio</p> 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' }); ```