【问题标题】:TFS 2015 Web Hook to Slack IntegrationTFS 2015 Web 挂钩到 Slack 集成
【发布时间】:2018-06-26 19:47:20
【问题描述】:
我有一个需求,
当在 TFS 2015(而不是 vsts)中创建工作项(并且状态 - 说正在进行中)时,我希望我的网络挂钩触发一个 post 方法,该方法将在 Slack 中创建一个频道,并邀请少数人。
2) 一旦 Bug 关闭 - 读取频道的所有历史并将历史推送回 Bug。
我能够使用 TFS 服务器端插件实现相同的功能,并且它正在工作,但需求已更改为 Web 挂钩。
有人可以帮助我了解如何实现自定义网络钩子。请允许从 TFS WI 到 Slack 的事件?
谢谢,
【问题讨论】:
标签:
c#
tfs-2015
slack-api
tfs-workitem
asp.net-webhooks
【解决方案1】:
您不能以编程方式在 slack 中创建新的传入 webhook,但您可以将任何现有的传入 webhook 用于新通道。
只需将消息中的频道属性添加到 webhook。
来自 Slack 文档的示例:
curl -X POST \
--data-urlencode 'payload={"text": "This is posted to #general and comes from *monkey-bot*.", "channel": "#general", "link_names": 1, "username": "monkey-bot", "icon_emoji": ":monkey_face:"}' \
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
因此,为了实现您的要求,我建议您创建一个新频道并根据需要通过 Slack Web API 邀请用户。然后使用现有的传入 webhook 将消息发送到该通道。
【解决方案2】:
TFS 具有默认的 slack 服务挂钩,可以将消息发布到频道。 API 如下所示:
POST http://tfsserver:8080/tfs/DefaultCollection/_apis/hooks/subscriptions?api-version=3.2
Content-Type: application/json
{
"consumerActionId":"postMessageToChannel",
"consumerId":"slack",
"consumerInputs":{
"url":"https://hooks.slack.com/services/xxxxxx"},
"eventType":"workitem.created",
"publisherId":"tfs",
"publisherInputs":{
"areaPath":"",
"workItemType":"",
"projectId":"77e3c775-dc30-4354-xxxx-xxxxxxxxxxxx"}
}
对于第二个需求,你需要检查 Slack Api 以了解如何读取频道的所有历史记录,并使用 Update work items 更新 Bug 工作项。