# Chatbot Webhooks - **OpenAPI Version:** `3.1.1` - **API Version:** `1.0.0` The chatbot webhooks allow developers to receive events for [chatbot](https://developers.zoom.us/docs/team-chat-apps/) features. Note regarding JSON payloads for guest users: Be aware that guest users (users not signed in to Zoom or who are members of a different account) are assigned temporary IDs that are valid only for the duration of that meeting or chat channel. Data for guest users in JSON payloads is associated with these temporary IDs. ## Servers - **URL:** `https://{your-endpoint-url}` ## Operations ### team\_chat.link\_shared - **Method:** `POST` - **Path:** `team_chat.link_shared` - **Tags:** webhook The **Chat message link shared**  event triggers when a user sends a chat message to a contact or a chat channel, and when the app is installed for the user. This message must contain the link. The link's domain is registered by the app in Marketplace. A POST request with a mention message is sent to the [Bot Endpoint URL](https://marketplace.zoom.us/docs/guides/getting-started/app-types/create-chatbot-app#set-features) specified in the app's dashboard. ## Prerequisites - A Pro or a higher [plan](https://zoom.us/pricing). #### Request Body ##### Content-Type: application/json - **`event` (required)** `string`, possible values: `"team_chat.link_shared"` — The name of the event. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp at which the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The account ID of the user who sent the app mention message. - **`by_external_user` (required)** `boolean` — Whether this action was performed by an external user. - **`object` (required)** `object` — Information about the app mention message. - **`date_time` (required)** `string`, format: `date-time` — The date and time at which the message was sent, in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. - **`link` (required)** `string` — The link content in message. - **`timestamp` (required)** `integer`, format: `int64` — The timestamp for when the message was sent. - **`trigger_id` (required)** `string` — The unique identification of this webook event, app can use this trigger\_id to invoke openAPI - **`type` (required)** `string`, possible values: `"to_contact", "to_channel"` — The type of message: \* \`to\_contact\` — The message was sent to a contact. \* \`to\_channel\` — The message was sent to a chat channel. - **`channel_id`** `string` — The chat channel's ID. - **`channel_name`** `string` — The chat channel's name. - **`contact_id`** `string` — The message contact's user ID. If the user ID does not belong to the same account as the current user, this field will be empty. - **`contact_member_id`** `string` — The message contact's member ID. - **`message_id`** `string` — The message's ID. If the preview is provided in an unfurl for a posted message, rather than a link inside the message composer, we will simply ignore this property. - **`reply_main_message_id`** `string` — The ID of the parent message in the chat thread.It's only available if the message is a reply to a main message in a thread. - **`operator` (required)** `string`, format: `email` — The email address of the user who sent the app mention message. - **`operator_id` (required)** `string` — The user ID of the user who sent the app mention message. - **`operator_member_id` (required)** `string` — The member ID of the user who sent the app mention message. - **`response_url` (required)** `string` — A callback uri for app to response preview result. **Example:** ```json { "event": "team_chat.link_shared", "event_ts": 1, "response_url": "", "payload": { "account_id": "", "operator_id": "", "operator": "", "operator_member_id": "", "by_external_user": true, "object": { "message_id": "", "type": "to_contact", "channel_id": "", "channel_name": "", "contact_id": "", "contact_member_id": "", "trigger_id": "", "link": "", "reply_main_message_id": "", "date_time": "", "timestamp": 1 } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### interactive\_message\_fields\_editable - **Method:** `POST` - **Path:** `interactive_message_fields_editable` - **Tags:** webhook After a user edits the text of a Chatbot [message with Editable Text](https://marketplace.zoom.us/docs/guides/chatbots/customizing-messages/message-with-editable-text), the `interactive_message_editable` event is invoked and a POST request with data about the event is sent to the [Bot Endpoint URL](https://marketplace.zoom.us/docs/guides/getting-started/app-types/create-chatbot-app#set-features) specified in the app's dashboard. The `editItem` object displays the changes in edited text with `origin` and `target` values. #### Request Body ##### Content-Type: application/json - **`callback_token`** `string` — Use the generated token value with the \*\*callback\_url\*\* value to send a one-time asynchronous response. The token only lasts for 30 mins. Include the \*\*callback\_token\*\* as a \*\*Bearer token in the Authorization header\*\* of your HTTP request. Example: \`\`\` curl --request POST \ --url '{callback\_url}' \ --header 'authorization: Bearer {callback\_token}' \ --header 'content-type: application/json'\ --data-raw '{"content":{"head":{"text":"Response Header"},"body":\[{"type":"message","text":"This is an asynchronous chatbot response."}]}}' - **`callback_url`** `string` — Use this endpoint to send a one-time asynchronous response within 30 minutes of receiving the event. \
The response payload should follow the same structure as the \[Send Chatbot Messages]\(https\://developers.zoom.us/docs/api/chatbot/#tag/chatbot-messages/POST/im/chat/messages) API with required property \*\*content\*\* and optional properties \*reply\_to\*, \*visible\_to\_user\* and \*is\_markdown\_support\*. \
Include the \*\*callback\_token\*\* value from the event as \*\*Bearer token in the Authorization header\*\* of your HTTP POST request. - **`event`** `string` — The name of the event. - **`event_ts`** `integer`, format: `int64` — The timestamp (in milliseconds since epcoch) at which the event occured. The value of this field is returned in long(int64) format. - **`payload`** `object` - **`accountId`** `string` — The account ID of the user sending the command. - **`channelName`** `string` — The channel in which the message was sent. - **`fieldEditItem`** `object` — The item that the user edits. - **`currentValue`** `string` - **`key`** `string` - **`newValue`** `string` - **`messageId`** `string` — The unique ID of the message. - **`original`** `object` — The original message sent to the user. - **`body`** `array` **Items:** - **`items`** `array` **Items:** - **`editable`** `string` - **`key`** `string` - **`value`** `string` - **`type`** `string` - **`head`** `object` - **`sub_head`** `object` - **`text`** `string` - **`text`** `string` - **`robotJid`** `string` — The unique credential of the Chatbot. - **`timestamp`** `string` — The time command message was sent. - **`toJid`** `string` — The JID of the channel or user the message was sent to. - **`userId`** `string` — The user who sends the command. - **`userJid`** `string` — The JID of user who is sending the command. - **`userName`** `string` — The user's display name. **Example:** ```json { "event": "", "event_ts": 1, "callback_url": "", "callback_token": "", "payload": { "accountId": "", "channelName": "", "fieldEditItem": { "currentValue": "", "key": "", "newValue": "" }, "messageId": "", "original": { "head": { "sub_head": { "text": "" }, "text": "" }, "body": [ { "type": "", "items": [ { "editable": "", "value": "", "key": "" } ] } ] }, "robotJid": "", "timestamp": "", "toJid": "", "userId": "", "userJid": "", "userName": "" } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### bot\_notification - **Method:** `POST` - **Path:** `bot_notification` - **Tags:** webhook After a user enters a [User Command](https://marketplace.zoom.us/docs/guides/chatbots/sending-messages#user-commands), a slash command unique to the application, Chatbots send a POST request associated with the `bot_notification` event to the [Bot Endpoint URL](https://marketplace.zoom.us/docs/guides/getting-started/app-types/create-chatbot-app#set-features) with a JSON payload containing all text entered following the command. This payload contains information on the user and event including the account, channel, timestamp, and user name. The `cmd` value reflects the text entered by the user after the slash command. The `userName` is the string value of the user's displayed name, and `channelName` is the string value of the channel in which the command was sent. #### Request Body ##### Content-Type: application/json - **`event`** `string` — Name of the event. - **`event_ts`** `integer`, format: `int64` — Timestamp (in milliseconds since epcoch) at which the event occured. The value of this field is returned in long(int64) format. - **`payload`** `object` - **`accountId`** `string` — The account ID of the user sending the command. - **`channelName`** `string` — Channel in which the message was sent. - **`cmd`** `string` — Slash command entered by the user. - **`name`** `string` — Chatbot Name. - **`robotJid`** `string` — Unique credential of the Chatbot. - **`timestamp`** `integer`, format: `date-time` — Time command message was sent. - **`toJid`** `string` — JID of the channel or user the message was sent to. - **`userId`** `string` — User sending the command. - **`userJid`** `string` — JID of user who is sending the command. - **`userName`** `string` — User's display name. **Example:** ```json { "event": "", "event_ts": 1, "payload": { "accountId": "", "channelName": "", "cmd": "", "name": "", "robotJid": "", "timestamp": 1, "toJid": "", "userId": "", "userJid": "", "userName": "" } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### interactive\_message\_actions - **Method:** `POST` - **Path:** `interactive_message_actions` - **Tags:** webhook After a user clicks a [button in a Chatbot message](https://marketplace.zoom.us/docs/guides/chatbots/customizing-messages/message-with-buttons), the `interactive_message_actions` event is invoked and a POST request with data on the selected option is sent to the [Bot Endpoint URL](https://marketplace.zoom.us/docs/guides/getting-started/app-types/create-chatbot-app#set-features) specified in the app's dashboard. The `actionItem` object displays the value chosen by the user from the `items` array of the original message from the Chatbot. #### Request Body ##### Content-Type: application/json - **`callback_token`** `string` — Use the generated token value with the \*\*callback\_url\*\* value to send a one-time asynchronous response. The token only lasts for 30 mins. Include the \*\*callback\_token\*\* as a \*\*Bearer token in the Authorization header\*\* of your HTTP request. Example: \`\`\` curl --request POST \ --url '{callback\_url}' \ --header 'authorization: Bearer {callback\_token}' \ --header 'content-type: application/json'\ --data-raw '{"content":{"head":{"text":"Response Header"},"body":\[{"type":"message","text":"This is an asynchronous chatbot response."}]}}' - **`callback_url`** `string` — Use this endpoint to send a one-time asynchronous response within 30 minutes of receiving the event. \
The response payload should follow the same structure as the \[Send Chatbot Messages]\(https\://developers.zoom.us/docs/api/chatbot/#tag/chatbot-messages/POST/im/chat/messages) API with required property \*\*content\*\* and optional properties \*reply\_to\*, \*visible\_to\_user\* and \*is\_markdown\_support\*. \
Include the \*\*callback\_token\*\* value from the event as \*\*Bearer token in the Authorization header\*\* of your HTTP POST request. - **`event`** `string` — The name of the event. - **`event_ts`** `integer`, format: `int64` — The timestamp (in milliseconds since epcoch) at which the event occured. The value of this field is returned in long(int64) format. - **`payload`** `object` - **`accountId`** `string` — The account ID of the user sending the command. - **`actionItem`** `object` — Action taken by the user. - **`text`** `string` - **`value`** `string` - **`channelName`** `string` — Channel in which the message was sent. - **`messageId`** `string` — Unique ID of the message. - **`original`** `object` — Original message sent to the user. - **`body`** `array` **Items:** - **`items`** `array` **Items:** - **`style`** `string` - **`text`** `string` - **`value`** `string` - **`type`** `string` - **`head`** `object` - **`sub_head`** `object` - **`text`** `string` - **`text`** `string` - **`robotJid`** `string` — Unique credential of the Chatbot. - **`timestamp`** `integer` — Time command message was sent. - **`toJid`** `string` — JID of the channel or user the message was sent to. - **`userId`** `string` — User sending the command. - **`userJid`** `string` — JID of user who is sending the command. - **`userName`** `string` — User's display name. **Example:** ```json { "event": "", "event_ts": 1, "callback_url": "", "callback_token": "", "payload": { "accountId": "", "actionItem": { "text": "", "value": "" }, "channelName": "", "messageId": "", "original": { "head": { "sub_head": { "text": "" }, "text": "" }, "body": [ { "type": "", "items": [ { "style": "", "text": "", "value": "" } ] } ] }, "robotJid": "", "timestamp": 1, "toJid": "", "userId": "", "userJid": "", "userName": "" } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### interactive\_message\_editable - **Method:** `POST` - **Path:** `interactive_message_editable` - **Tags:** webhook After a user edits the text of a Chatbot [message with Editable Text](https://marketplace.zoom.us/docs/guides/chatbots/customizing-messages/message-with-editable-text), the `interactive_message_editable` event is invoked and a POST request with data about the event is sent to the [Bot Endpoint URL](https://marketplace.zoom.us/docs/guides/getting-started/app-types/create-chatbot-app#set-features) specfied in the app's dashboard. The `editItem` object displays the changes in edited text with `origin` and `target` values. #### Request Body ##### Content-Type: application/json - **`callback_token`** `string` — Use the generated token value with the \*\*callback\_url\*\* value to send a one-time asynchronous response. The token only lasts for 30 mins. Include the \*\*callback\_token\*\* as a \*\*Bearer token in the Authorization header\*\* of your HTTP request. Example: \`\`\` curl --request POST \ --url '{callback\_url}' \ --header 'authorization: Bearer {callback\_token}' \ --header 'content-type: application/json'\ --data-raw '{"content":{"head":{"text":"Response Header"},"body":\[{"type":"message","text":"This is an asynchronous chatbot response."}]}}' - **`callback_url`** `string` — Use this endpoint to send a one-time asynchronous response within 30 minutes of receiving the event. \
The response payload should follow the same structure as the \[Send Chatbot Messages]\(https\://developers.zoom.us/docs/api/chatbot/#tag/chatbot-messages/POST/im/chat/messages) API with required property \*\*content\*\* and optional properties \*reply\_to\*, \*visible\_to\_user\* and \*is\_markdown\_support\*. \
Include the \*\*callback\_token\*\* value from the event as \*\*Bearer token in the Authorization header\*\* of your HTTP POST request. - **`event`** `string` — The name of the event. - **`event_ts`** `integer`, format: `int64` — The timestamp (in milliseconds since epcoch) at which the event occured. The value of this field is returned in long(int64) format. - **`payload`** `object` - **`accountId`** `string` — The account ID of the user editing the message. - **`channelName`** `string` — The channel in which the message was edited. - **`editItem`** `object` — The object containing original and edited value. - **`origin`** `string` - **`target`** `string` - **`messageId`** `string` — The unique ID of the message. - **`original`** `object` — The original message sent to the user. - **`body`** `array` **Items:** - **** `object` - **`editable`** `boolean` - **`text`** `string` - **`type`** `string` - **`head`** `object` - **`sub_head`** `object` - **`text`** `string` - **`text`** `string` - **`robotJid`** `string` — The unique credential of the Chatbot. - **`timestamp`** `integer`, format: `date-time` — The time command message was sent. - **`toJid`** `string` — The JID of the channel or user the message was sent to. - **`userId`** `string` — The user who sends the command. - **`userJid`** `string` — The JID of user who is sending the command. - **`userName`** `string` — The user's display name. **Example:** ```json { "event": "", "event_ts": 1, "callback_url": "", "callback_token": "", "payload": { "accountId": "", "channelName": "", "editItem": { "origin": "", "target": "" }, "messageId": "", "original": { "head": { "sub_head": { "text": "" }, "text": "" }, "body": [ { "": { "editable": true, "text": "", "type": "" } } ] }, "robotJid": "", "timestamp": 1, "toJid": "", "userId": "", "userJid": "", "userName": "" } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### bot\_installed - **Method:** `POST` - **Path:** `bot_installed` - **Tags:** webhook To configure a dynamic welcome message: 1. Go to your Chatbot's settings and navigate to the **Features** page. 2. Check **Your App** for the welcome message. 3. Save your settings. After your Chatbot is authorized, Zoom sends an HTTP POST request to your respective Bot Endpoint URL with the following request body: #### Request Body ##### Content-Type: application/json - **`event`** `string` — Name of the event. - **`payload`** `object` - **`accountId`** `string` — The account ID of the user sending the command. - **`robotJid`** `string` — Unique credential of the Chatbot. - **`timestamp`** `integer`, format: `date-time` — Time command message was sent. - **`userId`** `string` — User sending the command. - **`userJid`** `string` — JID of user who is sending the command. - **`userName`** `string` — User's display name. **Example:** ```json { "event": "", "payload": { "accountId": "", "robotJid": "", "timestamp": 1, "userId": "", "userJid": "", "userName": "" } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### team\_chat.app\_mention - **Method:** `POST` - **Path:** `team_chat.app_mention` - **Tags:** webhook This event triggers when a user mentions a specific app in a chat channel. A POST request with the mention message is sent to the [Bot Endpoint URL](https://developers.zoom.us/docs/team-chat-apps/team-chat-subscriptions/) specified in the app's dashboard. ## Prerequisites - A Pro or a higher [plan](https://zoom.us/pricing). #### Request Body ##### Content-Type: application/json - **`event` (required)** `string`, possible values: `"team_chat.app_mention"` — The name of the event. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp at which the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The account ID of the user who sent the app mention message. Will be empty when by\_external\_user is true - **`by_external_user` (required)** `boolean` — Whether this action was performed by an external user. - **`object` (required)** `object` — Information about the app mention message. - **`message` (required)** `string` — The sent message's content. - **`message_id` (required)** `string` — The message's ID. - **`type` (required)** `string`, possible values: `"to_channel"` — The type of message: \* \`to\_channel\` — The message was sent to a chat channel. - **`channel_id`** `string` — The chat channel's ID. - **`channel_name`** `string` — The chat channel's name. - **`files`** `array` — The attachments file info in sent message's content. **Items:** - **`file_id` (required)** `string` — The attachments file's universally unique identifier (UUID), in base64-encoded format. - **`file_message_type` (required)** `string`, possible values: `"file", "image", "audio", "audio v2", "code snippet", "screen shot"` — The attachments file message type - **`file_name` (required)** `string` — The attachments file's name. - **`file_size` (required)** `integer` — The attachments file's size, in bytes. - **`OS_file_type` (required)** `string` — The attachments file extension type - **`rich_text`** `array` — The \[rich text formatting]\(https\://support.zoom.us/hc/en-us/articles/115004789183-Replying-to-and-managing-chat-messages)object. Use this object to include rich text info in sent message's content. **Items:** - **`end_position` (required)** `integer` — The end position of the rich text. - **`format_type` (required)** `string`, possible values: `"Bold", "Italic", "Strikethrough", "BulletedList", "NumberedList", "Underline", "FontSize", "FontColor", "BackgroundColor", "LeftIndent", "Paragraph", "Quote", "AddLink"` — The type of rich text. - **`start_position` (required)** `integer` — The start position of the rich text in the message string. For example if the first character at the beginning of the message is bold, the value for this field will be 0. - **`format_attr`** `string` — This field is non-null if the value of the \`format\_type\` field is listed below: 1.\`FontSize\` value: \`s\` for small, \`m\` for medium, or \`l\` for large font size. 2.\`FontColor\` and \`BackgroundColor\` value: only supports RGB value. For example: \`FFC0CB\` 3.\`LeftIndent\` value: a positive pixel length. 4.\`Paragraph\` value: \`h1\` for Heading 1, \`h2\` for Heading 2, or \`h3\` for Heading 3. 5.\`AddLink\` value: must be a valid URL, with an \`http\` or \`https\` prefix. For example: \`https\://example.com\` - **`operator` (required)** `string`, format: `email` — The email address of the user who sent the app mention message. Will be empty when by\_external\_user is true - **`operator_id` (required)** `string` — The user ID of the user who sent the app mention message. Will be empty when by\_external\_user is true - **`operator_member_id` (required)** `string` — The member ID of the user who sent the app mention message. **Example:** ```json { "event": "team_chat.app_mention", "event_ts": 1, "payload": { "account_id": "", "operator_id": "", "operator": "", "operator_member_id": "", "by_external_user": true, "object": { "message_id": "", "type": "to_channel", "channel_id": "", "channel_name": "", "message": "", "files": [ { "OS_file_type": "", "file_id": "", "file_message_type": "file", "file_name": "", "file_size": 1 } ], "rich_text": [ { "start_position": 1, "end_position": 1, "format_type": "Bold", "format_attr": "" } ] } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### interactive\_message\_select - **Method:** `POST` - **Path:** `interactive_message_select` - **Tags:** webhook After a user selects an option in a Chatbot [message with a Dropdown](https://marketplace.zoom.us/docs/guides/chatbots/customizing-messages/message-with-dropdown), the `interactive_message_select` event is invoked. The Chatbot sends a POST request associated with this event along with data on the selected option to the [Bot Endpoint URL](https://marketplace.zoom.us/docs/guides/getting-started/app-types/create-chatbot-app#set-features) specified in the app's dashboard. The `selectedItems` array displays the value chosen by the user from the `selected_items` array in the original message sent by the Chatbot. #### Request Body ##### Content-Type: application/json - **`event`** `string` — Name of the event. - **`payload`** `object` - **`accountId`** `string` — The account ID of the user sending the command. - **`channelName`** `string` — Channel in which the message was sent. - **`messageId`** `string` — Unique ID of the message. - **`original`** `object` — Original message sent to user. - **`body`** `array` **Items:** - **`select_items`** `array` **Items:** - **`text`** `string` - **`value`** `string` - **`text`** `string` - **`type`** `string` - **`head`** `object` - **`sub_head`** `object` - **`text`** `string` - **`text`** `string` - **`robotJid`** `string` — Unique credential of the Chatbot. - **`selectedItems`** `array` — Value of item selected by the user. **Items:** - **`value`** `string` - **`timestamp`** `integer`, format: `date-time` — Time command message was sent. - **`toJid`** `string` — JID of the channel or user the message was sent to. - **`userId`** `string` — User sending the command. - **`userJid`** `string` — JID of user who is sending the command. - **`userName`** `string` — User's display name. **Example:** ```json { "event": "", "payload": { "accountId": "", "channelName": "", "messageId": "", "original": { "head": { "sub_head": { "text": "" }, "text": "" }, "body": [ { "select_items": [ { "text": "", "value": "" } ], "text": "", "type": "" } ] }, "robotJid": "", "selectedItems": [ { "value": "" } ], "timestamp": 1, "toJid": "", "userId": "", "userJid": "", "userName": "" } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ## Schemas ### Team\_chat.link\_sharedEvent - **Type:**`object` * **`event` (required)** `string`, possible values: `"team_chat.link_shared"` — The name of the event. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp at which the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The account ID of the user who sent the app mention message. - **`by_external_user` (required)** `boolean` — Whether this action was performed by an external user. - **`object` (required)** `object` — Information about the app mention message. - **`date_time` (required)** `string`, format: `date-time` — The date and time at which the message was sent, in \`yyyy-MM-dd'T'HH:mm:ss'Z'\` format. - **`link` (required)** `string` — The link content in message. - **`timestamp` (required)** `integer`, format: `int64` — The timestamp for when the message was sent. - **`trigger_id` (required)** `string` — The unique identification of this webook event, app can use this trigger\_id to invoke openAPI - **`type` (required)** `string`, possible values: `"to_contact", "to_channel"` — The type of message: \* \`to\_contact\` — The message was sent to a contact. \* \`to\_channel\` — The message was sent to a chat channel. - **`channel_id`** `string` — The chat channel's ID. - **`channel_name`** `string` — The chat channel's name. - **`contact_id`** `string` — The message contact's user ID. If the user ID does not belong to the same account as the current user, this field will be empty. - **`contact_member_id`** `string` — The message contact's member ID. - **`message_id`** `string` — The message's ID. If the preview is provided in an unfurl for a posted message, rather than a link inside the message composer, we will simply ignore this property. - **`reply_main_message_id`** `string` — The ID of the parent message in the chat thread.It's only available if the message is a reply to a main message in a thread. - **`operator` (required)** `string`, format: `email` — The email address of the user who sent the app mention message. - **`operator_id` (required)** `string` — The user ID of the user who sent the app mention message. - **`operator_member_id` (required)** `string` — The member ID of the user who sent the app mention message. * **`response_url` (required)** `string` — A callback uri for app to response preview result. **Example:** ```json { "event": "team_chat.link_shared", "event_ts": 1, "response_url": "", "payload": { "account_id": "", "operator_id": "", "operator": "", "operator_member_id": "", "by_external_user": true, "object": { "message_id": "", "type": "to_contact", "channel_id": "", "channel_name": "", "contact_id": "", "contact_member_id": "", "trigger_id": "", "link": "", "reply_main_message_id": "", "date_time": "", "timestamp": 1 } } } ``` ### Interactive\_message\_fields\_editableEvent - **Type:**`object` * **`callback_token`** `string` — Use the generated token value with the \*\*callback\_url\*\* value to send a one-time asynchronous response. The token only lasts for 30 mins. Include the \*\*callback\_token\*\* as a \*\*Bearer token in the Authorization header\*\* of your HTTP request. Example: \`\`\` curl --request POST \ --url '{callback\_url}' \ --header 'authorization: Bearer {callback\_token}' \ --header 'content-type: application/json'\ --data-raw '{"content":{"head":{"text":"Response Header"},"body":\[{"type":"message","text":"This is an asynchronous chatbot response."}]}}' * **`callback_url`** `string` — Use this endpoint to send a one-time asynchronous response within 30 minutes of receiving the event. \
The response payload should follow the same structure as the \[Send Chatbot Messages]\(https\://developers.zoom.us/docs/api/chatbot/#tag/chatbot-messages/POST/im/chat/messages) API with required property \*\*content\*\* and optional properties \*reply\_to\*, \*visible\_to\_user\* and \*is\_markdown\_support\*. \
Include the \*\*callback\_token\*\* value from the event as \*\*Bearer token in the Authorization header\*\* of your HTTP POST request. * **`event`** `string` — The name of the event. * **`event_ts`** `integer`, format: `int64` — The timestamp (in milliseconds since epcoch) at which the event occured. The value of this field is returned in long(int64) format. * **`payload`** `object` - **`accountId`** `string` — The account ID of the user sending the command. - **`channelName`** `string` — The channel in which the message was sent. - **`fieldEditItem`** `object` — The item that the user edits. - **`currentValue`** `string` - **`key`** `string` - **`newValue`** `string` - **`messageId`** `string` — The unique ID of the message. - **`original`** `object` — The original message sent to the user. - **`body`** `array` **Items:** - **`items`** `array` **Items:** - **`editable`** `string` - **`key`** `string` - **`value`** `string` - **`type`** `string` - **`head`** `object` - **`sub_head`** `object` - **`text`** `string` - **`text`** `string` - **`robotJid`** `string` — The unique credential of the Chatbot. - **`timestamp`** `string` — The time command message was sent. - **`toJid`** `string` — The JID of the channel or user the message was sent to. - **`userId`** `string` — The user who sends the command. - **`userJid`** `string` — The JID of user who is sending the command. - **`userName`** `string` — The user's display name. **Example:** ```json { "event": "", "event_ts": 1, "callback_url": "", "callback_token": "", "payload": { "accountId": "", "channelName": "", "fieldEditItem": { "currentValue": "", "key": "", "newValue": "" }, "messageId": "", "original": { "head": { "sub_head": { "text": "" }, "text": "" }, "body": [ { "type": "", "items": [ { "editable": "", "value": "", "key": "" } ] } ] }, "robotJid": "", "timestamp": "", "toJid": "", "userId": "", "userJid": "", "userName": "" } } ``` ### Bot\_notificationEvent - **Type:**`object` * **`event`** `string` — Name of the event. * **`event_ts`** `integer`, format: `int64` — Timestamp (in milliseconds since epcoch) at which the event occured. The value of this field is returned in long(int64) format. * **`payload`** `object` - **`accountId`** `string` — The account ID of the user sending the command. - **`channelName`** `string` — Channel in which the message was sent. - **`cmd`** `string` — Slash command entered by the user. - **`name`** `string` — Chatbot Name. - **`robotJid`** `string` — Unique credential of the Chatbot. - **`timestamp`** `integer`, format: `date-time` — Time command message was sent. - **`toJid`** `string` — JID of the channel or user the message was sent to. - **`userId`** `string` — User sending the command. - **`userJid`** `string` — JID of user who is sending the command. - **`userName`** `string` — User's display name. **Example:** ```json { "event": "", "event_ts": 1, "payload": { "accountId": "", "channelName": "", "cmd": "", "name": "", "robotJid": "", "timestamp": 1, "toJid": "", "userId": "", "userJid": "", "userName": "" } } ``` ### Interactive\_message\_actionsEvent - **Type:**`object` * **`callback_token`** `string` — Use the generated token value with the \*\*callback\_url\*\* value to send a one-time asynchronous response. The token only lasts for 30 mins. Include the \*\*callback\_token\*\* as a \*\*Bearer token in the Authorization header\*\* of your HTTP request. Example: \`\`\` curl --request POST \ --url '{callback\_url}' \ --header 'authorization: Bearer {callback\_token}' \ --header 'content-type: application/json'\ --data-raw '{"content":{"head":{"text":"Response Header"},"body":\[{"type":"message","text":"This is an asynchronous chatbot response."}]}}' * **`callback_url`** `string` — Use this endpoint to send a one-time asynchronous response within 30 minutes of receiving the event. \
The response payload should follow the same structure as the \[Send Chatbot Messages]\(https\://developers.zoom.us/docs/api/chatbot/#tag/chatbot-messages/POST/im/chat/messages) API with required property \*\*content\*\* and optional properties \*reply\_to\*, \*visible\_to\_user\* and \*is\_markdown\_support\*. \
Include the \*\*callback\_token\*\* value from the event as \*\*Bearer token in the Authorization header\*\* of your HTTP POST request. * **`event`** `string` — The name of the event. * **`event_ts`** `integer`, format: `int64` — The timestamp (in milliseconds since epcoch) at which the event occured. The value of this field is returned in long(int64) format. * **`payload`** `object` - **`accountId`** `string` — The account ID of the user sending the command. - **`actionItem`** `object` — Action taken by the user. - **`text`** `string` - **`value`** `string` - **`channelName`** `string` — Channel in which the message was sent. - **`messageId`** `string` — Unique ID of the message. - **`original`** `object` — Original message sent to the user. - **`body`** `array` **Items:** - **`items`** `array` **Items:** - **`style`** `string` - **`text`** `string` - **`value`** `string` - **`type`** `string` - **`head`** `object` - **`sub_head`** `object` - **`text`** `string` - **`text`** `string` - **`robotJid`** `string` — Unique credential of the Chatbot. - **`timestamp`** `integer` — Time command message was sent. - **`toJid`** `string` — JID of the channel or user the message was sent to. - **`userId`** `string` — User sending the command. - **`userJid`** `string` — JID of user who is sending the command. - **`userName`** `string` — User's display name. **Example:** ```json { "event": "", "event_ts": 1, "callback_url": "", "callback_token": "", "payload": { "accountId": "", "actionItem": { "text": "", "value": "" }, "channelName": "", "messageId": "", "original": { "head": { "sub_head": { "text": "" }, "text": "" }, "body": [ { "type": "", "items": [ { "style": "", "text": "", "value": "" } ] } ] }, "robotJid": "", "timestamp": 1, "toJid": "", "userId": "", "userJid": "", "userName": "" } } ``` ### Interactive\_message\_editableEvent - **Type:**`object` * **`callback_token`** `string` — Use the generated token value with the \*\*callback\_url\*\* value to send a one-time asynchronous response. The token only lasts for 30 mins. Include the \*\*callback\_token\*\* as a \*\*Bearer token in the Authorization header\*\* of your HTTP request. Example: \`\`\` curl --request POST \ --url '{callback\_url}' \ --header 'authorization: Bearer {callback\_token}' \ --header 'content-type: application/json'\ --data-raw '{"content":{"head":{"text":"Response Header"},"body":\[{"type":"message","text":"This is an asynchronous chatbot response."}]}}' * **`callback_url`** `string` — Use this endpoint to send a one-time asynchronous response within 30 minutes of receiving the event. \
The response payload should follow the same structure as the \[Send Chatbot Messages]\(https\://developers.zoom.us/docs/api/chatbot/#tag/chatbot-messages/POST/im/chat/messages) API with required property \*\*content\*\* and optional properties \*reply\_to\*, \*visible\_to\_user\* and \*is\_markdown\_support\*. \
Include the \*\*callback\_token\*\* value from the event as \*\*Bearer token in the Authorization header\*\* of your HTTP POST request. * **`event`** `string` — The name of the event. * **`event_ts`** `integer`, format: `int64` — The timestamp (in milliseconds since epcoch) at which the event occured. The value of this field is returned in long(int64) format. * **`payload`** `object` - **`accountId`** `string` — The account ID of the user editing the message. - **`channelName`** `string` — The channel in which the message was edited. - **`editItem`** `object` — The object containing original and edited value. - **`origin`** `string` - **`target`** `string` - **`messageId`** `string` — The unique ID of the message. - **`original`** `object` — The original message sent to the user. - **`body`** `array` **Items:** - **** `object` - **`editable`** `boolean` - **`text`** `string` - **`type`** `string` - **`head`** `object` - **`sub_head`** `object` - **`text`** `string` - **`text`** `string` - **`robotJid`** `string` — The unique credential of the Chatbot. - **`timestamp`** `integer`, format: `date-time` — The time command message was sent. - **`toJid`** `string` — The JID of the channel or user the message was sent to. - **`userId`** `string` — The user who sends the command. - **`userJid`** `string` — The JID of user who is sending the command. - **`userName`** `string` — The user's display name. **Example:** ```json { "event": "", "event_ts": 1, "callback_url": "", "callback_token": "", "payload": { "accountId": "", "channelName": "", "editItem": { "origin": "", "target": "" }, "messageId": "", "original": { "head": { "sub_head": { "text": "" }, "text": "" }, "body": [ { "": { "editable": true, "text": "", "type": "" } } ] }, "robotJid": "", "timestamp": 1, "toJid": "", "userId": "", "userJid": "", "userName": "" } } ``` ### Bot\_installedEvent - **Type:**`object` * **`event`** `string` — Name of the event. * **`payload`** `object` - **`accountId`** `string` — The account ID of the user sending the command. - **`robotJid`** `string` — Unique credential of the Chatbot. - **`timestamp`** `integer`, format: `date-time` — Time command message was sent. - **`userId`** `string` — User sending the command. - **`userJid`** `string` — JID of user who is sending the command. - **`userName`** `string` — User's display name. **Example:** ```json { "event": "", "payload": { "accountId": "", "robotJid": "", "timestamp": 1, "userId": "", "userJid": "", "userName": "" } } ``` ### Team\_chat.app\_mentionEvent - **Type:**`object` * **`event` (required)** `string`, possible values: `"team_chat.app_mention"` — The name of the event. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp at which the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The account ID of the user who sent the app mention message. Will be empty when by\_external\_user is true - **`by_external_user` (required)** `boolean` — Whether this action was performed by an external user. - **`object` (required)** `object` — Information about the app mention message. - **`message` (required)** `string` — The sent message's content. - **`message_id` (required)** `string` — The message's ID. - **`type` (required)** `string`, possible values: `"to_channel"` — The type of message: \* \`to\_channel\` — The message was sent to a chat channel. - **`channel_id`** `string` — The chat channel's ID. - **`channel_name`** `string` — The chat channel's name. - **`files`** `array` — The attachments file info in sent message's content. **Items:** - **`file_id` (required)** `string` — The attachments file's universally unique identifier (UUID), in base64-encoded format. - **`file_message_type` (required)** `string`, possible values: `"file", "image", "audio", "audio v2", "code snippet", "screen shot"` — The attachments file message type - **`file_name` (required)** `string` — The attachments file's name. - **`file_size` (required)** `integer` — The attachments file's size, in bytes. - **`OS_file_type` (required)** `string` — The attachments file extension type - **`rich_text`** `array` — The \[rich text formatting]\(https\://support.zoom.us/hc/en-us/articles/115004789183-Replying-to-and-managing-chat-messages)object. Use this object to include rich text info in sent message's content. **Items:** - **`end_position` (required)** `integer` — The end position of the rich text. - **`format_type` (required)** `string`, possible values: `"Bold", "Italic", "Strikethrough", "BulletedList", "NumberedList", "Underline", "FontSize", "FontColor", "BackgroundColor", "LeftIndent", "Paragraph", "Quote", "AddLink"` — The type of rich text. - **`start_position` (required)** `integer` — The start position of the rich text in the message string. For example if the first character at the beginning of the message is bold, the value for this field will be 0. - **`format_attr`** `string` — This field is non-null if the value of the \`format\_type\` field is listed below: 1.\`FontSize\` value: \`s\` for small, \`m\` for medium, or \`l\` for large font size. 2.\`FontColor\` and \`BackgroundColor\` value: only supports RGB value. For example: \`FFC0CB\` 3.\`LeftIndent\` value: a positive pixel length. 4.\`Paragraph\` value: \`h1\` for Heading 1, \`h2\` for Heading 2, or \`h3\` for Heading 3. 5.\`AddLink\` value: must be a valid URL, with an \`http\` or \`https\` prefix. For example: \`https\://example.com\` - **`operator` (required)** `string`, format: `email` — The email address of the user who sent the app mention message. Will be empty when by\_external\_user is true - **`operator_id` (required)** `string` — The user ID of the user who sent the app mention message. Will be empty when by\_external\_user is true - **`operator_member_id` (required)** `string` — The member ID of the user who sent the app mention message. **Example:** ```json { "event": "team_chat.app_mention", "event_ts": 1, "payload": { "account_id": "", "operator_id": "", "operator": "", "operator_member_id": "", "by_external_user": true, "object": { "message_id": "", "type": "to_channel", "channel_id": "", "channel_name": "", "message": "", "files": [ { "OS_file_type": "", "file_id": "", "file_message_type": "file", "file_name": "", "file_size": 1 } ], "rich_text": [ { "start_position": 1, "end_position": 1, "format_type": "Bold", "format_attr": "" } ] } } } ``` ### Interactive\_message\_selectEvent - **Type:**`object` * **`event`** `string` — Name of the event. * **`payload`** `object` - **`accountId`** `string` — The account ID of the user sending the command. - **`channelName`** `string` — Channel in which the message was sent. - **`messageId`** `string` — Unique ID of the message. - **`original`** `object` — Original message sent to user. - **`body`** `array` **Items:** - **`select_items`** `array` **Items:** - **`text`** `string` - **`value`** `string` - **`text`** `string` - **`type`** `string` - **`head`** `object` - **`sub_head`** `object` - **`text`** `string` - **`text`** `string` - **`robotJid`** `string` — Unique credential of the Chatbot. - **`selectedItems`** `array` — Value of item selected by the user. **Items:** - **`value`** `string` - **`timestamp`** `integer`, format: `date-time` — Time command message was sent. - **`toJid`** `string` — JID of the channel or user the message was sent to. - **`userId`** `string` — User sending the command. - **`userJid`** `string` — JID of user who is sending the command. - **`userName`** `string` — User's display name. **Example:** ```json { "event": "", "payload": { "accountId": "", "channelName": "", "messageId": "", "original": { "head": { "sub_head": { "text": "" }, "text": "" }, "body": [ { "select_items": [ { "text": "", "value": "" } ], "text": "", "type": "" } ] }, "robotJid": "", "selectedItems": [ { "value": "" } ], "timestamp": 1, "toJid": "", "userId": "", "userJid": "", "userName": "" } } ```