Skip to content

Bot Applet

Builds the menu-based chatbot that answers inbound conversations in the Unified Contact Center before, or instead of, a human agent: a bot runs one conversation flow of elements that send a message, wait for a reply, branch on it and hand over to an agent. It posts nothing; the contact centre drives the conversation, and a bot runs only once it is linked to an endpoint there as the Default bot. Two element types, Execute Action and Move To Another Flow, have no runtime, so a flow that reaches either stops there.

Overview

The Bot applet is where a tenant builds the menu-based chatbot that answers inbound conversations in the Unified Contact Center before, or instead of, a human agent. It is a tenant-admin applet with two menu items — Bot and Conversation Flow — and its own title bar reads Menu-Based Chatbot. A bot is a name and a code linked to exactly one conversation flow; a flow is a set of elements (send a message, wait for a reply, branch on the reply, hand over to an agent, and so on) joined by element sequences that may carry conditions. Skills — the same skills the contact centre routes tasks with — are attached to bots and to message elements so that a hand-over lands with the right team.

Nothing here posts a journal or touches stock. The conversation itself is driven by the contact centre: when a message arrives on an endpoint that has a bot linked to it, the contact centre starts the bot’s flow or feeds the reply to the element that is waiting for it. The bot is linked to an endpoint in the Unified Contact Center, not here — see Configuration.

Two of the nine element types have no runtime. Execute Action and Move To Another Flow can be created and saved, but nothing runs them, and the element before either of them fails at the point of handing over. A flow that reaches either element stops there. Details under Lifecycle and effects and Troubleshooting.

Where it fits

DirectionWhatWhy
UpstreamUnified Contact Center → Configurations → Virtual Contacts → Endpoint → Bot tabThe endpoint-to-bot link (Default or secondary) is what makes a channel start this bot. Without it the flow never runs.
UpstreamUnified Contact Center → template messagesA Send Message element can send a template message instead of plain text; the template and its language lines come from there.
UpstreamUnified Contact Center → automation rulesAssign To Agent and Invoke Automation Rule pick a rule code from that list.
SharedSkillsCreated and edited here under a bot’s Skill tab, read by the contact centre’s skill-based task assignment.
DownstreamUnified Contact Center inbox and task queueAssign To Agent creates a task and hands it to skill-based assignment; the agent then sees the conversation as a task.
RuntimeThe contact centre’s message handling and the tenant job queueEvery inbound message on a bot-linked endpoint either starts the bot’s flow or is handed to the element waiting for a reply.

Screens and menus

A bare visit to the applet lands on Bot. Every list is a grid with the standard search bar (main field = name; advanced search by Name and Code), a paginator, and the two-column layout toggle.

Bot

ScreenWhat is on it
Bot ListingColumns Name, Code, Description, Creation Date, Updation Date (newest first). Click a row to edit; the add button opens Create Bot.
Create BotBot Name, Bot Code, Bot Description, Master Bot checkbox, Conversation Flow drop-down. Create saves the bot and, if a flow was chosen, links it.
Bot Edit — Main tabThe same fields (the flow drop-down is labelled with an asterisk here but is not validated), a created-by/updated-by block, SAVE (enabled once the form is dirty) and a red Delete button with no confirmation dialog.
Bot Edit — Skill tabThe skills linked to this bot (Name, Code), each row with a delete icon that removes the bot-skill link. The add button opens the skill picker.
Skill (picker)Every skill in the tenant that is not yet linked to this bot, with checkbox selection; ADD links each ticked row. Its own add button opens Create Skill; clicking a row opens Skill Edit.
Create SkillSkill Name, Skill Code, Skill Description. Creates the skill only — it is not linked to the bot until ticked and added from the picker.
Skill EditName, code, description, a Parent Skill drop-down (required) and Delete. Deleting a skill also removes the links that pointed at it — unlike deleting a bot (see Lifecycle and effects).

Conversation Flow

ScreenWhat is on it
Conversation Flows listingName, Code, Description, Creation Date, Updation Date.
Create Conversation FlowConversation Flow Name, Conversation Flow Code, Conversation Flow Description.
Conversation Flow Edit — MainThe three fields, created-by block, Delete.
Conversation Flow Edit — ElementsThe flow’s elements (Name, Element Type, Link Type), ordered ROOT → NODE → LEAF and then by update date. Search by name, code or element type. Add opens Create Conversation Flow Element; a row opens Edit Conversation Flow Element. There is no delete.
Conversation Flow Edit — Elements SequenceThe flow’s edges (From Element, Element Type, To Element, Element Type), oldest first. Add and edit only; no delete.
Conversation Flow Edit — Messages FlowA tree editor (top-to-bottom) of plain-text messages: Fit View, Create a New Message (the first message needs no parent; every later one needs a selected parent node), Edit the Message, Delete the Message (removes the node and every descendant). The tree is held in the browser until the flow’s SAVE, which then creates, renames or deletes the messages. This tree is separate from the Elements model: nothing in the runtime reads it — a live conversation is driven by elements and sequences only.

