Microsoft Teams에서 사용할 수 있는 QualityForward Bot 만들기

Microsoft Teams은 Microsoft에서 제공하는 채팅 도구입니다. 비즈니스 세계에서 이용이 확산되고 있습니다. 다른 채팅 서비스와 마찬가지로 타사 서비스와 쉽게 협력할 수 있습니다. 이번에는 Microsoft Teams와 연계할 수 있는 QualityForward용 봇을 작성해 보았습니다.

사용하는 API 정보



Microsoft Teams 봇은 5초 이내에 응답을 반환해야 한다는 묶음이 있습니다. 웹 API를 여러 번 두드리면 5초 이내에 응답이 반환되지 않을 수 있으므로 이전에 만든 Google Apps Script에서 실행되는 웹 API를 활용합니다.

QualityForward의 테스트 집계를 반환하는 Slack 명령을 만들어 보았습니다. - Qiita

이 웹 API라면 Google Apps Script를 호출하기만 하면 처리 속도가 빨라집니다. 하지만 Google Apps Script를 리디렉션하는 방식에서는 Microsoft Teams 봇이 제대로 응답을 받지 못했습니다. 따라서 Google Apps Script를 직접 호출하는 대신 Node.js 서버(이번에는 Glitch를 이용)에서 호출하는 방식으로 하고 있습니다.

봇 정보



Microsoft Teams 봇을 쉽게 만들 수 있습니다. 이번에는 Webhook을 이용하고 있습니다. Webhook은 미리 작성한 봇에 메시지를 보내면 지정한 URL에 POST 메소드를 던져줍니다. 응답으로 반환한 JSON을 봇의 답변으로 표시합니다.



코드 정보



Node.js (Express 사용)의 코드는 다음과 같습니다. Google Apps Script에서 만든 API를 실행하고 응답을 반환합니다.
const express = require("express");
const app = express();
// POSTのボディ解析用
app.use(express.json())
app.use(express.urlencoded({ extended: true }));

// HTTPクライアントw追加
const client = require('superagent');

app.use(express.static("public"));
app.get("/", (request, response) => {
  response.sendFile(__dirname + "/views/index.html");
});

// ボットからデータを受け取る処理
app.post("/post", async (request, response) => {
  // メッセージ内にある日付部分を取得
  const date = request.body.text.replace(/^.*?<\/at>(.*)\n.*/s, "$1");
  // Google Apps ScriptのAPIを呼び出し
  const url = `https://script.google.com/macros/s/AKf...IGt/exec?text=${date}`;
  const res = await client.get(url)
  // レスポンスを返す
  response.json({
    "type": "message",
    "text": res.text
  });
});

const listener = app.listen(process.env.PORT, () => {
  console.log("Your app is listening on port " + listener.address().port);
});

이제 봇에 날짜를 보내면 해당 날짜의 처리 건수를 반환합니다.



요약



이번 구조는 자체 서버를 세우지 않고 서버리스로 구축하고 있습니다. Glitch도 Google Apps Script도 안정적이므로 유지 관리가 필요 없으며 작동할 수 있는 메커니즘이 편리합니다. Microsoft Teams에서 정보를 공유하는 프로젝트의 경우 이 메커니즘을 사용해 보세요.

QualityForward

좋은 웹페이지 즐겨찾기