Skip to main content
DocsRunExternal Messages

External Messages

Where to view messages exchanged between workflows and external channels like Telegram, and how they map to execution details.

Once a workflow is running, it often needs to send things out to external channels: ask a question in Telegram and wait for your reply, post a daily report to a Slack channel, or push an alert to a DingTalk group. The console's "External messages" page collects these messages, scattered across executions, into one searchable list, and each message links back to the execution that produced it in one click. Find it under Console sidebar → External messages.

Where Messages Come From

Every record in the list comes from an execution, mainly from three sources:

  • An Agent's IM tool calls — sendMessageToUser (send a message), sendFileToUser (send a file), askUserViaIM (ask and wait for a reply)
  • Structured external-message events in a step's event stream — recorded alongside events as the workflow runs
  • Output from delivery steps — the delivery record left after a report or file is successfully delivered to Slack or Telegram

External messages have no separate ingestion channel: the list is indexed from each execution's event stream, and execution data is always the source of truth. Message content reflects the text recorded at send time.

Supported Channels

Outbound messages cover 7 IM channels: Telegram, Slack, Discord, WhatsApp, WeCom, DingTalk, and Feishu. Telegram is bidirectional: a workflow can ask a question mid-run and wait for your reply before continuing. This page lists the messages a workflow sends; your replies are viewable in the event timeline of the corresponding execution details.

List And Filters

The list is sorted by send time, newest first, with columns for time, channel, direction, workflow, execution ID, execution status, step, and message content. Filters can be stacked:

FilterDescription
Keyword searchMatches message content, execution ID, workflow name, step name, and channel
Execution StatusWaiting / Running / Completed / Failed / Cancelled / Interrupted
WorkflowSee only messages sent by a specific workflow
external channelsFilter by channel, such as Telegram, Slack, or DingTalk
Message directionSend (text message) or send file

Page sizes of 20 / 50 / 100 / 200 are available. Clicking the message content or "Details" opens a drawer with the full original message (links in it are clickable), the send time, the owning workflow and step, and two buttons: "Copy message" and "View execution details."

Relationship To Execution Details

The same messages have three entry points in the console, from coarse to fine:

  • The External messages page (this page) — an aggregated list across all executions, good for tracking a message by channel or keyword
  • The execution list — executions that sent external messages carry a message badge; hover to see the count and a preview of the latest one
  • Execution details — the "External messages" tab lists only the messages this execution sent; the event timeline shows the full context around a message, such as what the user replied after a question and whether it timed out

Every message records the name of the step that produced it. When a message's content is wrong, clicking through to the execution details and locating that step's logs is much faster than scrolling through a chat history.

Pull the Message List via the API

bash
# 最近的外部消息(时间倒序)
curl "https://braidrun.com/api/executions/external-messages?page=1&size=50" \
  -H "Authorization: Bearer <token>"

# 只看某条工作流发到 Telegram 的文本消息
curl "https://braidrun.com/api/executions/external-messages?workflowId=<workflow-id>&service=telegram&direction=outgoing" \
  -H "Authorization: Bearer <token>"
ParametersDescription
page / sizePagination; size defaults to 50, max 200 (the web UI defaults to 20 per page)
workflowIdSee only a specific workflow
statusFilter by execution status, such as COMPLETED or FAILED
serviceChannel, lowercase, such as telegram, slack, dingtalk, or feishu
directionMessage direction: outgoing (text) or outgoing_file (file)
searchKeyword, matching the same range as the page's search box

Each returned record includes executionId, workflowId, workflowName, executionStatus, service, direction, content, stepName, and timestamp — enough to reconstruct in an external system "which step of which workflow sent what, when, and to which channel."