A Message menu item and its listing/create/edit screens exist but are switched off; the message definitions are reached only through the Send Message element forms.

Settings and personalization

Settings opens the shared settings shell with the applet’s own group System Configuration → Field Settings, Default Selection, plus the shell’s hard-coded links. Of those, Applet Access, Permission Set, User Permission, Team Permission, Role Permission and Triggers (webhooks) open; Role Pricing Scheme Linking, Permission Wizard, Release Notes, Applet Log and Reset Applet State land on the 404 page. Personalization lists Field Settings (no such screen under personalization → 404), Default Selection, Sidebar, and three links that go straight to 404 (Preset Themes, Color Assist, Easy Navigation).

Configuration

Before you can use it

You needWhere it is setWhy
A virtual contact with an endpoint for the channel, and that endpoint linked to the botUnified Contact Center → Configurations → Virtual Contacts → Endpoint → Bot tab (Add Bot adds a secondary link; Edit has a Default checkbox that makes it the endpoint’s one default link)The contact centre runs a bot only for the endpoint’s default link, and only when the conversation is new or is already with the bot. Secondary links are consulted only on the outbound path.
A conversation flow with one element flagged First Element (link type ROOT)This applet → Conversation Flow → ElementsThe flow starts at that element. With no root, nothing is queued and the start returns an empty element.
The bot linked to that flowThis applet → Bot → Conversation Flow drop-downThe flow the bot runs is the one chosen here.
The bot’s job processorsBuilt into the platformThe element processors are part of the platform; nothing per tenant enables them. The sweep that expires overdue wait states is a separate processor — whether it is scheduled on your tenant is not something this page can tell you; ask support.
Template messages, automation rules and skillsUnified Contact Center (templates, rules); this applet or the contact centre (skills)Picked from drop-downs on the element forms; the drop-downs are empty until those exist.
Server-side permissions on the bot objects, or tenant owner/adminTenant Admin → permission setsA tenant owner or admin is always allowed; anyone else is checked against the permission families listed under Feature visibility and permissions.

Applet settings

Settings here are the applet-local Field Settings and Default Selection screens; the applet has no inline settings gear.

No setting on either screen does anything.

  • Field Settings renders eight slide toggles (Unit Discount, SST/VAT/GST, WHT, Blanket Order, Segment, G/L Dimension, Profit Center, Project) that are not saved and that nothing in the bot reads. They were carried over from a document applet.
  • Default Selection (and Personalization → Default Selection) fails in the browser on the first change of either drop-down, and SAVE saves nothing. Even if it saved, nothing in the applet reads a default branch or location.

The applet reads no applet settings at all, in the browser or on the server.

Settings in other applets that control this applet

SettingWhere it is setEffect here
Endpoint-to-bot link, Default or secondaryUnified Contact Center → Virtual Contacts → Endpoint → BotDecides whether an inbound message on that endpoint starts this bot (see above).
Template message and its language linesUnified Contact Center → template messagesA Send Message element of type Template Message requires a template; if the template has language lines, a language choice becomes mandatory on the element form.
Automation rule codesUnified Contact Center → automation rulesThe rule the Assign To Agent / Invoke Automation Rule element writes into the task; when none is chosen, the platform’s default skill-based assignment rule applies.

Feature visibility and permissions

No client-side permission definitions exist for this applet, so the Applet Access screen has nothing to grant and no menu item, tab or button in the applet is hidden by a client-side permission.

