社内で利用しているロボットで、メールではなくTeamsで通知させたいことがありましたので、試してみました。
せっかくなのでどのように実装したのか簡単に記事にします。
通知方法
通知にあたっては、Teamsに用意されているIncoming Webhookを利用することにしました。
また、ロボットから通知させる際のアクションは[コマンドライン実行(Execute Command Line)]を利用し、curlコマンドを実行しています。
API関連でよく使う[Rest Webサービス呼出]ではないです。
Incoming Webhookやcurlコマンドについてはこちらの記事を参考にしました。
参考記事:Microsoft TeamsのWebhookによる通知
https://qiita.com/SDN/items/3754ae1e8960df01cc11
この場を借りて筆者の方に感謝します。
なお、参考記事では、bashを利用していたようなのでLinuxかUnix前提だと思いますが、Windowsでもcurlコマンドは使えます。
Windws10からは標準搭載されるようになったらしいです。
Windowsのはオリジナルとは完全に同じものではないっぽいですが、詳しくないのでここではあれこれ言いません。
使いこなせると便利だとは思います。
事前準備
事前準備は先ほどの記事の通り、Teams上の任意のチーム上でコネクタの設定をし、Webフックができるようにします。
また、ロボットで打つコマンドやメッセージ内容を設定用のファイルに記載しておくと後で楽かと思います。
URLについては、これが分かると誰でもメッセージが送信できてしまうので、なるべくMCのパスワードストアに記録するようにした方がセキュリティ上良いと思います。
今回は以下のように、<メッセージ>と<URL>部分をロボット内で変数値と置換できるようにしています。
curl -H "Content-Type: application/json" -d "{\"text\": \"<メッセージ>\"}" <URL>
実装
ロボットで実装していきます。
事前に定義していた設定ファイルを読み込み、各値を変数に読み込みます。
その後、コマンド実行するためのコマンド内容を作成するため、
[変数の割当]ステップで各値を置換します。
コンバータの[パターンを置き換え]で置換すべき文字列を指定して置き換えていきます。
あらかじめ、置換用の文字列も定数としてタイプの初期値に記録しておくと便利です。
こうすると、やっぱり文字列変えたい、となったときも、ステップ内で直接記載していないのであちこちステップの設定をひとつひとつ探す必要がありません。
そして、作成できたコマンドをコマンド実行用の変数として割り当て、コマンドライン実行で利用します。
そして、こちらを実行すると、Teamsにメッセージが送信されます。
まとめ
事前準備さえできてしまえば、それほど多くの手順は必要ありません。
メールでの通知もいいですが、メールだと埋もれてしまうとか、エラーの発生と概要だけでもTeamsで確認できるようにしたいとか、そういうニーズもあるかもしれません。
また、以前私が作成した以下の方法でエラー内容を抽出し、その内容をインシデント対応のためのチームに送信し、インシデント対応を行うのもありかもしれません。
(BizRobo)MC上でスケジュール実行したロボットエラー情報をログデータベースから抽出する方法
https://qiita.com/YG_10_04/items/eb4c652c1ec2b7540cf8
例えば、DBからエラー内容を抽出し、それをkintoneに転記してインシデント対応記録を起票し、
エラー概要とkintoneの起票No、URLを記載してTeams通知、というような使い方もできると思います。
これは以前、Slack通知でもそういうことをしているというのは上記記事にも書いた通りですが、Teamsでも似たようなことはできます。
皆さまもよろしければお試しあれ