🦔

Slack×Azure Logic Appsを活用した自動投稿機能をつくってみた

2022/10/10に公開約3,400字

■ はじめに

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

■ 機能定義

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

■ 1. リソースグループを作成する

(1) サブスクリプションを指定する
(2) リソースグループ名を入力する(任意でOK)
(3) リージョンを「Japan East」にする(こだわりがなければ 別リージョンでも可)

■ 2. Slack投稿に表示される画像を用意する

■ 2-1. ストレージアカウントを作成する

Slackに投稿する画像を設定します。
特にこだわりがない場合は、「3. Logic Appsを作成する」に移動してください。
(1) 「1. リソースグループを作成する」と同様のサブスクリプションを選択する
(2) 「1. リソースグループを作成する」で作成したリソースグループを選択する
(3) ストレージアカウント名を入力する(グローバルで一意の名前にしてください。※ URLの一部になるので重複してはダメという意味)
(4) リージョンを「Japan East」にする(こだわりがなければ 別リージョンでも可)
(5) パフォーマンスは「Standard」にする
(6) 冗長性は「ローカル冗長ストレージ(LRS)」にする
(7) 以降は、デフォルトでOK

■ 2-2. Slackに投稿する画像を設定する

(1) 構築したストレージアカウントを選択する
(2) 左バーからデータストレージの「コンテナー」を選択する
(3-1) 「+コンテナー」を選択して、新しいコンテナーを作成する
(3-2) 名前に「images」と入力して、パブリックアクセスレベルは「コンテナー」を指定して、作成する

(4) 作成したimagesコンテナーに適当な画像をアップロードする
今回は、SPY FAMILYのアーニャにするます。画像は @Anya_spyfamily_ からお借りしました。


(5) 動作確認のため、画像が表示されるか調べる。
赤枠のURLをコピーして、ブラウザで叩いてみてください。

私の場合は以下のURLからアーニャが確認できるます。
https://mynippopostingje.blob.core.windows.net/images/anya_cry.png
失敗する場合、
・ 画像ファイルが破損している
・ パブリックアクセスレベルがコンテナーになっていない
・ URLが間違っている
のどれかです、再確認してください。

■ 3. Logic Appsによる自動投稿機能を作成する

ここから長いため、3パートに分けて説明します。

■ 3-1. Logic Appsを作成する

(1) 「1. リソースグループを作成する」と同様のサブスクリプションを選択する
(2) 「1. リソースグループを作成する」で作成したリソースグループを選択する
(3) ロジックアプリ名を入力する
(4) リージョンを「Japan East」にする(こだわりがなければ 別リージョンでも可)
(5) プランの種類は消費(サーバーレス)を指定する
(6) 以降は、デフォルトでOK

■ 3-2. Logic Appsに自動投稿機能の設定する

(1) 左バーの開発ツールからロジックアプリデザイナーを選択する
(2) 「繰り返し」を指定して、下記の画像の通りに設定する

(3) 「+新しいステップ」から、「変数」の「変数の初期化」を下記の画像の通りに設定する

※ 値には、
formatDateTime(convertTimeZone(utcNow(),'UTC','Tokyo Standard Time'),'yyyy/MM/dd')
を設定している。
(4) 「+新しいステップ」から、「Slack」の「メッセージの投稿(V2)」を選択する。その後、Slackとの連携のためAPI接続を求められる。

(5) Slack認証を許可してください。該当のSlackワークスペースが表示されない場合、赤枠から検索ください。

(6) 下記の通りに設定する。ただし、Slackチャンネル名は各自のものにすること

(7) 必ず、保存する。

■ 3-3. 動作確認を行う

トリガーを押下する。

Slackチャンネルに投稿されているか確認する。

おまけ

その1
・ Logic Appsから自分宛にメンションを送信したい場合、concat関数を利用してください。
concat('<@','murakami-koki','>')

その2
・ たまにチャンネル名が表示されない時があります。その時は、SlackのチャンネルIDを指定することで解決します。

Discussion

ログインするとコメントできます