Communication triggers

WOML
<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}}"
/>
AttributeRequiredMeaning
idYesTrigger identity.
eventsYesapp-mention, direct-message, or both as a comma-separated list.
channelsNoComma-separated lowercase names or Slack conversation IDs; filters mentions.
bot-tokenYesExact bot-token secret reference.
app-tokenYesExact 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

WOML
<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

WOML
<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

WOML
<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:

FieldMeaning
providerslack, telegram, discord, or whatsapp.
eventmessage, app-mention, or direct-message.
textBounded text when available.
senderId, senderNameStable sender ID and optional safe display name.
conversationId, conversationTypeConversation identity and direct, group, or channel type.
messageIdStable provider message identity.
replyToMessageId, threadIdOptional reply/thread identities.
occurredAtNormalized RFC 3339 timestamp.
providerDataSmall provider-specific scalar metadata.

Raw envelopes, signatures, headers, tokens, profiles, and credentials do not enter workflow context.