В моем предыдущем посте:
Пользовательский опыт: как разработать железнодорожную станцию … НЕТ!
Игорь Бертник ・ 28 января 20 ・ 4 мин прочитал
Azure DevOps Service Hooks
Давайте представим ситуацию, когда вы хотите получить уведомление о новых пользовательских историях, вытягивают запросы или построить завершение ваших любимых средств командного общения, таких как Slack или Microsoft Teams. Или вы хотите запустить какой -то рабочий процесс на основе события Azure DevOps. Ну, вы можете! Сервисные крючки позволяют выполнять задачи на других услугах, когда события происходят в ваших проектах Azure DevOps. Концепция Service Hooks основана на модели Pub/Sub, где продюсер публикует события по теме, а потребитель подписывает и обрабатывает эти события. Если вы откроете меню Azure DevOps/Settings/Service Hooks, вы увидите, что есть много предопределенных точек интеграции, включая Дженкинса, Трелло и других. Существует также крючок к отличному инструменту автоматизации рабочего процесса Zapier Анкет Это позволяет легко интегрировать различные услуги и API, и я настоятельно рекомендую их, хотя это предмет для другого поста. Удивительно, но нет предопределенной интеграции с собственной Microsoft Microsoft Power Automate (ранее Microsoft Flow).
Azure DevOps Web Hooks
Так что же делать, если вашего любимого сервиса не в списке? Что если мы хотим отправить сообщение в Google Chat? Не бойтесь, веб -крючки на помощь! Веб -крючки предоставляют способ отправить представление о событии JSON в любую публичную конечную точку (http или https). И это открывает множество возможностей. Давайте создадим один. Когда мы выбираем опцию Web Hook, мы также можем выбрать триггер событий. Здесь у нас есть все виды триггеров, связанных с запросами на привлечение, сборки, рабочих предметов и т. Д. В целях этого поста давайте выберем вариант «Рабочий элемент, прокомментированный», который запускает событие для каждого нового комментария, размещенного в истории пользователя или задаче. Затем нам нужно предоставить URL нашей общедоступной конечной точки. У нас также есть несколько вариантов для аутентификации. И мы можем в некоторой степени настроить уровень деталей, пройденных в этом мероприятии. Я покажу вам позже в этом посте, как настроить конечную точку. Давайте притворимся, что у нас уже есть это на этом этапе, и введем форму. Существует удобная кнопка «Тест», которая отправляет максимальное событие на настроенный URL -адрес и позволяет вам увидеть формат сообщения JSON, который мы будем использовать позже, чтобы преобразовать его в формат, который Google Chat может понять. Большой! Мы закончили конфигурацию Azure DevOps. Теперь в чате Google Hangouts.
Google Chat Webhooks
Входящие веб -крючки позволяют отправлять асинхронные сообщения в чат Hangouts из приложений, и они довольно просты в настройке. Давайте создадим новую комнату «DevOps» и в меню участников выберите «Настройка WebHooks» добавить новый WebHook. Мы также можем настроить пользовательское изображение бота. После того, как мы закончили с дополнением, выделенный URL -адрес назначен в WebHook. Пожалуйста, запомните об этом, так как это нам понадобится через мгновение. Давайте перейдем к последнему шагу и связываем все это вместе.
Функция Azure
Итак, теперь мы настроили как Azure DevOps Service Hook, так и Webhook Google в чате Но они все еще не разговаривают друг с другом. Devops отправляет сообщение JSON в формате, который чат не может понять. Нам нужен способ преобразовать сообщение, связавшись с этими двумя службами вместе. Есть много вариантов для этого. Мы могли бы использовать Zapier, упомянутый выше. Azure Logic Apps имеет интеграцию с Google Chat из коробки. Но зачем использовать готовое решение, когда мы можем разработать свое собственное, верно? Одним из вариантов является функция Azure. Это просто, дешево, может быть закреплено на функции или уровне хоста, а также поддерживать язык JavaScript, среди прочего. Я не скажу вам здесь, как создать функцию, так как есть много учебных пособий, которые идут на мучительный уровень деталей, Например, здесь Анкет На скриншоте ниже я создал функцию «workitemupdate» с помощью HTTP -триггера. Код для функции ниже:
const https = require('https'); module.exports = function (context, req) { context.log('JavaScript HTTP trigger function processed a request.'); if (req.body && req.body.message && req.body.message.text) { context.res = { status: 200, body: 'OK' }; const data = JSON.stringify({ text: req.body.message.text }) const options = { hostname: 'chat.googleapis.com', port: 443, path: '/v1/spaces//messages?key= &token= ', method: 'POST', headers: { 'Content-Type': 'application/json', 'Content-Length': data.length } } const botReq = https.request(options, (res) => { context.log(`statusCode: ${res.statusCode}`) res.on('data', (d) => { context.log(d) }) res.on('end', () => { context.done() }); context.done() }) botReq.on('error', (error) => { context.log(error) context.res = { status: 500, body: 'error' }; context.done() }) botReq.write(data) botReq.end() //context.done() } else { context.res = { status: 400, body: "Please pass a JSON body.message.text" }; context.done(); } };
Пожалуйста, обратите внимание, что параметр «Путь» в коде — это URL, который мы получили от Google Chat Webhook. Целью кода является преобразование JSON, полученное из события DevOps в формат {» Text ‘:’ Custom Message ‘}, принятый чатом, и отправить его в WebHook чата.
На портале Azure мы снова видим удобный раздел «Тест», где мы можем проверить нашу функцию изолированно. Мы также можем увидеть ссылку «получить функции URL». Скопируйте, нам это нужно сейчас! Помните, что мы заглядывали на конфигурацию URL для сервисного обслуживания Azure DevOps Hook выше? Что URL, в который нам нужно войти там.
Наконец, вся конфигурация сделана. Давайте введем новый комментарий в пользовательской истории, и через секунду он появится как новое сообщение в нашей комнате чата Google:
Вывод
Мы видели, что Azure DevOps могут быть интегрированы с рядом сервисов и смогли создать пользовательскую интеграцию с чатом Google Hangouts с использованием функции Azure. Я надеюсь, что это было полезно, здесь как кошка (и собака) для вас в качестве доказательства того, что разные виды и услуги могут жить мирно друг с другом.
Оригинал: «https://dev.to/ib1/azure-devops-integration-with-google-hangouts-chat-3imn»