TFS 2015 Web Hook для слабой интеграции
У меня есть требование,
Когда в TFS 2015(а не vsts) создается рабочий элемент (и статус -процесс находится в процессе), я хочу, чтобы мой веб-хук запустил метод post, который создаст канал в Slack, и пригласит немного людей.
2) После того, как ошибка закрыта - прочитайте всю историю канала и верните историю обратно в ошибку.
Я смог добиться того же с помощью плагина TFS на стороне сервера, и он работает, но требования были изменены на веб-хуки.
Может ли кто-нибудь помочь мне в том, как добиться настраиваемого веб-перехвата, который разрешит события из TFS WI в Slack, пожалуйста?
Спасибо,
2 ответа
Вы не можете создавать новые входящие веб-заезды программно, но вы можете использовать любые существующие входящие веб-зацепки для нового канала.
Просто добавьте свойство канала в своем сообщении в 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
Поэтому для реализации вашего требования я предлагаю вам создать новый канал и приглашать пользователей по мере необходимости через веб-API Slack. А затем используйте существующий входящий веб-крючок для отправки сообщений на этот канал.
По умолчанию в TFS есть сервисный хак, который может публиковать сообщения на канале. 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, чтобы увидеть, как читать всю историю канала, и использовать Обновить рабочие элементы для обновления рабочих элементов Bug.