Call Storage (callstore)

Description

A repository of active calls and their contexts.

Accumulates and aggregates call lifecycle events.
Tracks dialogs and augments the event stream if the process or server serving the dialog crashes.
Forms and saves a complex CDR to the `cdr/COPM3_dialogs` data model collection of the master domain.
By means of enhancements, it can be supplemented by storing data on, for example, initiated calls (invites), calls (forks), holds (holds) and extended dialogs and the connections between them.

Divided into microservices by domain. Data is automatically synchronized between sites serving the domain.
Reserved in Active-Passive mode. Scaled by domain tree partitioning.

Table 1. System Characteristics

Code

callstore

Mode of operation

Storage

Backup mode

Active-Passive

Types of sites

Any

Layer

Business logic

Placement

Internal

Saving and restoring state on reboot

Yes

appendix

era_callstore

Own storage

ODB Mnesia

Parameters

Table 2. Parameters
Name Type Default Description

name

str

required

Name. May consist of Latin letters and numbers, must begin with a letter.

roletype

str

required

Role Type. Possible values: "callstore".

iface

str

required

The alias of the server network interface on which the roles will interact internally with each other.

ext

json

empty

Additional role options. Contains a json object or list.

enabled

bool

empty

Role activity flag. When set to false, the role does not participate in validation and is not started.

group

int

required

Group Number.
As part of horizontal scaling, a role can be divided into multiple groups on a site, with only one instance active in each group and the rest reserved.
Responsibilities between groups are shared across domain sets. Together, all groups maintain a complete domain set. All roles in the same group must have the same responsibility.
Integer from 1 to 9999999.

order

int

required

The order of a role instance within a group.
Defines in what order the flow in the mode will take place Active-Passive.

include_domains

array<str>

empty

A list of domain names served by this group.
Any domain of any level can be specified. Specifying a domain causes its subdomain tree to be served on this group and not on other role groups, excluding only those branches mentioned in other groups.
Collectively, all role groups on a site serve a complete domain tree.

cdr_enabled

bool

true

The CDR tracking mode switch for all calls.
The mode allows:

  • monitor dialog availability of all calls, and in case of their failures generate drop events, monitor RTP activity and timely send a command to mix the record of the dialog that has become unavailable.

  • Prepare comprehensive call information - one for each call - for further placement in the collection 'cdr/COPM3/dialogs'.

sorm3_enabled

bool

false

Turns off the operation of creating and placing aggregated information for each call in the collection 'cdr/COPM3/dialogs'.
Only relevant when the mode is enabled 'cdr_enabled'.

mnesia_storage_mode

str

disc "Mode of operation of object storage.

Possible options:

* disc - full mode

in RAM with saving to disk on all instances of the group.

  • ram - only in RAM (with support for distributed

transactional). If all instances of the group are rebooted/shut down simultaneously

Configuration example

The configuration is managed in an application available to master domain administrators. The application hides the full content of the configuration, but it is nevertheless accessible via the API.

The configuration contains a section to describe all instances of all roles. Parameters are defined for each specific role instance.

Example node
{
  "name": "callstore1",
  "roletype": "callstore",

  "group": 11010,
  "order": 1,

  "include_domains": []
}

See also