🦔

「Slack」×「Azure Logic Apps」を活用した自動投稿BOTの作成手順【2023年6月更新】

2022/10/10に公開
はじめに

毎日、私は会社のSlackで個人の作業スレッドを立てて、その日にやること・やったことを記録しています。
最近、AzureのLogic Appsを利用してスレッド投稿を自動化したので作り方を紹介します!

完成イメージ図

Logic Appsによる自動投稿BOTのイメージ図

⭐️ 機能要件

  1. 平日のみ作業スレッドを立てる
  2. 投稿日時をスレッドに記載する
    ※ 祝日に対応はしていません。

🔧 作成方法

■ 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