はじめに
本記事では、Slack上の特定のチャネルへの投稿をトリガーにしてPower Automateフローを実行する方法をご紹介します。
前提事項
・Power Autoamte上のSlackコネクタには、Slackの投稿を検知してフローを開始するようなトリガーは存在しない
・本記事で紹介するフローには「HTTP 要求の受信時」トリガーが含まれているため、Power Automate Premiumライセンスが必要である
活用事例
・Slackに投稿された情報を、Teamsにもリアルタイムで通知する(アラート情報の展開 等)
・Slackにフロー実行用チャネルを作成し、該当チャネルにチャット投稿をすることでPower Automateの画面以外からフローを遠隔実行する
実装方法
Slack上の特定のチャネルへの投稿をトリガーにしてPower Automateフローを実行し、かつ投稿内容をTeamsに連携する処理を実装してみます。
■ Slack上のアプリ設定
1.Slackのアプリ管理画面に移動
2.「ビルド」 > 「Create New App」をクリック
3.「From scratch」をクリック
4.任意のアプリ名・アプリを構築するワークスペースを指定
5.「OAuth & Permissions」に移動
6.「Scopes」 > 「Bot Token Scopes」に「channels:history」をスコープとして指定
※トリガー対象となるチャネルがパブリックの場合は「channels:history」を指定
※トリガー対象となるチャネルがプライベートの場合は「groups:history」を指定
7.ワークスペースにアプリをインストール
8.「Event Subscriptions」 > 「Enable Events」を「On」に変更
■ SlackアプリとPower Automate間のチャレンジパラメーター検証
※ SlackからPower Automateのフローを実行するには、Slack側からサーバー(=Power Automate)にHTTPリクエストを送信しますが、その前段階として、Slack側がサーバーの正当性を確認しておく必要があります。正当性を確認するためには、Slackがチャレンジパラメータを含むHTTPリクエストをサーバーに送信し、サーバー側は同一のチャレンジパラメータをSlackに返す必要があります。この検証が成功して初めてフローが実行できるようになります。
9.Power Automate > 「HTTP 要求の受信時」トリガーを以下の通り設定
・メソッド:POST
・メソッド:application/json
10.「JSON の解析」アクションを以下の通り設定
・Content:「HTTP 要求の受信時」トリガーから生成される「本文」
・「サンプル ペイロードを使用してスキーマを生成する」 :Slack公式サイトで公開されているサンプルJSON
{
"token": "Jhj5dZrVaK7ZwHHjRyZWjbDl",
"challenge": "3eZbrw1aBm2rZgRNFdxV2595E9CY3gmdALWMmHkvFXO7tYXAYM8P",
"type": "url_verification"
}
参考:
11.Slackから受信したものと同一のチャレンジパラメータを返すよう「応答」アクションを設定
・本文:
{
"challenge": 「JSON の解析」アクションから生成される「Body challenge」
}
12.フローを保存後、「HTTP 要求の受信時」トリガーの「HTTP URL」をコピー
13.Slack > 「Event Subscriptions」 > 「Enable Events」 > 「Request URL」にコピーしたURLをペースト
・ペーストするとPower Automateフローが実行されます。
・Power Automateから正常にチャレンジパラメータが返されるとステータスが「Verified」に変わります。
・チャレンジパラメータ検証完了後はPower Automateの「応答」アクションは削除して問題ありません。
※本フローの場合、「応答」アクションは、Slackがサーバーの正当性を確認するためにのみ使用しており、実フローでは不要のため
14.「Event Subscriptions」 > 「Subscribe to bot events」 に「message.channels」を追加
※トリガー対象となるチャネルがパブリックの場合は「message.channels」を指定
※トリガー対象となるチャネルがプライベートの場合は「message.groups」を指定
■ フロー実行に向けた設定
15.トリガー対象となるチャネルに作成したアプリを追加
16.トリガー対象チャネルに任意の投稿をおこないフローが実行されることを確認
・正常実行が完了すると投稿内容は「event.text」に格納されます
※[注意]Power Automateの仕様で「HTTP 要求の受信時」トリガーが「manual」に自動で名称変更されています。
17.出力結果をもとに「JSONの解析」アクションのスキーマを更新
18.Teamsへの通知機能を追加
・「JSONの解析」アクションから出力された「Body Text」を選択することで、Slack投稿内容を使用できます。
■ 実行
19.Slackのトリガー対象チャネルに任意の投稿をおこない、TeamsにSlack投稿内容が通知されることを確認
まとめ
いかがでしたでしょうか。
本記事でご紹介した方法を活用することで、Power Automateのライセンスを保有していないユーザーでも間接的にPower Automateフローを実行できるようになります。これにより、さまざまな活用方法が広がり、業務効率化に大いに役立つことでしょう。ぜひ、この組み合わせを活用して、業務自動化の一歩を進めてみてください!
株式会社ITSOでは一緒に働く仲間を募集しています。
私たちは、真のデジタル変革の実現を目指すハイパーオートメーションカンパニーです。
「ITの力で未来の働き方をデザインし、人と企業の価値をリデザインする」ことをミッションに、先進的なハイパーオートメーションの技術を通じて、世界中の個人や組織がより多くの成果を達成できるよう支援しています。