Sending messages with Zoom Chatbot API
Sending messages with Zoom Chatbot API
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;
}
}