Conversation Flow
Introduction
Conversation Flow is the new feature in AgentLabs LLM, designed to automatically understand the purpose or intent of user inputs. This feature is specifically developed for LLM to enhance their conversational capabilities. With Conversation Flow, AgentLabs LLM can categorize user messages into specific intents based on their goals. Additionally, this feature enables the grouping of bot flows into intent trees, where flows can be maintained through prompts at each intent node.
Key Features
User Intent Recognition
- Classifies user inputs into predefined intents (e.g., "order product," "check order status," or "report issue").
Custom Intent Definition
- Supports the addition of custom intents tailored to business needs.
Bot Flow Grouping
- Enables the creation and organization of bot flows in the form of intent trees, maintaining structured and contextual conversation flows through prompts at each intent.
Various types of responses
- Various types of responses from dynamic to static responses.
Support Multiple Response
- Can use multiple responses when matching an intent.
How It Works
You can start to make it works using these steps:
- You can access this feature in your LLM project bot, activate it first via the toggle button and then click Set Up Your Conversation Flow button

When activating the Intent Classification feature, LLM Handover Agent and External API will be turned off. But you can use the Handover Agent and External API features through the response in each intent in Intent Classification.
On this page, you can create intent based on the desired flow. The intent can have a parent and child, make it a fallback intent, instructions in the form of prompts as triggers to the intent, and also add responses from the LLM.

All incoming conversations will go through the flow you created, make sure the entire flow is according to your needs, including handling when messages are not understood by bot at all layers.
Manage Intent
There are two types of intent contained in the Intent Classification:
Default Intent
- This is the default intent that you use, you can provide instructions in the form of prompts that you want LLM to direct the conversation to an intent.
Fallback Intent
- This intent will be triggered when the conversation in that layer is not understood by LLM, the detailed prompt is
This tool or function should be used when no other tools is match with description.
- When a layer matches a Fallback Intent, the flow will be maintained in that layer.
- This intent will be triggered when the conversation in that layer is not understood by LLM, the detailed prompt is

Instruction
In the intent there are instructions in the form of prompts that need to be filled in, the instructions here act as triggers when a conversation comes in and will be processed by LLM to determine the flow intent. These instructions greatly determine the bot flow that will be processed by LLM.

Parent
You can define the flow using the parent and child hierarchy. When the conversation has matched a certain intent, the bot will follow the flow in the parent and child of that intent. You can create a flow according to the specified parent, then the bot will only respond at that level. And make sure you add fallbacks at each layer.

Flow creation hierarchy with parent and child. Make sure there is always a fallback in each layer.
Each layer should have a fallback intent to handle when LLM doesn't detect the conversation in the existing intent. You can also replace it with a default intent to redirect when the conversation doesn't match any of the intents in the layer.
If each layer does not have a fallback intent, the bot will not respond, because there is no intent that matches the instructions given at that layer.
Response
You can provide various responses from the intent you provide, you can also order the bot to provide multiple responses according to your needs. Here are the types of responses provided by AgentLabs.

Dynamic Response
The dynamic response in Robolabs LLM enables the AI Agent to deliver real-time answers by retrieving data directly from the project's knowledge base. The answers provided will be carried out directly by LLM from the knowledge data that you previously uploaded. You can choose which type of knowledge will respond to the intent.


Static Response
The static response in AgentLabs LLM delivers pre-defined answers to specific user queries. These responses are manually crafted and do not rely on dynamic retrieval from a knowledge base, ensuring consistent and predictable outputs.
This approach is ideal for handling frequently asked questions or standard scenarios where the answers remain unchanged over time.
Static responses currently provided by Robolabs include:
- Text
- File Attachment
- Button (Only available for channel FBM, Line, Telegram, and Qiscus Widget)
- Carousel (Only available for channel FBM, Line, Telegram, and Qiscus Widget)
- WhatsApp Button (Only available for channel WA )
- WhatsApp List (Only available for channel WA)

Handover Response
The response here will give the AI a command to handover to the agent when the match is in the intent. Throw the conversation according to the desired division so that AgentLabs and Omnichannel forward the conversation to the agent in that division.

Intent Response
If the conversation matches on a specific intent, and you want to throw the conversation to another intent in the parent/child/layer/menu, you can provide this intent response. This approach is suitable if you want to throw an intent to another menu/layer that is not in the hierarchy of the intent.

The following is an example of an intent response implementation scheme in an intent.

If the user is at the Child C.1 intent position and wants to move to an intent in another layer and child/parent, you can choose to respond to the intent to Child A.1.1.
API Response
If in External API it is triggered using prompt directly, then in Intent Classification it is different. If the conversation matches in an intent, then the API response will be sent to another third-party service according to the specified parameters.
Robolabs LLM supports two types of API calls that can be used to integrate with external data or services: Prompt-based API and Intent-based API. Each type operates differently based on how the system interprets the user's message.
a. Prompt Based API
This type of API is triggered directly based on the user’s input (prompt) without going through intent classification. It is best suited for simple and direct use cases, where a response can be generated from a single message or command.
For example, suppose there’s an intent called "pendaftaran" which contains the rules for user registration like mentioned the user's name.

When a user sends a message like:
“saya mau mendaftar”
the AI Agent will detect that this message matches the "pendaftaran" intent. Inside this intent, a Prompt-Based API Response is configured to trigger an API call using a pre-defined prompt template.
Let’s say the prompt template includes a parameter called "nama_user". If the agent does not yet have the user's name, it will first ask for it:
“Silakan berikan nama Anda terlebih dahulu untuk melanjutkan proses pendaftaran."

