ちょっとした連携機能を作成するとき, Incoming / Outgoing Webhook は非常に便利です.単純な HTTP リクエストを送る / 受け取るだけで済むので,サーバレス化が容易にできます.
私が所属する高専 (高等専門学校) では共通で Microsoft Teams を使用しています.しかし,我らが 高専機構 は Incoming Webhook の使用を許可してません.さらに,カスタムアプリの追加も許可していません.つまり, Bot を作成しても追加することさえ許されないのです.
これは,そんな状況の中で Incoming Webhook を使う方法を共有する記事です.もちろんそれ以外の状況でも使えますが,必要はないでしょう.恐らくこれを読んでためになるのは高専生ぐらいだと思います.そうであってほしいですね.
で,どうやるの?
Power Automate を使います.これは旧称 Microsoft Flow というヤツで,一言でいえば IFTTT の Microsoft 版です.ただ IFTTT よりも Microsoft 製品との連携機能が充実しています.
Flow のトリガとして Incoming Webhook を使うことができ,アクションとして Microsoft Teams へのメッセージ送信ができるので,今回のケースにぴったりです.ということで,こいつに中継させましょう.
もうちょっと詳しく
左のメニューから Create > Instant Flow と進みます.
名前を適当に決め, When an HTTP request is received トリガを選択して Create します.
Webhook に投げる JSON のスキーマを書きます. 仕様 を読んで頑張ってください.そんなに難しくないです.
Next Step から Post a message as the Flow bot to a channel (preview) を追加します.
送信先のチームとチャンネル,送信するメッセージを決めます.メッセージには先ほど入力した JSON スキーマでパースされた値が使えます.今回は中継だけなので {"message": "[ここ]"}
をそのまま使います.
Save すると, HTTP POST URL が発行されます.ここにリクエストを投げるだけです.
実際にリクエストを投げて実行してみます.使うツールはなんでもいいです.HTTP でお喋りできる方は openssl s_client
とかでも大丈夫です.
指定したチャンネルにメッセージが投稿されていれば,成功です.お疲れ様でした!
おわりに
Incoming Webhook を無効化している理由は分かりませんが,こうした連携機能の実装は Web API を使うための学習の一環となると思いますし,効率化を図るためのツール作成ができるなど幅が広がると思っています.情報工学を学ぶ学生が多い高専であればなおさらでしょう.高専機構さんは他にも多くの機能の利用を許可していませんが,その規制が必要かどうかもう一度改めていただきたいなと思います.しがない高専生からのお願いでした.