よわよわ情シスが、API連携に挑戦してみた
この記事は「Microsoft Power Automate Advent Calendar 2022」カレンダー2 12/20分の記事です。
近年、「DXにはAPIが重要」「新しいSaaSを入れる場合にはAPI連携ができるものを選ぼう」などと言われることが多くなってきたように感じます。
私も情シスの端くれとして「API連携」は避けては通れない道!
というわけで、普段使っているPower Automateを使ってWeb API連携に挑戦してみました。
テーマ決め
さて、弊社では以前から入退社情報の連絡漏れや連絡遅れが課題になっていました。
ちょうど某人事系Saasが導入されたタイミングだった為、下記テーマで
挑戦してみることにしました。
『人事システムで従業員情報が更新された際に、Teamsに自動通知させよう!』
尚、上記システムにはデフォルトでTeamsに通知を送る機能(通知連携機能)がありますが、今回は「Webhook」機能を使っていきます。
(トリガーが異なるため)
全体像
①Teams側の設定
Teamsに通知を投稿するためのチームを作成し、必要なメンバーを招待する。
②Power Automateのフロー作成(項目確認用)
1.インスタントクラウドフローを選択し、[HTTP要求の受信時]トリガーを選択して[作成]をクリックする。
2.[HTTP要求の受信時]トリガーの[サンプルのペイロードを使用してスキーマを生成する]をクリック。
3.人事システムのAPI仕様書の[PAYLOAD SAMPLE]をコピーして貼り付ける。
4.[応答]アクションを追加する。
「状態コード」は「200」。
(人事システムで200番台での応答が求められているため)
5.フローの保存をすると、[HTTP要求の受信時]トリガーの[HTTP POSTのURL]が表示されるのでコピーしておく。
③人事システム側の設定
人事システム側の設定は、下記ヘルプを参照。
[URL]欄には、上記でコピーしておいた[HTTP POSTのURL]を入力する。
④テスト実行をする
一度テスト実行を行い、実行履歴から[HTTP要求の受信時]の[出力]の[未加工出力の表示]を確認し、必要な項目を抽出する。
例えば、↓のような感じで抽出。
(各カッコ内の一番下の項目は「,」不要ですので注意してください。私は嵌った。)
{
"event": "crew_updated",
"sender": {
"business_last_name": "更新者姓",
"business_first_name": "更新者名"
},
"triggered_at": "2022-12-19T20:28:03+09:00",
"crew": {
"employment_type": {
"name": "正社員"
},
"emp_status": "employed",
"emp_code": "00009",
"business_last_name": "てすと",
"business_first_name": "てすと",
"birth_at": "2000-01-01",
"gender": "male",
"department": "部署名",
"position": "部長",
"entered_at": "2021-09-01"
}
}
⑤Power Automateのフロー修正
1.先ほど作成したフローの[HTTP要求の受信時]トリガーを修正します。
[サンプルのペイロードを使用してスキーマを生成する]をクリックして、抽出した項目を貼り付け、内容を修正する。
2.[チャットまたはチャネルでメッセージを投稿する]アクションを追加し、投稿するメッセージを作成する。(動的な値を使用)
⑥できあがり
実は今回のフロー使ってません
たったこれだけのフローですが、知識ゼロからのスタートだった為、構想から10ヶ月、完成まで3ヶ月以上かかってしまいました。
苦労して作成したフローですが、実際には使用していません。
なぜなら、この方法は「誰の情報」が「いつ」更新されたかは分かるのですが、「何の情報」が更新されたかは分からなかったためです。
(入退社情報以外の修正があった場合にも通知が飛んでしまい、どの情報が更新されたのか情報が取れない。)
というわけで、あくまで勉強のためのフロー作成となってしまいましたが、他でも活用できる場面があると思うので、次のチャンスを狙います。
追記
この記事を書いてる最中に、りなたむさんの素敵な記事を見つけてしまいました。
もっと早く見つけていれば、こんなに苦労することもなかったはず。ザンネン(๑•́ ₃ •̀๑)