Access is decided by the server, per object, with the owner/admin bypass. The permission families (each with OWNER, ADMIN, CREATE, UPDATE, DELETE, READ; ALG_BOT_HDR also has MEMBER) are API_TNT_DM_ALG_BOT_HDR, …_ALG_BOT_CONVERSATION_FLOW, …_ALG_BOT_CONVERSATION_FLOW_LINK, …_ALG_BOT_CF_ELEMENT_HDR, …_ALG_BOT_CF_ELEMENT_LINK, …_ALG_BOT_CF_ELEMENT_SEQUENCE, …_ALG_BOT_SKILL_LINK, …_BL_ALG_CC_SKILL_HDR, …_ALG_BOT_CF_ACTION, …_ALG_BOT_CF_MESSAGE_DFN, …_ALG_BOT_CF_MESSAGE_LINK, …_ALG_BOT_CF_MESSAGES_SEQUENCE, …_BL_ALG_CC_ENDPOINT_BOT_LINK and …_ALG_BOT_TO_BOT_LINK. A listing returns a row the caller may not read as a blank stub, so a user with partial rights sees blank rows rather than an error. The bot’s runtime calls are made by the platform with its own token, not with the agent’s rights — an agent’s permissions do not decide whether a bot answers.

Fields

Bot (Create Bot / Bot Edit → Main)

FieldMeaningRequiredNotes
Bot CodeShort codeYesNot checked for uniqueness.
Master BotCheckboxNoSaved with the bot and reloaded with it. Its one use is as a filter when bots are queried — the flag decides which bots come back in a search, and nothing else. No bot behaviour keys off it, and the bot-to-bot (master/slave) linking it hints at has no screen.
Conversation FlowDrop-down of flows (name, code; server-side search)No on create; asterisk on edit but not validatedOne flow per bot. On edit, choosing a flow replaces the existing link if there is one, otherwise creates one. Clearing the field does not remove the link.

The Bot list shows Name, Code and Description. Its search matches Name or Code exactly, the whole value, so a fragment finds nothing; scroll or sort the list instead.

Skill (Create Skill / Skill Edit)

A skill made here is a record in the same skill table the Unified Contact Center links its agent groups to. The server checks neither the code nor the name for uniqueness, so two skills called the same thing are two separate records; check the list before you create one. The skill list and the bot’s Skill tab show Name and Code only, and search them exactly; the description is shown nowhere in this applet.

FieldMeaningRequiredNotes
Parent SkillDrop-down of skills (edit only)Yes on editA skill created here has no parent until it is edited, and the edit form will not save without one. Sub-skills of the From Element Skill are what the sequence form offers as To Element Skill.

Conversation Flow (Create / Edit → Main)

Name, Code and Description all appear on the Conversation Flow list, and the list’s search matches Name or Code exactly. The server checks neither for uniqueness, and the bot’s Conversation Flow drop-down shows name and code, so two flows with the same name are told apart only by their code.

Element (Create / Edit Conversation Flow Element)

The common fields first; the element type then adds its own block. Creating an element saves the element and its place in this flow (name and code are both set to the Element Name); the type-specific values are stored with that placement.

FieldMeaningRequiredNotes
Element TypeOne of the nine types belowYesRead-only on edit.
Element NameAlso saved as the codeYesRenaming on edit is only half a rename. Edit saves the new name on this flow’s placement of the element, which is what the Elements list shows; the element’s own record keeps the name it was created with, and that is what the Element Sequence list shows as From Element and To Element. After a rename, look for the old name in the sequences. The element’s description is saved but shown on neither list.
First ElementCheckbox, shown only for Send Message, Send Message And Wait Reply and Starting PointNoTicking it makes this element the root and demotes the previous root to a node. A flow may have one root.
Element typeIts own fieldsWhat is storedWhat the runtime does with it
Starting PointNone (the form has no controls)A message reference pointing at nothing — the create screen reuses the Send Message sub-form, which is not rendered for this typeRecords the event and queues every next element; sends nothing.
Send MessageMessage Name*, Message Code*, Message Description, Message Type* (Text / Template Message); Text* for the first, Template Message drop-down* plus a language choice (required when the template has language lines) and a preview for the secondThe message: its type, and the text or the template and languageSends the text or template on the conversation’s channel, records the event, queues every next element.
Send Message And Wait ReplyThe Send Message fields plus Timeout* and Unit* (Days / Hours / Minutes / Seconds)The message, the timeout and its unitSends, then queues only the first next element with an expiry of now + timeout and stops until the customer replies.
Split ControlDefault Message If No Condition Match*, Timeout Message*Both messagesCompares the customer’s reply with each outgoing sequence’s conditions; queues the matches; if none match, sends the default message and waits again; on expiry sends the timeout message.
Time ConditionTimeout Message*The timeout messageEvaluates each outgoing sequence’s time condition against the clock in Malaysian time (Asia/Kuala_Lumpur) and queues the matches.
Assign To AgentAssignment Type* (Skill Based / Random Assignment), Automation Rule* (rule codes)Assignment type and rule on create; assignment type only on edit — the rule is droppedLooks up the skill of the latest message element in this conversation and creates a task carrying the skill, the assignment type and the rule code, then hands it to skill-based assignment.
Invoke Automation RuleAutomation Rule*Nothing type-specific on create, and the edit screen has no block for itSame as Assign To Agent; the rule falls back to the platform’s default skill-based assignment rule.
Execute ActionAction Name*, Action Code*, Action DescriptionThe action’s name, code and description, and nothing elseNo processor — see Lifecycle and effects.
Move To Another FlowConversation Flow drop-down* (the current flow is excluded)The target flowNo processor — see Lifecycle and effects.

