如何用WorkBuddy连接Slack
必须配置SCIM用户目录才能让Slack与WorkBuddy真正打通——具体来说,就是在identity_providers中添加type: "slack",并给出精确的user_mapping路径。任务中assign_to字段必须用Slack用户ID,而不是昵称或邮箱。验证时,通过debug日志确认SCIM查询URL和响应内容,就能确保一切正常。

要让WorkBuddy与Slack顺利对接,实现任务自动分配、消息同步和用户身份精准识别,关键在于绕过默认的邮箱字符串匹配陷阱,直接对接Slack的SCIM用户目录。下面一步步拆解。
配置identity_providers启用Slack类型
进入WorkBuddy管理后台的「系统配置」→「身份提供者」页面,在配置块中添加或修改identity_providers字段。插入以下YAML片段,注意缩进必须为两个空格:
identity_providers:
- type: "slack"
user_mapping: "https://api.slack.com/scim/v1/Users"
【user_mapping路径必须精确到/v1/Users结尾,少一个字符或写成/v1/users都会导致404】
保存后,WorkBuddy会尝试向该URL发起预检请求。如果返回HTTP 200且响应体包含{"Resources":[]},说明SCIM连接已就绪。
在任务YAML中正确填写assign_to
方法一:使用Slack用户ID(推荐)
在定义自动化任务的YAML文件中,将assign_to字段写成:
assign_to: { provider: "slack", id: "U012AB3CD" }
这个U012AB3CD必须从Slack Admin Portal → Users页面点击目标用户→查看Profile URL末尾提取,不能用@昵称或邮箱。
方法二:通过Slack API批量查ID(调试用)
调用GET https://slack.com/api/users.list?token=xoxp-xxx&limit=200,遍历response中的members[].id与members[].profile.email映射关系,手动建立内部ID表。
如果误填assign_to: "@alice",WorkBuddy会按字符串去匹配数据库email字段,触发UserNotFoundError且不报具体原因——这个坑很隐蔽,值得提前注意。
验证Slack用户识别是否生效
第一步:在任务YAML中临时加入debug: true
第二步:触发该任务执行
第三步:查看WorkBuddy日志输出,定位包含SCIM query URL的日志行
第四步:确认URL中query参数为filter=userName+eq+%22alice%40company.com%22,且响应体Resources数组长度为1
如果URL里出现filter=email+eq或返回空数组,说明identity_providers配置未生效或user_mapping路径错误。这时候回过头检查缩进和路径大小写,通常就能解决问题。