見出し画像

Node.jsからTeamsのIncoming Webhookに通知してみた

ごきげんよう。パーソルホールディングス株式会社 グループデジタル変革推進本部エンゲージメントプロダクト開発部 鈴木です。

今回は、Node.jsからTeamsのIncoming Webhook宛にメッセージを送信する方法について、備忘を兼ねて記載したいと思います。

※TeamsのIncoming WebhookのURL発行手順は こちら をご参照ください。

<前提条件>

  • Node.jsのバージョン 16.15.0

  • npmのバージョン 8.5.5

<ライブラリのインストール>
今回はTeamsのIncoming Webhookに対してリクエストを送信するために axios を使います。

$ npm install axios 

<基本的なメッセージの送信>
コード

const axios = require('axios');
 
 
const webhookUrl = '<ここに発行したIncoming WebhookのURL>';
 
const params = {
text: 'Node.jsからメッセージが送信されました。'
};
 
axios.post(webhookUrl, params)
.then(() => {
console.log("送信完了");
})
.catch((error) => {
console.log(error);
});

<結果>

<アダプティブカードを送信>
単純なテキストの送信のほかに、アダプティブカードという形式でメッセージを送信することが出来ます。アダプティブカード形式では、より凝ったデザインのメッセージを送信することが出来ます。Microsoftからアダプティブカードを作成するためのツールが公開されているため、 https://adaptivecards.io/designer/ を参考にすると良いかもしれません。
今回は画像と大きめのテキスト、タイトル要素を追加したカードを送信してみます。

コード

const axios = require("axios");

const webhookUrl = '<ここに発行したIncoming WebhookのURL>';

const adaptiveCard = {
  type: "AdaptiveCard",
  body: [
    {
      type: "TextBlock",
      size: "Medium",
      weight: "Bolder",
      text: "タイトルタイトルタイトル",
    },
    {
      type: "ColumnSet",
      columns: [
        {
          type: "Column",
          width: "stretch",
          items: [
            {
              type: "Container",
              items: [
                {
                  type: "ColumnSet",
                  columns: [
                    {
                      type: "Column",
                      width: "auto",
                      items: [
                        {
                          type: "ImageSet",
                          images: [
                            {
                              type: "Image",
                              size: "Medium",
                              url: "https://www.belltree.tokyo/image/cat1451383840605.png",
                            },
                          ],
                        },
                      ],
                    },
                    {
                      type: "Column",
                      width: 50,
                      items: [
                        {
                          type: "TextBlock",
                          text: "New TextBlock",
                          wrap: true,
                          size: "ExtraLarge",
                        },
                      ],
                    },
                  ],
                },
              ],
            },
          ],
        },
      ],
    },
  ],
  $schema: "http://adaptivecards.io/schemas/adaptive-card.json",
  version: "1.5",
};

const params = {
  type: "message",
  attachments: [
    {
      contentType: "application/vnd.microsoft.card.adaptive",
      content: adaptiveCard,
    }
  ],
};

axios
  .post(webhookUrl, params)
  .then(() => {
    console.log("送信完了");
  })
  .catch((error) => {
    console.log(error);
  });

<結果>

<まとめ>
Node.jsからTeamsにメッセージの送信を確認することができました。
個人的にはSlackの方が好きだったりしますが、それはそれとして、Teamsに何かしらのメッセージを送信したい場合には便利な機能かもしれません。
ご清覧ありがとうございました。

※所属組織や業務内容は2023年2月時点のものです。

パーソルホールディングスは、グループビジョン「はたらいて、笑おう。」の実現に向け、グループ経営をともにリードする仲間を募集しています。
中途採用の詳細はこちら⇒募集職種一覧
パーソルホールディングス採用サイトはこちら