Element Sequence (Create / Edit Element Sequence)

FieldMeaningRequiredNotes
From ElementDrop-down of this flow’s elements, minus Assign To Agent; while the flow has no sequence yet, only the root element is offered, and the form shows Please Set An Element As Root Element First if there is noneYes
To ElementDrop-down of every element of the flow not already a target of From, plus any Send Message / Send Message And Wait Reply ancestor (loops back to a message are allowed). The drop-down then filters: from a Send Message And Wait Reply only Split Control or Time Condition may follow; from any other non-split element, Split Control may not followYes
From Element SkillSkill drop-down, shown when From is a message element; on create also for Starting PointYes when shownSaved onto the from element itself. This is the only place a skill is attached to an element.
To Element SkillSkill drop-down, shown when To is a message element; offers the sub-skills of the chosen From Element Skill plus that skill itselfYes when shownSaved the same way on the to element.
ConditionsShown when From is Split Control or Time Condition: one or more rows of Operator, Type (Text / Numeric / Datetime / Time) and Value; New Condition adds a row, the bin removes one (a lone row cannot be removed)Each row’s three fields when shownSaved as the sequence’s conditions, each naming the from element, the operator, the type and the value. Operators offered: Equal, Not Equal, Contains; for a Time Condition source: AFTER, BEFORE, AFTER_OR_EQUAL, AFTER_AND_BEFORE, with a time picker and AM/PM.

Saving a sequence sets the from element’s link type to NODE (unless it is ROOT) and the to element’s to LEAF if it has no outgoing sequence of its own. The sequence’s name, code and description are generated from the two element names.

Lifecycle and effects

This is a master-data and automation applet: no financial document, no journal, no stock, no open queue. On save the server checks that the bot, flow, element or skill a record refers to exists, nothing more.

What each screen writes

ActionWhat is saved
Create botThe bot, and its link to the chosen flow when one was chosen.
Edit botThe bot; the flow link is updated in place when one exists, created otherwise.
Delete botThe bot only. Its flow link, its skill links and the contact centre’s endpoint-bot links survive and still point at the deleted bot — see Troubleshooting.
Add / remove skillOne bot-skill link per ticked skill. If one of several fails, the rest still save and nothing tells you.
Create / edit / delete skillDelete removes the skill’s links first.
Create / edit / delete flowOn edit, the Messages Flow tree is reconciled message by message.
Create elementThe element and its place in the flow; ticking First Element demotes the previous root.
Edit elementThe element and its placement, with the name, code and description copied across; the Send Message / Execute Action sub-forms also update their message or action.
Create / edit sequenceThe sequence; the link-type promotion described above; the skills chosen, written onto the two elements.

How a conversation runs

  1. Start. An inbound message reaches the contact centre. If the endpoint it arrived on has a Default bot and the conversation is new (or is already with the bot), the contact centre starts the bot’s flow for a new conversation, or hands the text to the waiting element for an existing one, and marks the conversation as being with the bot. An e-mail arriving through Amazon SES starts the flow for a new thread the same way.
  2. Root. The flow’s First Element is queued for this conversation (with three retries if it fails), a conversation instance is recorded, and the bot’s queue is asked to run one step.
  3. Step. The queue takes the due element(s) for the conversation and runs each one. Each element records what it did, does its work, then queues its next element(s) and asks for another step. Send Message And Wait Reply queues only its first successor, stamped with an expiry, and does not ask for another step: the flow now waits.
  4. Reply. The next inbound message is attached to the waiting element and a step is requested. The waiting element — normally a Split Control or Time Condition — now runs against the reply.
  5. Branch. Split Control matches the reply against every outgoing sequence’s conditions: Text Equal / Not Equal (case-insensitive) / Contains; Numeric Equal / Not Equal (an unparseable reply never matches); Datetime Equal / Not Equal on an ISO timestamp with milliseconds and zone (yyyy-MM-dd'T'HH:mm:ss.SSSX); a Time type is not evaluated on a split and never matches. Any other operator on a known type counts as a match. No match → the default message is sent and the element waits again with its expiry. Time Condition uses the clock and understands AFTER, BEFORE, AFTER_AND_BEFORE (start–end), EQUAL, AFTER_OR_BEFORE and DATE; the AFTER_OR_EQUAL the form offers is not among them and never matches.
  6. Hand over. Assign To Agent / Invoke Automation Rule find the latest message element in this conversation and take the skill attached to it; with a skill in hand they create a task and hand it to skill-based assignment. With no skill, nothing happens and the conversation stays with the bot. An agent taking the conversation clears the bot’s queued elements for it and takes (or creates) the task; the agent-to-bot hand-over restarts the flow at the root.
  7. Expiry. A separate sweep picks up queued elements whose wait has expired, follows any outgoing sequence whose condition matches the literal text timeout, then drops the element.

