Creating a chat agent
Create one from Agents → New agent by choosing Chat Agent as the mode. Configuration mirrors voice agents — system prompt (single or multi prompt), LLM provider and model, knowledge base attachments, and memory — minus everything audio-specific. The prompt writing guide covers how chat prompts should differ from voice prompts. New chat agents start inactive. Use Launch on the agent’s page once it’s configured, and Stop to take it offline again.The agent tabs
Testing in the playground
The Agent tab includes a live chat panel — send messages and see the agent reply without leaving the page. New session drops the current test session on your screen (it stays open on the backend, so you can pick it back up), and Operator opens the same support console you’d use on a real customer session, letting you rehearse whisper, tell, and takeover before you go live. An Add input fields option lets you preview how prompt variables (like a customer’s name) change the agent’s first reply.Sessions
A conversation with a chat agent is a session: it belongs to one customer (identified by acustomer_id you choose), keeps the full message history, and carries metadata you pass in — form fields, account context, prior interaction summaries.
Sessions have a status — active, dormant (quiet for a while), or closed — and a mode:
ai— the agent responds autonomously.support— a human operator is involved.
session_id resolves or creates the customer’s active session automatically. Inject context mid-conversation to steer the agent (for example, a summary of a phone call that just happened).
Two ways to send a message in
- Synchronous — Send Message (
POST /v1/chat/inbound) blocks until the agent’s reply is ready and returns it in the same response. Simplest to integrate, but your caller has to hold the connection open for the length of a turn. - Async (callback) —
POST /v1/chat/inbound/asyncacknowledges the message immediately, then delivers the reply later to the Delivery URL configured on the agent (Settings tab) — see Delivery webhook for the payload. Use this for a gateway that can’t (or shouldn’t) hold a request open, or when a human operator might take longer than your customer’s connection allows. A Delivery URL is required to use this endpoint.
The browser WebSocket path
For a first-party web or in-app chat surface, connect directly instead of polling: request a short-lived session token, then open a WebSocket to stream the conversation in both directions — one stream for the visitor, a separate one for an operator console. This is what Osvi’s own public chat pages and operator console use. See the Chat WebSocket guide for the connection details.Human-in-the-loop support
Chat agents are built for supervised operation. The agent’s own Request human help tool (Tools tab) flags a session help requested — when the customer asks for a person, or the agent decides it’s out of its depth — and operators step in through support commands:
Each command is toggled independently in the agent’s Tools tab, under Operator commands; closing a session (
/close) is always available.
Chat agents don’t place outbound calls or schedule follow-ups on their own — that cross-channel coordination now lives in Journeys, which can call, message, or follow up with a customer based on how a conversation went.
Interactive UI elements
A chat agent can reply with more than text: quick-reply buttons (optionally with an “Allow typed answer” free-text option), a carousel of items with images, and a date picker (single date or a range) instead of asking the customer to type one out. Configure these as tools in the Tools tab, either with fixed content or content the model fills in per turn. Osvi’s public chat pages render all three natively; a custom gateway can render them itself from the same structured payload.Interactive UI elements aren’t publicly released yet. Until they are, contact support@osvi.ai to have them enabled for your workspace.
