Skip to main content
The Ringg widget supports text-based chat alongside voice calls. In chat mode, users type messages while the same assistant can still use configured tools, knowledge base queries, and interactive Components.

Set up a chat agent

Create a dedicated assistant for chat by cloning your voice assistant. Chat conversations are usually longer and benefit from prompts that allow structured answers, concise markdown, and clear widget handoffs.
1

Clone or create an assistant

Open the Ringg AI dashboard, go to assistants, and clone an existing voice assistant or create a new Webcall assistant for chat.
2

Tune the prompt for text

Update the assistant prompt for chat-style responses. Include when to answer directly, when to collect details, and when to present widgets.
3

Configure chat-specific tools

Add calendar widgets for callback scheduling, form widgets for data collection, or any API integrations the chat should use.
4

Use the chat assistant ID

Use the cloned assistant’s agentId in the embed code and set defaultTab to "text".

Chat modes

How chat mode works

Text input and output

Users send typed messages. Audio input and output are disabled in text mode.

Context compression

Long chat conversations are compressed automatically so the conversation can continue within model context limits.

RAG summarization

Knowledge base query results are summarized in chat mode to reduce token usage and keep answers concise.

Same configured tools

API integrations, knowledge base queries, widgets, and other configured tools work in chat mode.

Components

Components are interactive UI the assistant presents during a conversation — cards, forms, pickers, ratings, and more — rendered inside the chat so users can act without leaving it. Components are built with Block Kit (see below) and are the current standard for all new builds.
Components work best in text mode. They can also be triggered during voice calls, but visual interaction is most natural in the chat interface.
The flow is:
  1. The assistant decides a component is needed and streams a Block Kit tree.
  2. The component renders inside the chat.
  3. The user taps a button, fills inputs, or picks a rating.
  4. The response is sent back to the assistant automatically.
  5. The assistant confirms the action and can trigger an API call if configured.
The fixed-purpose Calendar and Form widgets below (the send_widgets tool with calender_widget_tool / form_widget_tool) are legacy. Existing agents keep working, but new builds should use Components (Block Kit) — a carousel of plan cards, a booking form, or a rating card are all expressible as blocks.

Calendar widget (legacy)

Use the calendar widget for callback scheduling, demo booking, consultations, or follow-up appointments. Past slots are excluded so users see valid options.
The required tool_type value is calender_widget_tool. Use that exact spelling in widget metadata.
When a user schedules a callback, the selected datetime and timezone are sent back to the assistant. If api_config is provided, the booking data is forwarded to your API.

Form widget (legacy)

Use the form widget for contact details, lead qualification, support tickets, addresses, surveys, or other structured data collection.

Form field definition

When the user submits the form, the collected data is sent back to the assistant. If api_config is provided, the data is also forwarded to your API endpoint.

Block Kit — the Components system

Block Kit is the engine behind Components: the assistant builds a tree of typed blocks (cards, carousels, tables, inputs, buttons, ratings, and more) that render inside the chat. Unlike the fixed legacy calendar and form widgets, Block Kit lets the assistant lay out arbitrary content — plan comparisons, order trackers, feedback cards, or rich confirmations — and is the recommended path for all new builds.
Block Kit trees are streamed on the ringg.blocks topic (not a fixed tool), so payloads have no practical size limit. The widget renders them and reports interactions back to the assistant automatically.
How it works:
  1. The assistant resolves a fully-concrete block tree server-side (bindings filled, lists expanded) and streams it.
  2. The widget renders it full-width in the transcript.
  3. The user taps a button, fills inputs, or picks a rating.
  4. The interaction is sent back to the assistant; a tap is treated as one conversation turn, so the card locks after responding.
The block type catalog (currently 1.4) defines the available blocks and their props: Most content and action blocks share a size (sm / md / lg) and align vocabulary; image uses width (sm / md / full) and button supports full_width. Blocks inherit the widget theme (colors, radius, button style), and every rendered node exposes a data-ringg="block-<type>" hook for CSS — see Customization.

Complete chat-only embed

Use the CDN loader from the quickstart, then load the chat assistant with chat-only mode and optional branding.
Calendar and form widgets are configured in the assistant metadata through the Ringg AI dashboard. No additional frontend code is needed for the widgets themselves.

Prompt examples

Prompt tips

Be explicit about when to use each widget.
Do not duplicate widget fields in the conversation.
Ask the assistant to confirm bookings and form submissions after the widget returns data.
Keep chat responses shorter and more structured than voice responses.