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

时间:2018-02-07 02:53:29

标签: ansible webhooks slack-api

我使用Ansible ProjectD模块发送通知,其中包括针对须予通知的人的@mentions。我的多字显示名称有问题,但单字显示名称可以正常工作。

例如:

projectB

然后slack与爱丽丝和鲍勃一起工作。而他,因为他的Ghengis Khan,当然会选择一个多字显示名称。给出以下消息:

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

<@Genghis Khan>已被识别,ok: [localhost] => { "msg": "message: `SANDPIT` started ELMS and LACM MapGuide\nFYI <@Ghenkis Khan> <@bob>" } 不是

我也按照https://api.slack.com/changelog/2017-09-the-one-about-usernames的建议尝试了用户ID,但他们不能更好地工作,所以我还原了显示名称。但是为了完整性,这里是消息内容的一个示例,其中包含有效的用户ID但结果无效:

@bob

如上所述,Slack也没有购买这些用户ID。

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

<@Ghenkis Khan>

1 个答案:

答案 0 :(得分:-1)

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

  

要发送的消息。请注意,该模块不处理转义   字符。应该是纯文本尖括号和&符号   在发送之前转换为HTML实体(例如&amp; to&amp;)。看到   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;"
}