3.1.1 • Published 7 months ago

esl-lite v3.1.1

Weekly downloads
-
License
-
Repository
-
Last release
7 months ago

FreeSwitch Event Socket Client

esl-lite is a dedicated, optimized, simplified, client-only version of the esl package for Node.js.

This package is written in TypeScript, includes JsDoc inline documentation and extensive type definitions (including events), and exposes both CJS and ESM versions.

Like the venerable esl package (started in 2011), it is used in production worldwide.

Which package should I use?

Use esl only if server mode is required.

Use esl-lite otherwise. Event Socket server-mode does not scale well.

Installation

npm i esl-lite
yarn add esl-lite

Getting Started

import { FreeSwitchClient } from 'esl-lite'
import pino from 'pino'

const logger = pino.default()
const client = new FreeSwitchClient({ logger })

client.on('CHANNEL_CREATE', (msg) => {
  logger.info( msg.body.data, 'new call')

  const uuid = msg.body.uniqueID
  if (uuid) {
    // Send command to a specific channel!
    client.command_uuid(uuid, 'answer', '', 4000).catch( logger.error )
  }
})

// Send generic commands
await await.bgapi('originate sofia/profile/sip:destination@host &park')

// For CUSTOM messages with Event-Subclass, use the `.custom` event-emitter.
client.custom.on('conference::maintenance', (msg) => { … })

Exception reporting

esl-lite should never throw or reject. Instead, all methods report errors using custom classes. These are clearly listed in the TypeScript return types.

Documentation

FreeSwitchClient is the main class and provides most features.

Source

The primary repository is https://g.rie.re/shimaore/esl-lite

Also available on Github and Gitlab.

About

Written by Stéphane Alnet

Changelog

v3.0

  • simplified: reconnection handling is now hidden
    • missed commands are automatically requeued upon reconnection
  • expanded documentation
  • added .logs event emitter

v2.0

  • added automatic event json when subscribing to events
  • made .event_json method private since it is no longer needed — added .custom event-emitter to properly serve CUSTOM events
3.0.4

7 months ago

3.1.1

7 months ago

3.1.0

7 months ago

3.0.3

9 months ago

3.0.2

9 months ago

3.0.1

9 months ago

3.0.0

10 months ago

2.0.1

11 months ago

2.0.0

11 months ago

1.2.1

1 year ago

1.2.0

1 year ago

1.1.0

1 year ago

1.0.1

1 year ago