Sending. Outbound text can go out on WhatsApp, web chat, Telegram, Lazada, Facebook Messenger, Shopee and Instagram chat. Template messages are expanded line by line, media lines included.

The two dead element types. No processor exists for Execute Action or Move To Another Flow. The element before either of them fails at the point of queuing it, so the flow stops there; as a root they are refused by the form and, if forced in by other means, skipped. The action and the target flow you chose are stored and never read.

Related applets

  • Unified Contact Center — owns the endpoint the bot is linked to, the template messages and automation rules the elements pick from, the task queue a hand-over lands in, and the inbox where an agent sees the bot’s transcript. The bot is a configuration object of the contact centre; this applet is its editor.

Troubleshooting

SymptomCauseFix
The bot never answers a new conversationThe endpoint has no Default bot link (a link added from the UCC endpoint’s Bot tab is secondary until its Default box is ticked); or the bot has no flow; or the flow has no element flagged First Element. The start then queues nothing and returns an empty element.Tick Default on the endpoint-bot link; pick a flow on the bot; tick First Element on a message or starting-point element.
The bot answered once and now ignores repliesThe conversation is no longer with the bot (an agent took it), or the waiting element expired and was dropped by the expiry sweep.Use agent-to-bot hand-over to restart; give Send Message And Wait Reply a longer timeout.
The flow stops after a Send Message And Wait Reply even though the customer repliedOnly the first sequence out of that element is queued. If that successor is not a Split Control / Time Condition, nothing evaluates the reply.Route the wait element to a single Split Control (the sequence form enforces this on new sequences) and put the branches after it.
Split Control always sends the default messageCondition type or value does not match what the runtime evaluates: a Time type never matches on a split; Datetime must be an ISO timestamp with milliseconds and zone; Numeric needs a parseable number on both sides; text comparison is case-insensitive but exact for Equal.Use Text with Contains for menu replies; reserve Time for Time Condition elements.
Time Condition with AFTER_OR_EQUAL never branchesThe runtime recognises AFTER, BEFORE, AFTER_AND_BEFORE, EQUAL, AFTER_OR_BEFORE and DATE only.Use AFTER or AFTER_AND_BEFORE.
Assign To Agent creates no taskNo skill on the latest message element: a skill is only written to an element by choosing From Element Skill / To Element Skill on the Element Sequence form, and the bot’s own Skill tab does not do this. The hand-over silently skips.Edit the sequence into the message element that precedes the hand-over and pick a skill.
An edited Assign To Agent element loses its rule and assignment typeThe edit screen saves only the assignment type and drops the rule, and the runtime reads what the create screen wrote.Delete and recreate the element rather than editing it (there is no element delete in the grid, so create a new one and re-point the sequences).
The flow dies at an Execute Action or Move To Another Flow elementNo processor exists for either type, and the element before it fails when it tries to queue it.Do not use these two types; model a jump as a duplicate of the target’s first elements.
The bot sends nothing on SMS, e-mail, voice, LINE or Instagram feedThe bot has no sender for those channels.Use the bot on WhatsApp, web chat, Telegram, Lazada, Facebook Messenger, Shopee or Instagram chat.
A conversation on an endpoint errors instead of reaching an agent after a bot was deletedDeleting a bot leaves the endpoint-bot link in place; the contact centre then tries to run a bot that no longer exists.Remove the bot from the endpoint’s Bot tab in the UCC before deleting it here.
Settings → Default Selection fails on the first change; several settings links show the 404 pageThe screen is not wired to anything; the shared settings shell links to screens this applet does not have.Nothing to configure there — see Configuration.

Related documentation

Last updated on