「Slack」×「Azure Logic Apps」を活用した自動投稿BOTの作成手順【2023年6月更新】
はじめに
毎日、私は会社のSlackで個人の作業スレッドを立てて、その日にやること・やったことを記録しています。
最近、AzureのLogic Appsを利用してスレッド投稿を自動化したので作り方を紹介します!
完成イメージ図
Logic Appsによる自動投稿BOTのイメージ図
⭐️ 機能要件
- 平日のみ作業スレッドを立てる
- 投稿日時をスレッドに記載する
※ 祝日に対応はしていません。
🔧 作成方法
■ 1. リソースグループを作成する
リソースグループの作成画面で「基本」タブに設定値を指定します。
設定後、 [確認および作成] > [作成] のボタンを押下します。
項目 | 設定値 |
---|---|
サブスクリプション | 所有しているサブスクを選択します。 |
リソース グループ |
my-slack-workspace-je (任意の名前でも可) |
リージョン |
(Asia Paciffic)Japan East を選択します。 |
他は、デフォルトでOK
リソースグループの作成画面
■ 2. 【オプション】自動投稿BOTのアイコンを用意する
自動投稿BOTにオリジナルのアイコンを登録したい方は、この作業を実施してください!
特にこだわりがない場合は、「3. Logic Appsによる自動投稿機能を作成する」に移動してください。
2-1. ストレージアカウントを作成する
ストレージアカウントの作成画面で「基本」タブに設定値を指定します。
設定後、 [レビュー] > [作成] のボタンを押下します。
項目 | 設定値 |
---|---|
サブスクリプション | 1. で選択したサブスクを選択します。 |
リソース グループ | 1. で作成したリソースグループ(my-slack-workspace-je )を選択します。 |
ストレージアカウント名 | 本ブログではmyslackworkspaceje を設定します(※)。 |
地域 |
(Asia Paciffic)Japan East を選択します。 |
パフォーマンス |
Standard を選択します。 |
冗長性 |
ローカル冗長ストレージ(LRS) を選択します。 |
他は、デフォルトでOK
ストレージアカウントの作成画面
2-2. Slackに投稿する画像を設定する
先ほど作成したストレージアカウント(myslackworkspaceje
)を選択して、左バーからデータストレージの「コンテナー」画面にアクセスします。「+コンテナー」を選択して、新しいコンテナーを作成してください。
項目 | 設定値 |
---|---|
名前 | 本ブログではimages と設定します。 |
パブリック アクセス レベル |
コンテナー(コンテナーとBLOBの匿名匿名読み取りアクセス) を選択します。 |
BLOBコンテナーの作成画面
作成したimages
コンテナーに適当な画像をアップロードします。
本ブログでは SPY FAMILYのアーニャにするます! (アーニャ❤️)
画像は 公式_SNS用アーニャアイコン からお借りしました。
画像ファイル(BLOB)のアップロード画面
確認のため、アップロードしたBLOBデータをブラウザで確認します。
赤枠のURLをコピーして、ブラウザで叩いてみてください。
私の場合は以下のURLからアーニャ❤️が確認できるます。
https://myslackworkspaceje.blob.core.windows.net/images/anya.png
ブラウザで確認できたアーニャ❤️!!!!
失敗する場合、
・ 画像ファイルが破損している
・ パブリックアクセスレベルがコンテナーになっていない
・ URLが間違っている
のどれかです! 今一度、再確認してください。
■ 3. Logic Appsによる自動投稿機能を作成する
ここからが本題です。
- Logic Appsの作成
- 自動投稿機能の実装(Slack連携も含む)
を紹介します。画像多め で解説しますね!
3-1. Logic Appsを作成する
ロジック アプリ(Logic Apps)の作成画面で「基本」タブに設定値を指定します。
設定後、 [確認および作成] > [作成] のボタンを押下します。
項目 | 設定値 |
---|---|
サブスクリプション | 1. で選択したサブスクを選択します。 |
リソース グループ | 1. で作成したリソースグループ(my-slack-workspace-je )を選択します。 |
ロジック アプリ名 | 本ブログではmyslackworkspaceje を設定します。 |
地域 |
(Asia Paciffic)Japan East を選択します。 |
ログ分析の有効化 |
いいえ を選択します。 |
プランの種類 |
消費 を選択します。 |
ゾーン冗長 (プレビュー) |
無効 を選択します。 |
Logic Appsの作成画面
3-2. Logic Appsに自動投稿機能の設定する
先ほど作成したLogic Apps(myslackworkspaceje
)を選択して、左バーの開発ツールからロジックアプリデザイナーの画面にアクセスします。下にスクロールすると「空のロジックアプリ」テンプレートが表示されるのでこれを選択します。
空のロジックアプリを選択した画面
① スケジュールを構成する
検索バーに「繰り返し」または「スケジュール」と入力して、 「繰り返し」トリガー を指定します。
繰り返し(スケジュール)トリガーの選択画面
「繰り返し」には 1週間間隔 で設定します。他のパラメータは[Add new parameter]から増やすことができます。
毎週月曜日, 火曜日, 水曜日, 木曜日, 金曜日の 8:30(JST) に実行する
ように設定してみます。
項目 | 設定値 |
---|---|
間隔 |
1 を設定します。 |
頻度 |
週 を選択します。 |
タイムゾーン |
(UTC+09:00) 大阪、札幌、東京 を選択します。 |
設定曜日 |
月・火・水・木・金 を選択します。 |
設定時刻(時間) |
8 を選択します。 |
設定時刻(分) |
30 を設定します。 |
繰り返し(スケジュール)トリガーの設定画面
② 現在の日本時刻を変数に格納する
続いて、「+新しいステップ」を選択します。
再度 検索バーに「変数を初期化する」または「変数」と入力して、「変数を初期化する」アクション を指定します。
変数を初期化する(変数)アクション の選択画面
「変数を初期化する」 には 現在の日本時刻を変数(NowDayTime)に格納する 設定を行います。
項目 | 設定値 |
---|---|
名前 |
NowDayTime を設定します。 |
種類 |
文字列 を選択します。 |
値 |
formatDateTime() を利用します(※詳細は↓で説明しています)。 |
※ 値には、[式]を選択します。その下の関数欄に
formatDateTime(convertTimeZone(utcNow(),'UTC','Tokyo Standard Time'),'yyyy/MM/dd')
と入力して、[OK]を押下します。
変数を初期化する(変数)アクション の設定画面
以下のような画面になっていれば、OKです!
変数を初期化する(変数)アクション の確認画面
③ Slackとの連携+メッセージ送信を設定する
続いて、「+新しいステップ」を選択します。
再度 検索バーに「メッセージの投稿」または「Slack」と入力して、「メッセージの投稿(V2)」アクション を指定します。
メッセージの投稿(V2)アクション の選択画面
その後、Logic AppsとSlackの連携のためサインインを求められます。
Slack のサインイン画面
右上のSlackワークスペースを押下して、連携したいSlackを選択します。そして、[許可する]ボタンを押下します。
Slack の連携画面
「メッセージの投稿(V2)」 には以下のように設定を行います。
項目 | 設定値 |
---|---|
チャネル名 | <チャンネルID>(推奨) または <チャンネル名>を設定します。 |
メッセージテキスト |
<②の変数を設定> やること・やったことメモ を設定します。 |
ボット名 |
Murakami's 作業スレッド を設定します。 |
アイコンのURL |
https://myslackworkspaceje.blob.core.windows.net/images/anya.png を設定します。 |
メッセージの投稿 の確認画面
全ての設定が完了されたら、[保存]ボタンを必ず押してください!!!(よく忘れます)
動作確認
ロジック アプリ デザイナー画面の[トリガーの実行]>[実行]を押下します。
Slackチャンネルに投稿されているか確認します!
【便利なチートシート_3選】
メッセージに個人宛のSlackメンションを含みたいとき
concat('<@','<メンバーID>','>')
と定義することで、個人宛のSlackメンションを利用できます。
例) concat('<@','U0181L96H04','>')
メッセージにグループ宛のSlackメンションを含みたいとき
concat('<!subteam','^<ユーザーグループID>','|','<ユーザーグループ名>','>')
と定義することで、グループ宛のSlackメンションを利用できます。
例) concat('<!subteam','^S14NQ1PR86V','|','murakami_team','>')
メッセージにハイパーリンクを記載したいとき
<URL | 表示させたいタイトル>
と定義することで、ハイパーリンクを利用できます。
例) <https://www.google.com/ | Googleリンク>
なお、プレビューを非表示にしたい場合は[リンクの展開]に「いいえ」を定義してください。
Discussion