使用WebHook和Ansible Slack在Slack消息中提及具有多单词显示名称或用户ID的人

使用WebHook和Ansible Slack在Slack消息中提及具有多单词显示名称或用户ID的人,ansible,webhooks,slack-api,Ansible,Webhooks,Slack Api,我正在使用Ansibleslack模块发送通知,其中包括对应呈报人员的@notices。我在使用多单词显示名称时遇到了问题,尽管单单词显示名称可以正常工作 例如: ok: [localhost] => { "msg": "message: `SANDPIT` started ELMS and LACM MapGuide\nFYI <@alice> <@bob>" } 如前所述,Slack也不购买这些用户ID 下面是向Slack发送消息的Ansible任务。

我正在使用Ansible
slack
模块发送通知,其中包括对应呈报人员的@notices。我在使用多单词显示名称时遇到了问题,尽管单单词显示名称可以正常工作

例如:

ok: [localhost] => {
    "msg": "message: `SANDPIT` started ELMS and LACM MapGuide\nFYI <@alice> <@bob>"
}
如前所述,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插件msg属性的定义,所有尖括号和符号都需要使用HTML符号转义:

要发送的消息。请注意,模块不处理转义 人物。应使用纯文本尖括号和符号 发送前已转换为HTML实体(例如&到&)。看见 Slack的文档() 更多

所以你想试试这样的东西:

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

如Slack memo所述,不再推荐链接用户名,并将在2017年9月完全停止工作。所以你想让你的应用程序与用户ID一起工作,顺便说一句,通常效果很好。我不想逃避尖括号,因为当你逃避它们时,它们不起作用——它们变成了Slack输出的文本。这里,它们是用来识别@提及的特殊字符。当我逃离它们时,松弛通道上出现
FYI@U830369DK@U6M9NQD1T
。如果不进行转义,我将获得更好的结果而不进行转义:
FYI
。但是Slack仍然没有正确解释用户ID,因为这些用户ID被尖括号包围,不可单击,也不突出显示。收件人没有被告知他们有个人信息。我的回答是基于Ansible提供的文档。显然,这并不准确。您可以尝试使用未转义的括号,并将属性
link\u names
设置为1。如果这也不起作用,那么我建议在
- 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
TASK [slack : debug] 
***********************************************************
ok: [localhost] => {
    "msg": "message: `SANDPIT` started ELMS and LACM MapGuide\nFYI &lt;@U12345DK&gt; &lt;@U12345TT&gt;"
}