37

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

4

4 回答 4

4

我一直在寻找相同的东西,但我看到没有人回答,所以这就是我发现的:你不能,你永远也不能。

@channel:频道中的每个人,这是与用户的一种合同,频道内的每个人都应该收到通知。

关键是 Slack 有一套网络礼节,用户必须知道它。@channel 关键字的替代品是@everyone@here,第一个仅适用于“大”频道,第二个仅适用于当前活跃的人。您可以禁用这些关键字的通知。

https://get.slack.help/hc/en-us/articles/202009646-Make-an-announcement

在此处输入图像描述

于 2017-10-28T17:21:50.247 回答
3

我已经有一段时间遇到同样的问题了,手动调整首选项太费时了。我已经编写了一个脚本来为我自动化它。

更深入的解释请访问我的博文:
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 本机 Slack 客户端的 React Web 应用程序:http: //app.slack.com/client
  2. 登录并切换到感兴趣的工作区并等待页面完全加载。
  3. 打开浏览器开发者控制台
  4. 执行以下行:JSON.parse(localStorage.localConfig_v2).teams
  5. 将 Javascript 脚本中的替换为slackTeamId您在第 4 步中的 id。
  6. 将编辑后的 ​​Javascript 脚本复制并粘贴到开发人员控制台中并执行它。该脚本可能需要几分钟才能运行,具体取决于您加入的频道数量。

就是这样!

您现在应该已关闭每个频道@channel@here通知首选项。

slack_user_noti_pref_bulk_update.js 脚本执行

于 2020-09-01T11:04:59.730 回答
0

如果您找不到取消选中“还包括@channel 和@here”的选项,您可能需要先取消频道静音,然后在频道特定选项中取消选中“还包括@channel 和@here”。

我不确定该复选框在通道静音时是否有效,但是通过静音和取消静音来保留设置。

于 2020-08-11T19:28:53.797 回答
-1

您可以使用:您可以选择“通知”>“通知首选项”>“无”。

当用户选择Nothing这意味着用户禁用了所有类型的通知。

在此处输入图像描述

于 2019-05-03T07:53:41.087 回答