Communication triggers
<slack
id="agentMessage"
events="app-mention,direct-message"
channels="woml-testing,agent-support"
bot-token="{{secrets.SLACK_BOT_TOKEN}}"
app-token="{{secrets.SLACK_APP_TOKEN}}"
/>| Attribute | Required | Meaning |
|---|---|---|
id | Yes | Trigger identity. |
events | Yes | app-mention, direct-message, or both as a comma-separated list. |
channels | No | Comma-separated lowercase names or Slack conversation IDs; filters mentions. |
bot-token | Yes | Exact bot-token secret reference. |
app-token | Yes | Exact Socket Mode app-token secret reference. |
WOML shares one Socket Mode connection per credential pair, durably admits the event before acknowledgement, and ignores bot/self messages, edits, deletes, unsupported subtypes, and unmatched channels.
<telegram> trigger
<telegram id="agentMessage" events="message" bot-token="{{secrets.TELEGRAM_BOT_TOKEN}}" />Telegram v1 accepts only events="message". The bot token is required. WOML uses shared long polling and ignores bot-authored messages.
<discord> trigger
<discord
id="agentMessage"
events="app-mention,direct-message"
channels="200000000000000001,200000000000000002"
bot-token="{{secrets.DISCORD_BOT_TOKEN}}"
/>events accepts app mentions and/or direct messages. channels is an optional comma-separated allowlist of 17–20 digit Discord channel IDs. Channel names and slash commands are not supported. WOML uses a shared resumable Gateway connection.
<whatsapp> trigger
<whatsapp
id="customerMessage"
events="message"
phone-number-id="123456789012345"
verify-token="{{secrets.WHATSAPP_VERIFY_TOKEN}}"
app-secret="{{secrets.WHATSAPP_APP_SECRET}}"
/>WhatsApp v1 accepts only events="message". phone-number-id is Meta's numeric Phone Number ID, not the display number. verify-token and app-secret are required secret references. WOML exposes /callbacks/whatsapp, verifies X-Hub-Signature-256 over raw bytes, and does not create runs for delivery-status callbacks.
Communication trigger payload
Slack, Telegram, Discord, and WhatsApp normalize provider messages under context.payload:
| Field | Meaning |
|---|---|
provider | slack, telegram, discord, or whatsapp. |
event | message, app-mention, or direct-message. |
text | Bounded text when available. |
senderId, senderName | Stable sender ID and optional safe display name. |
conversationId, conversationType | Conversation identity and direct, group, or channel type. |
messageId | Stable provider message identity. |
replyToMessageId, threadId | Optional reply/thread identities. |
occurredAt | Normalized RFC 3339 timestamp. |
providerData | Small provider-specific scalar metadata. |
Raw envelopes, signatures, headers, tokens, profiles, and credentials do not enter workflow context.