You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Slack API触发自定义表情使用时的事件?

如何在Slack应用中监听自定义表情触发事件

要实现监听自定义表情(比如:custom_coffee:)并触发后端操作,你需要利用Slack的消息监听事件,结合后端解析逻辑来完成,具体步骤如下:

1. 配置Slack应用的事件订阅

  • 打开Slack应用管理后台,进入Event Subscriptions页面,开启事件订阅功能。
  • 设置你的后端服务地址作为请求URL,确保服务能返回200 OK完成Slack的验证。
  • 在Bot User Events下添加需要监听的消息事件,根据需求选择:
    • message.channels:监听公开频道消息
    • message.groups:监听私有群组消息
    • message.im:监听一对一私聊消息
    • message.mpim:监听多人私聊消息
  • 保存设置后,重新安装应用到Slack工作区,确保权限生效。

2. 解析消息中的表情

Slack推送的消息事件payload里,用户发送的内容会存放在text字段,自定义表情会以:custom_coffee:这样的短代码形式存在;如果是用Block Kit构造的消息,还要同步检查blocks字段里的文本内容。

后端接收到事件后,直接校验消息内容是否包含目标表情的短代码即可。

3. 过滤无关事件

Slack会推送系统消息(比如用户加入频道通知)或机器人自身发送的消息,需要过滤这些无关内容:

  • 通过subtype字段判断:只有subtype为空或不存在的消息是用户主动发送的内容。
  • 通过bot_id字段判断:如果存在该字段,说明是机器人发送的消息,直接跳过。

4. 示例代码(Node.js + Bolt框架)

const { App } = require('@slack/bolt');

const app = new App({
  token: process.env.SLACK_BOT_TOKEN,
  signingSecret: process.env.SLACK_SIGNING_SECRET
});

// 监听所有类型的用户消息
app.message(async ({ message }) => {
  // 过滤系统消息和机器人消息
  if (message.subtype || message.bot_id) return;

  // 检查是否包含目标自定义表情
  if (message.text?.includes(':custom_coffee:')) {
    // 执行你的后端逻辑:记录日志、触发业务操作等
    console.log(`用户${message.user}在${message.channel}发送了自定义咖啡表情`);
    // 可选:回复消息
    // await say('感谢你的咖啡招待!');
  }
});

(async () => {
  await app.start(process.env.PORT || 3000);
  console.log('Slack应用已启动');
})();

5. 关键注意事项

  • 权限配置:确保你的Bot拥有对应的历史消息权限,比如channels:history、groups:history等,需要在OAuth & Permissions页面添加这些权限后重新安装应用。
  • 表情匹配准确性:自定义表情的短代码要和工作区中设置的完全一致,注意大小写和特殊字符。
  • 原生emoji兼容:如果要监听原生emoji(比如☕️),可以直接检查message.text中是否包含该emoji字符,或者对应的官方短代码:coffee:。

内容的提问来源于stack exchange,提问作者M.K. Kim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 03:36:20