Skip to main content
Skip table of contents

Conversation Objects

When a customer connects to the business via a media channel such as WhatsApp, Webchat, an inbound/outbound call, etc. The system creates:

  1. A ChannelSession object to track active customer's presence on a media channel. This ChannelSession object is created following the configurations of a Channel as defined in Unified Admin. For more about Channel configurations, see Unified Admin guide.

  2. Identifies a customer via CX-Customer APIs.

  3. Creates a Conversation object for this customer if no active conversation object for this customer exists in the system. 

  4. For a customer conversation, the Controller may invite a Conversation Bot or a human agent. 

  5. If and when a human agent is required in a conversation, the Conversation is assigned to an agent as an AgentTask. For more details about Agent Tasks, see Reporting Database Schema -> agent_task table. 


A Conversation object is a container of all active customer channel sessions, human agents, and/or Conversation bots participating in the interaction. It's a dynamic object created on the first event to/from a customer if there does not exist one for this customer. Typically, there is only one Conversation object per customer at any point in time.

A conversation can hold one or more Channel Sessions opened on different customer channels such as a chat initiated on the web and later switched to WhatsApp.

is linked to a Customer

contains ChannelSessions - a ChannelSession represents a customer's presence in this conversation on one channel. A customer can reach the contact center using more than one channel at any point in time. All active customer channels are linked to the same customer Conversation.

contains Conversation Participants - including customer channel sessions, agents, and the Conversation bot

Conversation States

A Conversation object may be in any of the following states at any point in time. 



Customer Left





When topic is created. In this state  BOT will join the conversation and can respond to the customer.

When at least one agent in present in the conversation.

When all channel sessions of customer are closed.

When all channel sessions of customer are closed and there are agents in the conversation and wrap up is configured.

When all agents left the conversation but the customer is still available.

When the customer and agents have left the conversation.

On Closing, the TopicMonitor starts house-keeping such as moving all the topic activities to permanent storage. When the TopicMonitor has completed its house-keeping on the topic, it marks the Topic-state to Closed and unsubscribes.

When the controller bot has also been unsubscribed after CIMEvent handler unsubscribe. 

Conversation Controller

A Controller instance controls a Conversation from creation to closure. It monitors and controls the communication exchange between the customer and the business resources (Bot, Agent) and takes decisions upon controller-bot intents. The bot gives scripting control to the business to customize the behavior of conversation handling. For example, send a greeting message as customer joins a conversation or send a survey message to the customer when agent leaves.

The Conversation-Controller Bot may decide to close a channel session at any point in time, based on the bot training data. For instance, it may close a session if one of the following happens:

  • The customer leaves the chat 

  • The agent leaves the chat and no one else is in the conversation

  • Customer response timeout expire

Channels and related terms

Expertflow CX uses the following objects for customer channel and related.


A ChannelType represents the type of communication channel, e.g., WhatsApp, Viber, or Webchat. There can be multiple channels of the same Channel Type.


A Channel is a set of configurations defining:

  • Service Identifier: uniquely identifies a channel and is available in channel data parameters. This is used by customers to initiate requests from this channel to the business.

  • Routing Mode: determines if channel requests should be pushed to agents (Push mode), or should be parked to a List where agents can pull them off (Pull mode)

  • Customer Inactivity Timeout: determines the customer's inactivity duration on this channel. Once this time is reached, the channel session of the customer is automatically closed by the system.

  • Channel Connector: the authorized integration interface for the customer channel


A ChannelSession is a logical object that represents that the customer is currently active on the respective Channel with the system. It is contained within a Conversation.

On receiving a new inbound/outbound event, the ChannelManager creates a ChannelSession with the customer, with an inactivity expiry duration; i.e. the time until the ChannelManager waits for the customer to reply before closing this session, due to inactivity.  

Each Channel Session contains some channel data passed to it by the ChannelConnector. It's a set of key-value pairs that a ChannelConnector can set at the time of sending the message. For example, for web chat, the channel data includes the browser info (Chrome, Safari), locale info of the customer, and, any pre-chat form data that was submitted while initiating the chat.

The channel data is available to agents on the AgentDesk under Active Channels pane. 

Channel Connector

Channel Connector is a wrapper implementation between a Customer Channel and Expertflow CX to exchange customer communication on the channel.

For each new request received from a customer on a channel, it is received on the respective channel connector for that channel. Channel Connectors receive new requests from a respective customer channel, transform them in a format readable by Expertflow CX components, and forward them to the ChannelManager to process the request. Responses from the business (i.e. messages sent by the conversation bot or agents) to customers are received by the Channel Connector and transferred to the customer in the customer-facing channel format.

Channel Provider

A ChannelProvider is a third-party service provider for a customer channel. For example, Dialog360 and Twilio are channel providers for WhatsApp. A ChannelProvider defines the integration interface for channel connectivity. 

Channel Providers are configured and attached to Channel Connectors of the respective Channel.

Related Topics

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.