Segmentation

Threads created in edna are processed in three steps:

  1. Segmentation (as a result, a thread is assigned a segment)
  2. Routing (as a result, the thread is assigned to an agent or bot based on the segmentation and routing rules)
  3. Processing (as a result, the thread is processed by an agent or bot)

The system segments threads when they enter the system and when they are not processed yet and are removed from an agent’s personal queue (excluding cases when they are transferred).

When a thread is removed from a bot’s personal queue, two scenarios are possible:

While processing the thread, the bot recognized and sent to edna information on a client’s thread in the <parameter>:<value> format. If the sent parameter has been created and has been used as a custom segmentation parameter, the thread is sent to re-segmentation.

While processing a thread, the bot has not sent information on the thread to the thread or has sent the <parameter>:<value> pair that is not used as a custom segmentation parameter, the thread is not re-segmented.

You create segments on the Segments page as a combination of parameters that form a category. A segment parameter can be: internal (predefined in the system) and external (received from a system edna is integrated with). Internal parameters are attributes for threads or clients, and external ones are client attributes; they are created by system admins in the database.

There are two types of segment parameters:

  • String: You select these parameters from the available directory configured by the system admin
  • Numerical: You enter these parameters from your keyboard and use the >, , =, <, conditions

You can select several parameters and their values within the same segment.

Predefined Segment Parameters

ParameterTypeDescription
Thread channelInternalChannel via which the thread is created. For value, you can select any channel that is connected to edna in your case. There might be multiple web and mobile applications available (as configured in your system). The values are non-editable.  
Thread stateInternalAvailable thread states: NEW, UNASSIGNED, and SUSPENDED
Number of processed threadsInternalNumber of threads from the same client processed already
Last threadInternalTime in minutes that has passed since the latest client thread has been processed
Thread URLInternalURL address of the page where a client is when starting the thread. Values are configured by the system admin.
Blocked clientInternalAttribute that indicates that the client has been blocked. There are no attribute values to choose from.

Important!
When an agent sends a client blocking request, the client’s thread is moved to the Closed status. The system only creates a thread for the blocked client if there is a segment created for the blocked client along with the route for this segment. In all other cases (if there is no such segment or there is a segment but no route for it), when a blocked client attempts to message your contact center (i.e., create a new thread after being blocked), the system does not create a thread for them.  
Personal managerInternalAttribute that indicates that the personal manager value (that is, an agent’s login) has been sent for the client/thread. The value can be sent upon the chat initialization or when the thread is transferred from a chatbot.
The value for the attribute cannot be selected from a list.

Important!
If the value is received upon the chat initialization (in ClientData) the personal manager remains assigned until an empty value or a new login value is received.
If the value is received when transferred from a chatbot (in segmentationInfo), it is assigned only for the current thread.

If an agent’s login is sent via the respective parameter (personal_manager) upon the chat initialization (in ClientData) or when the thread is transferred from a chatbot (in segmentationInfo), the thread will be distributed via the configured route for personal agents to the agent with this login.
External parameterExternalAny external parameter (if created). You can have any number of such parameters depending on the implemented integrations. Values are configured by the system admin for each of the external parameters

Segment Prioritization

As threads can have similar parameters and fit different segments at the same time, all segments in edna are prioritized from the highest to the lowest priority (1 to N). By default, any new segment that you create gets the lowest priority in the list, but you can rearrange it, if necessary.

When the system attempts to segment a thread, it consequently checks whether it fits segment parameters (starting from the highest to the lowest priority). Once the thread fits all the segment parameters, the system assigns this segment to this thread and its segmentation process ends.

If a thread fits no existing segment, the system assigns it with the default NULL segment with the lowest priority.

Example:

The following segments are set in the system:

1 – Returned to queue (Thread state – UNASSIGNED)
2 – Top priority (External parameter “Reason for the request”: Claim)
3 – Quick (Thread channel – Telegram, Number of processed threads > 2)
4 – Sales (External parameter “Reason for the request”: Loans)

Results:

1. A thread is created via Telegram, is a second thread from the client, has the external parameter “Reason for the request” with the Claim value assigned. The system assigns the thread with the Top priority segment.

2. An agent is working on a thread that is assigned to the Quick segment. The thread is created via Telegram and it is the third thread from this client. The agent neither replies to the client nor closes it and signs off. The thread is returned to the queue (having the UNASSIGNED status). The system assigns the thread with the Returned to queue segment.

3. A thread is created via Viber, is a second thread from the client, has the external parameter “Reason for the request” with the Loans value assigned. The system assigns the thread with the Sales segment.

4. A thread is created via an unauthorized web app and is the first thread from the client. The system assigns the thread with the NULL segment.