Once the required information is collected (in this case, the user's name), the API request is sent. After the prompt is executed and the API responds, you will receive a webhook payload like the one shown in the example below.
{
"room_id": 338*****,
"channel_id": 1204,
"source": "qiscus",
"current_intent_name": "pendaftaran",
"current_intent_value": "saya mau mendaftar",
"raw": {
"app_code": "zalda-vvq7pksvblaiy7s",
"channel": {
"id": 1204,
"name": "ibnu-testing",
"source": "qiscus"
},
"payload": {
"from": {
"avatar_url": "https://qismo-stag.qiscus.io/img/ic_qiscus_client.png",
"email": "demo.punya.tester1@gmail.com",
"id": 0,
"id_str": "0",
"name": "Punya Tester Demo Widget"
},
"message": {
"comment_before_id": 0,
"comment_before_id_str": "0",
"created_at": "2025-08-06T02:41:43Z",
"disable_link_preview": false,
"extras": {},
"id": 0,
"id_str": "0",
"payload": {},
"text": "salsa",
"timestamp": "2025-08-06T02:41:43Z",
"type": "text",
"unique_temp_id": "338092289_1754448103202.7002",
"unix_nano_timestamp": 1754448103000,
"unix_timestamp": 1754448103
},
"room": {
"id": "338092289",
"id_str": "338092289",
"is_public_channel": false,
"name": "Punya Tester Demo Widget",
"options": "{\"channel\":\"qiscus\",\"channel_details\":{\"channel_id\":1204},\"is_resolved\":false,\"is_waiting\":false,\"source\":\"qiscus\"}",
"participants": [
{
"email": "demo.punya.tester1@gmail.com"
},
{
"email": "zalda-vvq7pksvblaiy7s_admin@qismo.com"
}
],
"room_avatar": "https://qismo-stag.qiscus.io/img/ic_qiscus_client.png",
"topic_id": "338092289",
"topic_id_str": "338092289",
"type": "group"
},
"type": "post_comment_mobile"
},
"type": "post_comment_mobile",
"project_code": "support_buddy_vruu",
"chatbot_id": "01JYZZ1FYZ32ANSGBQK3F62Y9D",
"x-request-id": "562699e1-63d4-44c1-b0db-48989db14a4e"
},
"Parameter 1": "salsa"
}
b. Intent Based API
Unlike prompt-based APIs, intent-based APIs are triggered only when the user's message matches a predefined intent. This approach is ideal for handling more structured or topic-specific interactions, where each intent represents a clear goal or context.

For example, if the AI Agent's AgentLabs detects that the user's message matches the intent "nama_user" , AgentLabs will send a request to the API endpoint associated with that intent. The request may include data such as the intent name and the user's original input.
{
"room_id": 3380****,
"channel_id": 1204,
"source": "qiscus",
"current_intent_name": "nama_user",
"current_intent_value": "salsa",
"raw": {
"app_code": "zalda-vvq7pksvblaiy7s",
"channel": {
"id": 1204,
"name": "ibnu-testing",
"source": "qiscus"
},
"payload": {
"from": {
"avatar_url": "https://qismo-stag.qiscus.io/img/ic_qiscus_client.png",
"email": "demo.punya.tester1@gmail.com",
"id": 0,
"id_str": "0",
"name": "Punya Tester Demo Widget"
},
"message": {
"comment_before_id": 0,
"comment_before_id_str": "0",
"created_at": "2025-08-06T02:50:53Z",
"disable_link_preview": false,
"extras": {},
"id": 0,
"id_str": "0",
"payload": {},
"text": "nama saya salsa",
"timestamp": "2025-08-06T02:50:53Z",
"type": "text",
"unique_temp_id": "338092289_1754448654297.7",
"unix_nano_timestamp": 1754448653000,
"unix_timestamp": 1754448653
},
"room": {
"id": "338092289",
"id_str": "338092289",
"is_public_channel": false,
"name": "Punya Tester Demo Widget",
"options": "{\"channel\":\"qiscus\",\"channel_details\":{\"channel_id\":1204},\"is_resolved\":false,\"is_waiting\":false,\"source\":\"qiscus\"}",
"participants": [
{
"email": "demo.punya.tester1@gmail.com"
},
{
"email": "zalda-vvq7pksvblaiy7s_admin@qismo.com"
}
],
"room_avatar": "https://qismo-stag.qiscus.io/img/ic_qiscus_client.png",
"topic_id": "338092289",
"topic_id_str": "338092289",
"type": "group"
},
"type": "post_comment_mobile"
},
"type": "post_comment_mobile",
"project_code": "support_buddy_vruu",
"chatbot_id": "01JYZZ1FYZ32ANSGBQK3F62Y9D",
"x-request-id": "218f0c6e-acf5-491f-84e3-612713086c8d"
},
"Parameter 1": "saya mau mendaftar"
}
Handover Settings
These settings control how and when the bot transfers conversations to human agents. Proper configuration ensures that handovers happen only under the right conditions, such as when agents are online or during working hours

Handover to Online Agent
This setting determines whether the bot should only hand over conversations to agents who are currently online based on the toggle button condition

Toggle button | Condition |
---|---|
Enabled | The bot will only perform the handover if there is an online agent. If no agent is online, the bot will show a predefined message, such as: "No agents are currently online. Please wait a moment.” |
Disabled | The bot will hand over the conversation regardless of agent availability (online or offline). |
Handover Outside Office Hours
This setting allows the bot to send automated messages outside working hours. You can enable it via: Settings > General > Office Hour
When the toggle button is active and a user contacts the bot outside of business hours, the bot will send a message like:
“We’re currently closed. Please reach out again after 07:00 AM.”
This helps manage user expectations and keeps communication clear and professional outside of operating hours.

After configuring either the Handover to Online Agent or Handover Outside Office Hours settings, please click the Save Changes button to apply your updates.