Logo
Section 1 / 2

添加和移除表情反应

学习如何使用 Slack 的 API 调用来添加和移除表情反应。

导入

添加和移除表情反应

学习如何使用 Slack 的 API 调用来添加和移除表情反应。

反应 是一种以图形化方式与消息互动的方式,但我们的应用程序也可以使用反应功能。例如,我们可以创建一个 Slack 应用程序,用于统计反应并根据结果做出响应,就像一个投票应用一样。

在本课中,我们将了解以下两个端点:

  1. reactions.add:此端点用于向某项内容添加反应。
  2. reactions.remove:此端点用于从某项内容中移除反应。

添加反应

要添加反应,我们访问 https://slack.com/api/reactions.add 端点。

请求参数

reactions.add 端点的一些重要查询参数如下:

参数类型必需性说明
tokentoken必需认证令牌携带了控制不同 Slack 应用和 API 使用权限的所需作用域。通常通过 HTTP Authorization 头或 POST 参数传递。
channelstring必需消息所在的频道 ID。
namestring必需反应(即表情符号)的名称。
timestampstring必需要添加反应的消息的时间戳。

让我们调用 reactions.add 端点。点击“运行”按钮,向频道发送一条“me”类型的消息,并为其添加反应。

1import fetch from "node-fetch"; 2 3const url = new URL("https://slack.com/api/reactions.add"); 4 5const headerParameters = { 6 Authorization: "Bearer {{TOKEN}}", 7 "Content-Type": "application/json; charset=UTF-8", 8}; 9 10async function addReaction(reaction, timestamp) { 11 try { 12 const bodyParameters = JSON.stringify({ 13 name: reaction, 14 channel: "{{CHANNEL_ID}}", 15 timestamp: timestamp, 16 }); 17 18 const options = { 19 method: "POST", 20 headers: headerParameters, 21 body: bodyParameters, 22 }; 23 24 const response = await fetch(url, options); 25 printResponse(response); 26 } catch (error) { 27 printError(error); 28 } 29} 30 31async function driver() { 32 const timestamp = await sendMeMessage(); 33 console.log(timestamp); 34 await addReaction("eyes", timestamp); 35 await addReaction("tada", timestamp); 36} 37 38driver();

让我们分析代码中的高亮部分:

  • 第 10 行:定义了一个 addReaction 函数,用于向消息添加反应。
  • 第 12–16 行:设置请求参数,包括反应名称、目标频道以及要添加反应的消息时间戳。
  • 第 24 行:调用 reactions.add 端点。
  • 第 32 行:发送一条“me”消息并获取其时间戳。
  • 第 34–35 行:调用 addReaction 函数,为该消息添加两个反应。

响应字段

该端点的响应仅包含一个 ok 字段,表示请求是否成功。


移除反应

要移除反应,我们访问 https://slack.com/api/reactions.remove 端点。必须指定以下参数之一:file 或 file_comment,或者同时指定 channel 和 timestamp。

请求参数

reactions.remove 端点的一些重要查询参数如下:

参数类型必需性说明
tokentoken必需认证令牌携带了控制不同 Slack 应用和 API 使用权限的所需作用域。通常通过 HTTP Authorization 头或 POST 参数传递。
namestring必需反应的名称。
channelstring可选频道 ID。
timestampstring可选消息的时间戳。
filestring可选文件 ID。
file_commentstring可选文件评论 ID。

让我们调用 reactions.remove 端点。点击“运行”按钮,移除上一个代码块中添加的反应。

1import fetch from "node-fetch"; 2 3const url = new URL("https://slack.com/api/reactions.remove"); 4 5const headerParameters = { 6 Authorization: "Bearer {{TOKEN}}", 7 "Content-Type": "application/json; charset=UTF-8", 8}; 9 10const bodyParameters = JSON.stringify({ 11 name: "eyes", 12 channel: "{{CHANNEL_ID}}", 13 timestamp: "{{TS}}", 14}); 15 16const options = { 17 method: "POST", 18 headers: headerParameters, 19 body: bodyParameters, 20}; 21 22async function removeReaction() { 23 try { 24 const response = await fetch(url, options); 25 printResponse(response); 26 } catch (error) { 27 printError(error); 28 } 29} 30 31removeReaction();

让我们分析代码中的高亮部分:

  • 第 10–14 行:设置请求参数,包括反应名称、频道 ID 和消息时间戳,用于移除特定反应。
  • 第 24 行:调用 reactions.remove 端点。

响应字段

该端点的响应同样只包含一个 ok 字段,表示请求是否成功。

用户

列出和获取反应