Send messages with Chatbot API

View as Markdown

In this section, you'll implement a utility function that sends messages from your chatbot to Chat using the Chatbot API. This function constructs a message body, retrieves a chatbot access token, and sends a POST request to Zoom's /im/chat/messages endpoint.

By the end of this section, you’ll have:

  • A reusable function to send messages to Chat
  • Support for replying to messages using message threading
  • Console logging for debugging message payloads and errors

Implement message sending logic

Create a utility function to send a chat message using the Chatbot API. The function accepts the recipient JID, message content, and an optional message ID for threaded replies.

File Path

utils/zoom-api.js

Code Snippet

/**
 * Send a message to Zoom Team Chat
 * @param {string} toJid - Recipient JID (user or channel)
 * @param {string} message - Message content
 * @param {string} [replyTo] - Optional message ID to reply to
 * @returns {Promise<Object>} API response
 */
export async function sendChatMessage(toJid, message, replyTo = null) {
  try {
    const accessToken = await getChatbotToken();

    const body = {
      account_id: "5YQGYK-FSc-0M0DgZTCzkQ",
      "content": {
        "head": {
          "text": "Hello World"
        },
        "body": [
          {
            "type": "message",
            "text": message
          }
        ]
      },
      robot_jid: "v1nhrah1hrqhuexexb5nn5-a@xmpp.zoom.us",
      to_jid: toJid,
    };

    if (replyTo) {
      body.reply_to = replyTo;
    }

    console.log('Preparing to send message to Chat:', body);

    const response = await fetch(`${ZOOM_API_BASE_URL}/im/chat/messages`, {
      method: 'POST',
      headers: {
        Authorization: `Bearer ${accessToken}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify(body),
    });

    if (!response.ok) {
      const error = await response.json();
      throw new Error(`Failed to send message: ${error.message || response.statusText}`);
    }

    return response.json();
  } catch (error) {
    console.error('Error sending chat message:', error);
    throw error;
  }
}