Skip to main content
Ask Conversation lets a running agent send a prompt to another chat, wait for that chat’s reply, and act on it — bounded by a timeout so a turn never hangs silently.
A user asks the agent to ship a build; the agent asks another channel whether it’s safe, waits for the reply, and acts on the answer — all within a single turn.

Which tool?

ask_conversation is easy to confuse with its two siblings. This decision diagram picks the right one.

Quick Start

1

Ask One Question

2

Adjust the Timeout for Slower Channels

Default wait is 120 seconds. Raise timeout_s for humans who may be away; the hard cap is 3600 seconds.
3

Handle the Four Outcomes in Instructions

Every call resolves to exactly one typed outcome, so tell the agent what to do for each.

How It Works

ask_conversation sends the prompt through the same delivery stack send_message uses, then waits for the next reply that correlates back from the target — returning it as a JSON string. The reply is matched back to the request via the existing correlation-id infrastructure.

Outcomes

Every call resolves to exactly one of four typed statuses, so a turn never hangs silently.

Targets

Targets use the same forms as send_message — see Send Message → Targets.

Timeouts (bounded wait)

timeout_s sets the maximum seconds the tool waits for a reply, and the value is normalized so a turn can never wait forever. The target is model-controlled, so the tool refuses to let a prompt-injected agent make a turn wait indefinitely — this clamp is a security property, not a suggestion.

When It’s Available

ask_conversation needs a running bot/gateway to reach another chat and correlate its reply. When no gateway is active the tool returns:

User Interaction Flow

A Telegram user asks the deploy agent to ship build 42. Before running the deploy, the agent calls ask_conversation("slack:#ops", "OK to deploy build 42?"). #ops replies “green — go ahead” in Slack. The agent proceeds with the deploy and reports success back to the user on Telegram.

Configuration Reference

ask_conversation takes three arguments: Returns: a JSON string of the reply — one of the four statuses above.

Common Patterns

Human-in-the-loop approval on another platform

Cross-agent handoff

Graceful fallback on non-reply outcomes


Best Practices

The wait is bounded and correlated — you get exactly one typed outcome. Don’t loop send_message and re-check for a reply; ask_conversation handles the send-and-await for you.
Keep it short for humans in a live channel, longer for on-call escalations. The hard cap is 3600s — anything higher is clamped.
Include a line like “If ask_conversation returns status ≠ ‘reply’, fall back to X” so reply, timeout, undelivered, and no_route are all covered.
Use SendPolicy to limit which channels an agent may ask. A denied policy returns undelivered before the message goes out, so the target chat is never contacted.

Send Message Tool

Fire-and-deliver sibling — message a target without waiting for a reply

Send Policy

Restrict which targets ask_conversation may reach

Clarify Tool

Ask the current user mid-turn (not another chat)

Messaging Bots

Set up the gateway that makes this tool available

Channels Gateway

Connect Telegram, Slack, Discord, and WhatsApp

Gateway

How request/reply is bound to a running gateway