【问题标题】:Mentioning people with multi-word display names or user ids in a Slack Message using a WebHook and Ansible Slack使用 WebHook 和 Ansible Slack 在 Slack 消息中提及具有多字显示名称或用户 ID 的人
【发布时间】:2018-02-07 02:53:28
【问题描述】:

我正在使用 Ansible slack 模块发送通知,其中包括用于通知人员的 @提及。我在使用多字显示名称时遇到问题,但单字显示名称可以正常工作。

例如:

ok: [localhost] => {
    "msg": "message: `SANDPIT` started ELMS and LACM MapGuide\nFYI <@alice> <@bob>"
}

但随后&lt;@Genghis Khan&gt; 与 Alice 和 Bob 一起工作。而他,因为是成吉思汗,自然选择了多字显示名。给出以下消息:

ok: [localhost] => {
    "msg": "message: `SANDPIT` started ELMS and LACM MapGuide\nFYI <@Ghenkis Khan> <@bob>"
}

@bob 被识别,&lt;@Ghenkis Khan&gt; 不被识别。

我也尝试了https://api.slack.com/changelog/2017-09-the-one-about-usernames 推荐的用户 ID,但它们的效果并没有更好,所以我已恢复为显示名称。但为了完整起见,这里是消息内容的示例,具有有效的用户 ID,但结果无效:

TASK [slack : debug] 
***********************************************************
ok: [localhost] => {
    "msg": "message: `SANDPIT` started ELMS and LACM MapGuide\nFYI <@U12345DK> <@U12345TT>"
}

如前所述,Slack 也不购买这些用户 ID。

这是向 Slack 发送消息的 Ansible 任务。所有令牌等都按预期工作,这一切都发生在同一个工作区中。

- name: Send message via Slack
  slack:
    token: 'valid token'
    color: 'valid color'
    msg: '{{ message }}'
    link_names: 1
  # problems with notifications should not fail the pipeline
  ignore_errors: yes

【问题讨论】:

  • 正如 Slack 备忘录中提到的,不再推荐链接用户名,并将在 2017 年 9 月完全停止工作。因此,您希望专注于让您的应用程序使用用户 ID,顺便说一句。通常效果很好。

标签: ansible webhooks slack-api


【解决方案1】:

根据 slack 插件的 msg 属性的official documentation,所有尖括号和 & 符号都需要使用 HTML 符号进行转义:

要发送的消息。请注意,该模块不处理转义 人物。纯文本尖括号和 & 符号应该是 在发送之前转换为 HTML 实体(例如 & 到 &)。看 Slack 的文档 (https://api.slack.com/docs/message-formatting) 了解更多。

所以你想尝试这样的事情:

TASK [slack : debug] 
***********************************************************
ok: [localhost] => {
    "msg": "message: `SANDPIT` started ELMS and LACM MapGuide\nFYI &lt;@U12345DK&gt; &lt;@U12345TT&gt;"
}

【讨论】:

  • 我不想转义尖括号,因为当你转义它们时,它们不会做他们的工作——它们成为 Slack 输出的文字文本。在这里,它们是用于标识 @ 的特殊字符提到。当我逃离它们时,我会在 Slack 频道上看到 FYI &amp;lt;@U830369DK&amp;gt; &amp;lt;@U6M9NQD1T&amp;gt;。如果不转义,我会在不转义的情况下得到更好的结果:FYI &lt;@U830369DK&gt; &lt;@U6M9NQD1T&gt;。但是 Slack 仍然没有正确解释用户 ID,因为这些用户 ID 被尖括号包围,不可点击且未突出显示。收件人不会被告知他们有个人消息。
  • 嗯,我的回答是基于 Ansible 的可用文档。显然,这是不准确的。您可以尝试使用未转义的括号并将属性link_names 设置为1。如果这也不起作用,那么我建议打开并在github.com/ansible/ansible/issues 发出问题
猜你喜欢
  • 2018-05-09
  • 1970-01-01
  • 2023-03-15
  • 2016-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-16
相关资源
最近更新 更多