Slack:有没有办法禁用所有@channel通知?

41

Slack聊天工具默认发送电子邮件通知,说“你被提到了…”,而实际上是@channel,不是你。我找到的唯一关闭它们的方法是进入每个频道设置。


3
是的,将其默认打开并在每个频道上关闭它真的很烦人。 找到一种默认关闭它并仅在几个频道上打开它的方法会更好(或者完全将其静音对我来说也可以)。 - lamont
我不认为这是可能的,但你可以向Slack支持团队咨询。他们非常专业。 - Erik Kalkoken
4个回答

4
我在寻找同样的内容,发现没有人回答,所以这是我找到的:你不能并且永远都不会能够做到。 @channel:频道里的每个人,这是一种与用户签订的协议,频道内的每个人都应该收到通知。
问题在于Slack有一种网络礼仪,用户需要知道它。@channel关键字的替代方案包括@everyone@here,前者仅适用于“大”的频道,后者仅适用于当前活动的人。您可以禁用这些关键字的通知。 https://get.slack.help/hc/en-us/articles/202009646-Make-an-announcement enter image description here

4
你能否详细说明一下“contract”的含义?或者说这个概念在哪里被规定了? - David Schumann
16
但是如果我将频道静音,不再收到该频道的通知,那么关于这个“合约”呢?我希望这个合约不被打破。 - David Schumann
1
@DavidNathan 如果你在一个频道中,有人引用了你,你会收到通知,我刚试过了。真的,我不明白为什么我的回答会有两个负投票... - Mauro Piccotti
4
我之所以点了踩,是因为这个回答似乎在说你根本无法禁用@channel,这是不正确的。你可以在截图中的菜单中完成它,但如果你在#general设置中,它会显示“@everyone”而不是“@channel”,因为在该频道中它们是相同的。 - tagurit
1
我应该怎样到达你所拍的那个截图的地方? - 2540625
显示剩余4条评论

4

我一直有这个问题,手动调整偏好设置需要花费太多时间。我写了一个脚本来自动化这个过程。

如需更详细的解释,请访问我的博客文章:
https://mobeigi.com/blog/programming/disable-slack-channel-and-here-notification-for-all-channels/

否则,以下是完整的解决方案。

前提条件

首先下载此脚本:
https://gist.github.com/mobeigi/8e5372f1e14e2a302e186d1753f9a649

或从这里复制并粘贴:

// Slack User Notification Preference Bulk Update
// By Mo Beigi

const slackTeamId = "EXAMPLE17";
const localConfigJson = JSON.parse(localStorage.localConfig_v2);
const slackUrl = localConfigJson.teams[slackTeamId].url;
let channel_ids = [];

// client.boot contains list of channel ids user is subscribed to amongst other things
await fetch(slackUrl + "api/client.boot?" +
    "_x_id=noversion-1598950616.732" +
    "&_x_version_ts=noversion" + 
    "&_x_gantry=true", 
  {
    method: 'post',
    credentials: 'include',
    headers: { "Content-type": "application/x-www-form-urlencoded; charset=UTF-8" },
    body: "token=" + localConfigJson.teams[slackTeamId].token + 
        "&only_self_subteams=1" + 
        "&flannel_api_ver=4" + 
        "&include_min_version_bump_check=1" + 
        "&version_ts=1598934919" + 
        "&_x_reason=deferred-data" + 
        "&_x_sonic=true",
  },
)
.then(result => result.json())
.then(result => channel_ids = result.channels);

// iterate channel id list and set notification prefs asynchronously
let fetchPromises = [];
for (i = 0; i < channel_ids.length; ++i) {
    console.log("Setting user notification prefs for channel id: " + channel_ids[i].id + " ...");
    fetchPromises.push(
        fetch(slackUrl + "api/users.prefs.setNotifications?" +
            "_x_id=c189c956-1598949859.880" + 
            "&_x_csid=7dP2GCgBJsY" + 
            "&slack_route=" + localConfigJson.teams[slackTeamId].enterprise_id + ":" + slackTeamId +
            "&_x_version_ts=1598934919" + 
            "&_x_gantry=true", 
            {
                method: 'post',
                credentials: 'include',
                headers: { "Content-type": "application/x-www-form-urlencoded; charset=UTF-8" },
                body: "name=suppress_at_channel" +
                    "&value=true" + 
                    "&channel_id=" + channel_ids[i].id +
                    "&global=false" + 
                    "&sync=false" +
                    "&token=" + localConfigJson.teams[slackTeamId].token +
                    "&_x_reason=prefs-store/setChannelNotificationOverride" +
                    "&_x_mode=online" +
                    "&_x_sonic=true"
            }
        )
        .then(result => result.json())
        .then(console.log("Done (" + channel_ids[i].id + ")"))
    );

    // Generous delay to get around rate limit
    await new Promise(r => setTimeout(r, 250));
}

Promise.all(fetchPromises).then(function() {
    console.log("Successfully set user notification prefs for " + channel_ids.length + " channels.");
});

步骤

  1. 访问React网页应用程序,该应用程序为React native Slack客户端提供支持: http://app.slack.com/client
  2. 登录并切换到感兴趣的工作区,等待页面完全加载。
  3. 打开您浏览器的开发人员控制台
  4. 执行以下行:JSON.parse(localStorage.localConfig_v2).teams
  5. 将Javascript脚本中的slackTeamId替换为Step 4中的您的ID。
  6. 复制并粘贴编辑后的Javascript脚本到开发人员控制台并执行。 根据您加入的频道数量,此脚本可能需要几分钟才能运行。

就是这样!

现在,您应该已经关闭了每个频道的@channel@here通知偏好设置。

slack_user_noti_pref_bulk_update.js script execution


我不得不从第一个请求中删除"&include_min_version_bump_check=1" + "&version_ts=1598934919" +这些行,因为它已经过时了。 - joshwa

2
如果您找不到取消选中“同时包括@channel和@here”的选项,您可能需要先将频道取消静音,然后在频道特定选项中取消选中“同时包括@channel和@here”。
当频道被静音时,我不确定复选框是否会生效,但该设置会通过静音和取消静音而得以保留。

MVP答案。这个用户界面真的很糟糕 - 要禁用@channel的通知,我首先必须启用通知... - StaringFrog

-1
你可以使用以下方法: 你可以选择“通知 > 通知偏好设置 > 无”。 当用户选择“无”时,这意味着用户禁用了所有类型的通知。

enter image description here


桌面通知和Slack显示“提到”的通知图标之间存在差异。这对解决问题没有任何帮助,只是禁用了一般的通知。 - Janne Enberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接