Tunneling: live chat example on AIsuru
Tunneling: a live chat example
In this section we'll see how to implement a live chat using dynamic intents and tunneling. This example will let us explore both how tunneling works and the structure of dynamic intent calls in detail.
The live chat scenario
A live chat is a perfect example to illustrate tunneling because it requires:
An ongoing conversation with an external service
Maintaining context between messages
Handling responses in real time
Dynamic intent structure
To implement the live chat, we configure the dynamic intent with:
Name: "LIVE_CHAT"
Activation phrases: "I want to speak to an operator", "Live chat", etc.
Webhook: URL of the service that manages the live chat
When the user triggers the intent, the webhook receives a request with this structure:
{
"intentName": "LIVE_CHAT",
"utterance": "I want to speak to an operator",
"slotValues": {},
"currentTag": "string",
"currentTagAuthenticated": true,
"contextVars": {},
"memoriID": "string",
"sessionID": "string",
"culture": "en-US"
}Starting the tunneling
The webhook responds by activating tunneling to take control of the conversation:
From this point:
Every user message is sent directly to the webhook
The Agent no longer processes messages — it just forwards them to the chat service
The operator's replies arrive through the webhook (which passes them to the Agent via the emission)
Managing the conversation
During the chat, each user message generates a request to the webhook:
The webhook responds while keeping the tunneling active:
Closing the chat
When the operator closes the chat, the webhook sends a response that ends the tunneling:
The Agent resumes normal control of the conversation.
The live chat example shows how tunneling lets you create complex interactions while keeping a clean, manageable architecture. The same principles apply to many other scenarios that require an ongoing conversation with an external system.
Last updated