IFTTTとSendGridを使って自動通知メールを送ろう

IFTTTとSendGridを使って自動通知メールを送ろう

はじめに

会員登録時の認証メールや決済完了通知など、SendGridを使えば様々なメールを自動で送信できます。これまでブログでも、空メール登録システムSMSを使ったメール送信システムなどの実装方法をご紹介しましたが、今回はIoT機器を使った通知システムを構築します。

Wi-Fiに接続してデータを送信できる温湿度計を使って、室温があらかじめ設定した温度を超えたら自動でメールが送られるようにします。IFTTTとSendGridを組み合わせることでプログラミング不要で簡単に作成できますので、ぜひ試してみてください。

使用するもの

今回使用するのは以下の3つです。

  1. SwitchBot 温湿度計ハブミニ
    Wi-Fiに接続し、温湿度のデータを送信することができます。
    ハブミニはSwitchBot製品や赤外線リモコンを登録し、Wi-Fi接続によりインターネットを介した操作を可能にする製品です。温湿度計単体ではWi-Fi接続ができないため、ハブミニを中継する必要があります。
    事前準備としてスマートフォンにSwitchBotアプリをインストールし、各製品の登録を完了させておきましょう。
  2. SendGrid
    メール送信にはSendGridのWeb APIを使います。
  3. IFTTT
    複数のWebサービスを連携させることができます。
    SwitchBot用のプラグインが用意されており、SwitchBot製品で取得したデータの値から判断して他のWebサービスを動かすことができます。IFTTTにSendGridのプラグインはありませんが、「Webhooks」というサービス(HTTPリクエストの送受信等ができる機能)を使えばSendGridと連携できます。

まずは上記サービスのアカウント作成を済ませてください。
SwitchBot製品は購入する必要がありますが、IFTTTとSendGridは無料アカウントで問題ありません。

アプリケーションの構成

アプリケーションの構成は下図の通りです。
IFTTTを使ってSwitchBotの温度データを取得し、設定した条件を満たすとSendGridにHTTPリクエストが送られます。SendGridはこのリクエスト内容に従ってメールを送信します。

IFTTTとSwitchBotの連携

まずはIFTTTでSwitchiBotをトリガとするアプレットを作成します。IFTTTにおけるアプレットとは、「○○したら~~する」といった指示のことです。

1. 温湿度計のクラウドサービス連携を有効にする

a. SwitchBotアプリを開き、デバイスの一覧から今回使用する温湿度計を選択します。

デバイスの一覧から今回使用する温湿度計を選択

b. 右上の歯車マークから設定画面を開きます。

右上の歯車マークから設定画面を開く

c. 「クラウドサービス」をオンにします。

「クラウドサービス」をオンにする 「クラウドサービス」をオンにする
2. IFTTTでアプレットを作成

IFTTTにログインし、上部にある「Create」ボタンをクリックします。

IFTTTにログインし、上部にある「Create」ボタンをクリック

3. 「If This」を追加

a. 「○○したら~~する」の「○○」にあたる「If This」にSwitchBotを設定します。

「If This」にSwitchBotを設定「If This」にSwitchBotを設定

b. SwitchBotには様々な製品があります。今回使用するのは温湿度計なので「温度・湿度の変化」を選択します。

「温度・湿度の変化」を選択

初めてIFTTTでSwitchBotを利用する場合は、SwitchBotのアカウントを紐付ける必要があります。「Connect」ボタンが表示されたらクリックし、画面の指示に従ってSwitchBotアカウントにログインしてください。

4. メールを送る条件を設定

続いて通知メールを送る条件を指定します。今回は室温が25℃を超えたら通知されるようにします。
下図を参考に「温度単位を選択」「温度条件」「温度値」「湿度条件」の4項目を設定してください。

必要箇所を入力し「Create Trigger」をクリックすると、「If This」部分に設定が反映されます。

「If This」部分に設定が反映される

IFTTTとSendGridの連携

次はいよいよメールを送るための設定です。

1. SendGridでAPIキーとメール本文を作成

SendGridのダッシュボードを開き、APIキーとメール本文を用意しましょう。

a. APIキーの作成
SendGridでメールを送るためには、メール送信権限を付与したAPIキーが必要です。作成方法はドキュメントをご覧ください。
作成したAPIキーは1度しか表示されないため、メモしておきましょう。

b. Dynamic Transactional Templateの作成
メール本文となるテンプレートを作成します。今回はDynamic Transactional Templateを利用します。作成方法はドキュメントをご覧ください。
テンプレートの一覧に表示されるテンプレートIDは後で使用します。

メール本文となるテンプレートを作成

2. 「Then That」を追加

次は「○○したら~~する」の「~~」を表す「Then That」の部分を設定します。
前述の通りSendGridのプラグインはありませんが、「Webhooks」を使ってメール送信機能を実現します。

「Then That」の部分を設定
「Then That」の部分を設定

「Make a web request」を選択します。これを使えば任意のエンドポイントにHTTPリクエストを送ることができます。

3. リクエスト内容を入力

設定する項目は以下の通りです。
メール送信APIに関する詳しい説明はこちらのAPIリファレンスページをご確認ください。

設定項目 入力/選択内容
URL https://api.sendgrid.com/v3/mail/send
Method POST
Content Type application/json
Additional Headers Authorization: Bearer <ダッシュボードで作成したAPIキー>
Body
{
“personalizations”: [
{
“to”: [{“email”: “<宛先メールアドレス>”}],
}
],
“from”: {“email”: “<送信元メールアドレス>”},
“template_id”: “<ダッシュボードで作成したテンプレートのID>”
}

リクエスト内容を入力

全て入力できたら「Create action」をクリックしましょう。
「Then That」が設定されたことを確認し、「Continue」をクリックします。

「Then That」が設定されたことを確認し、「Continue」をクリック

ここまで設定できたら、アプレットに名前を付けて完成です。「Finish」をクリックしましょう。

アプレットに名前を付ける

アプレットに名前を付ける

設定した温度を超えたら実際にメールが送られてくることを確認しましょう。

設定した温度を超えたら実際にメールが送られてくる

条件を満たしているにも関わらずメールが送られない場合は、「Webhooks」の設定内容にミスがあるのかもしれません。こちらのブログなどを参考に、入力した内容でHTTPリクエストが正しく受け付けられるか確かめてみるとよいでしょう。

なお、アプレットの画面にある「Check now」ボタンをクリックすると「Check completed」と表示されますが、「Webhooks」の処理(メール送信)は実行されないので注意してください。

さいごに

「Email」などIFTTTのプラグインを使えばSendGridなしでもメールを送信できますが、今回紹介した方法ならSendGridのダッシュボードで作成したテンプレートを使ってHTMLメールを送ることができます。
例えば、メールの内容をカスタマイズし、次のようなことを試してみてはいかがでしょう?

  • メール内にエアコンをオンにするボタンを設置する
    • ヒント:SwitchBotのハブミニとIFTTTを使えばエアコンをオンにするURLを作成できます。
  • メール内に挿入する文字をIFTTTで設定する
    • ヒント:SendGridは件名や本文に文字列の埋め込みができるため、「Webhooks」のBodyで指定した任意の文字列をメールに挿入することができます。

ぜひオリジナルの便利な使い方を見つけてください!

アーカイブ

メールを成功の原動力に

開発者にもマーケターにも信頼されているメールサービスを利用して、
時間の節約、スケーラビリティ、メール配信に関する専門知識を手に入れましょう。