Chatbot webhooks

View as Markdown

User actions like slash commands, clicking UI elements on a chatbot message, or using a shortcut trigger webhooks to your endpoint URL.

Remember to verify that the request comes from Zoom.

Slash commands

Here are the JSON structures of a Slack and Zoom slash command.

{
  "token": "U0xBQ0tfVE9LRU4",
  "team_id": "U0xBQ0tfVEVBTV9JRA",
  "team_domain": "zoom",
  "channel_id": "U0xBQ0tfQ0hBTk5FTF9JRA",
  "channel_name": "Photos",
  "user_id": "U089PEMRAM8",
  "user_name": "jane.dev",
  "command": "/unsplash",
  "text": "island",
  "api_app_id": "U0xBQ0tfQVBJX0FQUF9JRA",
  "is_enterprise_install": "false",
  "enterprise_id": "U0xBQ0tfRU5URVJQUklTRV9OQU1F",
  "enterprise_name": "Zoom Video Communications, Inc.",
  "response_url": "https://hooks.slack.com/services/U0xBQ0tfSU5DT01JTkdfV0VCSE9PS19JRA/U0xBQ0tfSU5DT01JTkdfV0VCSE9PS19JRA/U0xBQ0tfSU5DT01JTkdfV0VCSE9PS19JRA",
  "trigger_id": "U0xBQ0tfVFJJR0dFUl9JRA"
}
{
  "event": "bot_notification",
  "payload": {
    "accountId": "Wk9PTV9BQ0NPVU5UX0lE",
    "channelName": "Marketing",
    "cmd": "island",
    "robotJid": "Wk9PTV9ST0JPVF9KSUQ@xmpp.zoom.us",
    "timestamp": 1740440972844,
    "toJid": "Wk9PTV9DSEFOTkVMX0lE@conference.xmpp.zoom.us",
    "triggerId": "Wk9PTV9UUklHR0VSX0lE",
    "userId": "Wk9PTV9VU0VSX0lE",
    "userJid": "Wk9PTV9VU0VSX0lE@xmpp.zoom.us",
    "userMemberId": "Wk9PTV9VU0VSX01FTUJFUl9JRA",
    "userName": "Jane Dev",
    "userStatus": "authorized"
  }
}

UI elements

Here are the JSON structures of a user action taken on a Slack and Zoom message with buttons.

{
  "payload": {
    "type": "block_actions",
    "user": {
      "id": "U0xBQ0tfVVNFUl9JRA",
      "username": "jane.dev",
      "name": "jane.dev",
      "team_id": "U0xBQ0tfVEVBTV9JRA"
    },
    "api_app_id": "U0xBQ0tfQVBJX0FQUF9JRA",
    "token": "U0xBQ0tfVE9LRU4",
    "container": {
      "type": "message",
      "message_ts": "1739922180.382039",
      "channel_id": "U0xBQ0tfQ0hBTk5FTF9JRA",
      "is_ephemeral": false
    },
    "trigger_id": "U0xBQ0tfVFJJR0dFUl9JRA",
    "team": {
      "id": "U0xBQ0tfVEVBTV9JRA",
      "domain": "zoom",
      "enterprise_id": "U0xBQ0tfRU5URVJQUklTRV9OQU1F",
      "enterprise_name": "Zoom Video Communications, Inc."
    },
    "enterprise": {
      "id": "U0xBQ0tfRU5URVJQUklTRV9OQU1F",
      "name": "Zoom Video Communications, Inc."
    },
    "is_enterprise_install": false,
    "channel": {
      "id": "U0xBQ0tfQ0hBTk5FTF9JRA",
      "name": "marketing"
    },
    "message": {
      "subtype": "bot_message",
      "text": "Tacos for lunch? 🌮 Up Vote button Down Vote button",
      "type": "message",
      "ts": "1739922180.382039",
      "bot_id": "U0xBQ0tfQk9UX0lE",
      "blocks": [
        {
          "type": "section",
          "block_id": "U0xBQ0tfQkxPQ0tfSUQ",
          "text": {
            "type": "plain_text",
            "text": "Tacos for lunch? :taco:",
            "emoji": true
          }
        },
        {
          "type": "actions",
          "block_id": "U0xBQ0tfQkxPQ0tfSUQ",
          "elements": [
            {
              "type": "button",
              "action_id": "actionId-0",
              "text": {
                "type": "plain_text",
                "text": "Up Vote",
                "emoji": true
              },
              "style": "primary",
              "value": "up-vote"
            }
          ]
        },
        {
          "type": "actions",
          "block_id": "U0xBQ0tfQkxPQ0tfSUQ",
          "elements": [
            {
              "type": "button",
              "action_id": "actionId-1",
              "text": {
                "type": "plain_text",
                "text": "Down Vote",
                "emoji": true
              },
              "style": "danger",
              "value": "down-vote"
            }
          ]
        }
      ]
    },
    "state": {
      "values": {}
    },
    "response_url": "https://hooks.slack.com/services/U0xBQ0tfSU5DT01JTkdfV0VCSE9PS19JRA/U0xBQ0tfSU5DT01JTkdfV0VCSE9PS19JRA/U0xBQ0tfSU5DT01JTkdfV0VCSE9PS19JRA",
    "actions": [
      {
        "action_id": "actionId-0",
        "block_id": "U0xBQ0tfQkxPQ0tfSUQ",
        "text": {
          "type": "plain_text",
          "text": "Up Vote",
          "emoji": true
        },
        "value": "up-vote",
        "style": "primary",
        "type": "button",
        "action_ts": "1739922234.736267"
      }
    ]
  }
}
{
  "event": "interactive_message_actions",
  "payload": {
    "accountId": "Wk9PTV9BQ0NPVU5UX0lE",
    "actionItem": {
      "text": "Up Vote",
      "value": "up-vote"
    },
    "channelName": "Marketing",
    "messageId": "Wk9PTV9NRVNTQUdFX0lE",
    "original": {
      "head": {
        "text": "Vote bot"
      },
      "body": [
        {
          "footer": "Vote by John Dev",
          "type": "section",
          "sections": [
            {
              "text": "\"Tacos for Lunch?\"",
              "type": "message"
            },
            {
              "type": "actions",
              "items": [
                {
                  "style": "Primary",
                  "text": "Up Vote",
                  "value": "up-vote"
                },
                {
                  "style": "Danger",
                  "text": "Down Vote",
                  "value": "down-vote"
                }
              ]
            }
          ]
        }
      ]
    },
    "replyMainMessageId": "Wk9PTV9SRVBMWV9NQUlOX01FU1NBR0VfSUQ",
    "robotJid": "Wk9PTV9ST0JPVF9KSUQ@xmpp.zoom.us",
    "timestamp": 1740441144756,
    "toJid": "Wk9PTV9DSEFOTkVMX0lE@conference.xmpp.zoom.us",
    "triggerId": "Wk9PTV9UUklHR0VSX0lE",
    "userId": "Wk9PTV9VU0VSX0lE",
    "userJid": "Wk9PTV9VU0VSX0lE@xmpp.zoom.us",
    "userMemberId": "Wk9PTV9VU0VSX01FTUJFUl9JRA",
    "userName": "Jane Dev",
    "userStatus": "authorized"
  }
}

