Skip to content

channel

Invoke a channel action — Slack send_message, open_modal, add_reaction, … — without going through an agent turn.

Sourceinternal/agents/workflow/nodes/channel.go
When to useSend messages, open modals, react, reply via Slack / Telegram / etc. Use over connector when the action is channel-flavoured (interactive surfaces, response_url, App Home).
Discoveryworkflow_integration MCP op returns the full per-channel event + action catalog with input_schema / output_schema per action.

Schema

FieldTypeRequiredNotes
channelstringChannel adapter key (slack, telegram, …).
opstringAction key registered by the adapter.
argsmap (templated)Per-action input. Field set comes from the action's input_schema.
arg_modesmapPer-arg fixed / expression.

Output

FieldTypeWhat (action-dependent)
tsstringSlack: message timestamp.
channelstringChannel ID the action landed in.
view_idstringopen_modal only.
view_hashstringopen_modal only.

Per-action output schemas are in workflow_integration — call it for the exact shape.

Slack action registry

ActionWhat
send_messagePost a message in a channel / DM / thread, with optional Block Kit blocks.
update_messageEdit an existing message by ts.
send_ephemeralVisible only to one user.
add_reactionEmoji reaction.
open_dmOpen (or reuse) a DM channel with a user, returning the channel ID.
open_modal, push_modal, update_modalOpen / push / update a Slack modal (uses trigger_id from an interaction payload).
publish_homeUpdate a user's App Home tab.
respond_urlReply to an interaction using its response_url (works even when the bot lacks chat:write on that channel).

See Channels ▶ Slack for the transport details these actions ride on.

Example

json
{
  "id": "send_reply",
  "type": "channel",
  "channel": "slack",
  "op": "send_message",
  "arg_modes": {
    "channel": "expression",
    "text": "expression"
  },
  "args": {
    "channel": "{{index .Event.Payload \"channel_id\"}}",
    "text": "Got it, looking into {{.Node.classify.verdict}}.",
    "thread_ts": "{{index .Event.Payload \"thread_ts\"}}"
  }
}

Pair with

  • agent — agent generates the reply, channel posts it.
  • connector — for raw Slack Web API calls without channel-side hooks.
Built with ❤️ by a developer, for developers.