n8n で指定時間後に通知が来るようにする(1)

NotNow.co が使えなっくなったことで、ワークフロー自動化ツールを使うことにしたと書いた。

そして、Mac にワークフロー自動化ツールの n8n をインストールした。

次は実際にワークフローを設定していこう。なお、サーバー版の Docker n8n はポート開放の関係のせいかうまく動かなかったので、今回はデスクトップ版の n8n を使う。

最終的に目指すのは、FileMaker で n 分後(毎回変わる)に通知するように設定したら、n 分後にメールおよび Pushover へ通知が来るようにすることだ。

FileMaker アプリ側および n8n 側双方で設定が必要となる。まずは n8n での設定から始めよう。

環境:macOS Monterey Version 12.6.1(英語環境)、n8n Desktop Version 1.7.0

(1)workflow を新規作成する。

「Start」node(個々のアクションは node と呼ばれる)の右に伸びているプラスマークをクリック。「Webhook」を検索して追加する。

なお、「Start」node は workflow の新規作成時に自動的に挿入され、削除もできないが、始点を表すだけで特に何もしないようだ。この node から続けて他の node を追加していけばいい。

サーバー版だと、「Start」node はなく、workflow の新規作成時は、「Start from scratch>Add first step…」とクリックしていく。

(2)【Webhook の設定1】

Webhook の詳細画面が出てくるので、ここで n8n が受け付ける Webhook を設定することになる。Webhook を受けることでワークフローのトリガーとなる。

「Webhook URLs」は「Test URL」と「Production URL」の2種類がある。Test URL はテスト用で、一回実行するごとに停止する。Production URL は実行をし終わっても停止せずずっと使える。設定段階では Test URL で実験してうまくいけば Production URL を使えばいい。

(3)【Webhook の設定2】

以下のように設定する。

Webhook URLs:Test URL
Authentication:None
HTTP Method:Post
Path:(デフォルトのまま)
Respond:Immediately
Response Code:200

以上のように入力した上で、「Listen for Test Event」をクリック。

Mac の Terminal で以下のコマンドを実行すると、OUTPUT という表示がでて結果が表示されるはずだ。params、query、body などはすべて empty object となる。

$ curl -X POST [Test URL]

最終的な通知の際は、メールの件名、メール本文、通知時間を FileMaker から送信することになる。そのため、メールの件名を「subject」、メール本文を「body」、通知時間(n 分後)を「time」と呼ぶことにして、改めて以下のコマンドを Terminal から送信してみよう(再び「Listen for Test Event」をクリックしておく)。ここで実験することで、以降の過程で変数として値を拾えるようになる。

$ curl -X POST -d “subject=これは件名です。” -d “body=これは本文です。” -d “time=15” [Test URL]

すると OUTPUT の body にメールの件名、本文、時間が表示されているはずだ。

左上の「back to canvas」で戻る。

(4)【遅延時間の設定】

「Webook」の右に伸びているプラスマークをクリック。「Wait」を検索して追加する。

「Parameter」では「Resume」は「After Time Interval」にする。

「Wait Amount」で「Expression」をクリックするとダイアログが出てくる。まずは「Expression」にサンプルの「{{1}}」が書かれていれば削除しておく。左の「Variable Selector」で「Nodes>Webhook>Output Data>JSON>body」で先ほどテストしたデータが表示されているはずだ。この中の「time」をクリックすると、「Expression」に値が入力され、「Result」欄に「15」(先ほどテストした値)が表示される。右上のバツマークをクリックして戻る。

「Wait Until」を「Minutes」にする。

左上の「back to canvas」で戻る。

(5)【メール通知の設定】

「Wait」の右に伸びているプラスマークをクリック。「Send Email」を検索して追加する。

以下のように設定する。

Credential for SMTP:「Create New」をクリックして、SMTP アカウント情報を入力、「Save」をクリック。

From Email:[送信元メールアドレス]
To Email:[通知先メールアドレス]
CC Email:(必要に応じて入力)
BCC Email:(必要に応じて入力)
Subject:「Expression」をクリックして4と同様の手順で「Subject」を追加する。
Text:「Expression」をクリックして4と同様の手順で「body」を追加する。

左上の「back to canvas」で戻る。

(6)【Pushover の設定】

「Send Email」の右に伸びているプラスマークをクリック。「HTTP Request」を検索して追加する。

以下のように設定する。

Method:POST
URL:https://api.pushover.net/1/messages.json
Authentication:None
Send Query Parameters:オフ
Send Headers:オフ
Send Body:オン
Body Content Type:Form Urlencoded
Specify Body:Using Fields Below
Body Parameters:(Name と Value を以下のように設定する)
 user:[Pushover のアカウントページで表示される Your User Key]
 token:[Pushover のアカウントページの Your Applications で作成したアプリケーションの API Token/Key ]
 priority:[ Normal の場合 0 ]
 title:(「Expression」をクリックして4と同様の手順で「Subject」を追加する)
 message:(「Expression」をクリックして4と同様の手順で「body」を追加する)

左上の「back to canvas」で戻る。

以上の設定が終わったら、右上の Active のトグルをオンにすれば、このワークフローが有効化される(Production URL が使えるようになる)。以下のコマンドを Terminal から実行してみると、メールおよび Pushover へ通知が来るはずだ。

$ curl -X POST -d “subject=これは件名です。” -d “body=これは本文です。” -d “time=15” [Production URL]

次は FileMaker 側の設定について書く。

参考:
Pushover: Home
https://pushover.net/

Workflow executes once and stops - Questions - n8n
https://community.n8n.io/t/workflow-executes-once-and-stops/313

How to use cURL - Questions - n8n
https://community.n8n.io/t/how-to-use-curl/12413

curl で Pushover に通知を送る|荒川仁志|note
https://note.com/hitoshiarakawa/n/n09b5c9700dcf


この記事が気に入ったらサポートをしてみませんか?