Shortcuts

Here are the differences between Slack and Zoom shortcuts.

Slack sends shortcuts as webhooks.

{
  "payload": {
    "type": "message_action",
    "token": "U0xBQ0tfVE9LRU4",
    "action_ts": "1739922431.349104",
    "team": {
      "id": "U0xBQ0tfVEVBTV9JRA",
      "domain": "zoom",
      "enterprise_id": "U0xBQ0tfRU5URVJQUklTRV9OQU1F",
      "enterprise_name": "Zoom Video Communications, Inc."
    },
    "user": {
      "id": "U0xBQ0tfVVNFUl9JRA",
      "username": "jane.dev",
      "team_id": "U0xBQ0tfVEVBTV9JRA",
      "name": "jane.dev"
    },
    "channel": {
      "id": "U0xBQ0tfQ0hBTk5FTF9JRA",
      "name": "engineering"
    },
    "is_enterprise_install": false,
    "enterprise": {
      "id": "U0xBQ0tfRU5URVJQUklTRV9OQU1F",
      "name": "Zoom Video Communications, Inc."
    },
    "callback_id": "U0xBQ0tfQ0FMTEJBQ0tfSUQ",
    "trigger_id": "U0xBQ0tfVFJJR0dFUl9JRA",
    "response_url": "https://hooks.slack.com/services/U0xBQ0tfSU5DT01JTkdfV0VCSE9PS19JRA/U0xBQ0tfSU5DT01JTkdfV0VCSE9PS19JRA/U0xBQ0tfSU5DT01JTkdfV0VCSE9PS19JRA",
    "message_ts": "1739921917.389869",
    "message": {
      "subtype": "bot_message",
      "text": "Hello world",
      "type": "message",
      "ts": "1739921917.389869",
      "bot_id": "U0xBQ0tfQk9UX0lE",
      "blocks": [
        {
          "type": "rich_text",
          "block_id": "U0xBQ0tfQkxPQ0tfSUQ",
          "elements": [
            {
              "type": "rich_text_section",
              "elements": [
                {
                  "type": "text",
                  "text": "Hello world"
                }
              ]
            }
          ]
        }
      ]
    }
  }
}

Shortcuts on Zoom Chat are currently not webhook based, instead, clicking a Zoom shortcut opens a WebView pointing to your webpage where you can add interactivity and use the Zoom Apps SDK.