Skip to content

KAZOO Support Channels

This documentation is curated by 2600Hz as part of the KAZOO open source project. Join our community forums here for peer support. Only features in the docs.2600hz.com/supported space are included as part of our 2600Hz Support Services plan.

Qubicle#

Introduction#

Qubicle is an application for providing call queues using Kazoo. The Qubicle application allows you to configure Kazoo users as recipients for inbound calls that are distributed amongst one or many queues. Queues are independently configured and will distribute calls according to one of several different routing methods to recipients that have been assigned to that queue that are currently available.

Concepts#

Queues#

A Queue is the primary entity in Qubicle, it represents a queue of sessions that will be distributed according to some routing method to a list of member recipients. The queue process is persistent, and will be running regardless of if there are sessions that are in queue, or if there are recipients logged in.

Recipients#

Recipients are the entity responsible for handling sessions in Qubicle. These can be though of as 'agents' in the logical sense. They encapsulate all data and state needed to determine the current availability for a recipient, the information needed to route a session to the recipient (where to send the call) as well as data that is useful for performance metrics about the recipient. The recipient process's lifetime is tied to a given recipients login state. Offline recipients are not represented in the Qubicle system. The recipient process also handles all external API interaction that allows changing of state and handling of sessions.

Sessions#

Sessions are the entity in Qubicle that represent something that a recipient handles. In the primary case this is an inbound caller. A session is created when you send a call to the Callflows Qubicle endpoint. Once the session is created it is joined into the configured queue for that endpoint and ownership is passed on to Qubicle. The session manages all data related to the entities time is the Qubicle application, such as which queues it has been a part of and for how long, which recipient handled the call, and other data that may be related to the delivery of the entity.

Configuration#

The configuration for Qubicle entities can be done via the Crossbar APIs. Examples on how to configure queues and recipients can be found in the Crossbar documentation. The full configuration schemas can be found in the schema files.

Configuration APIs#

Crossbar Queue API

Crossbar Recipient API

NOTE To configure Qubicle recipients refer to the Kazoo *users" Crossbar API to configure users. Refer to the recipient configuration schema for the values to set.

Configuration Schemas#

Queue Configuration Schema

Recipient Configuration Schema

NOTE The recipient configuration schema is the Qubicle specific configuration that must be appended to the users document for the specific user that is being configured as a recipient in Qubicle.

Events#

All entities in Qubicle emit events as they perform the actions needed to route a session to its ultimate destination. Using these events you can obtain real-time information about the state of the system, and the state of these entities.

Session Events#

A session will emit events that are relevant from the perspective of an inbound call.

Session Events

Queue Events#

A queue will emit events for all actions it takes, such as when a session joins and leaves, as well as when it is delivered to a recipient.

Queue Events

Recipient Events#

A recipient will emit events for all sessions that it is handling via a queue, as well as events about the state and availability of the recipient.

Recipient Events

Integration#

The Qubicle application integrates with Kazoo to provide call routing and delivery. This integration is achieved by using Callflows to route calls into Qubicle and Blackhole to emit events in real time via Websockets from Qubicle.

Callflows Integration#

There are two callflow modules for Qubicle that allow Kazoo to interact with it. The first and primary module is 'cf_qubicle' which will allow calls to be routed to Qubicle queues. The second is 'cf_qubicle_recipient' which will allow calls to control recipient state. This can be used to route a feature code or extension to a callflow that will allow recipients to log in and out from a device.

cf_qubicle

cf_qubicle_recipient

Blackhole Integration#

Blackhole can be used to stream Qubicle events.

Setting up Websockets with Blackhole

Features#

Event Call Props#

Event call props can be used to attach values from the inbound call object to Qubicle events that are emitted involving that call.

Event Call Props

Maintenance Module#

There are several commands in the maintenance module that can help with common admin tasks and debugging.

Maintenance Module

User Guides#

The Quickstart Guide will get you up and running with a single queue and a single recipient as quick as possible.

Quickstart Guide

The Crossbar User guide will walk you through the steps for using Qubicle as a recipient by interacting via Crossbar requests.

Crossbar User Guide

The Callflows User guide will walk you through the steps for using Qubicle from callflows, as a recipient using a phone and feature codes.

Callflows User Guide

The BLF Guide will walk you through configuring a BLF indication for recipient status.

Recipient BLF Guide