PythonからIFTTTにWebhookでアクセスする方法

CHASUKEの記事をシェアする..

どうも、CHASUKEです。

PythonスクリプトからWebhookでIFTTTトリガーにアクセスする方法をご紹介します。

Webhookとは、アプリでイベントが実行された時に外部サービスにHTTPで通知する仕組みのこと。

今回でいうと「アプリ(Python)でのイベントを外部サービス(IFTTT)にHTTPで通知する」という感じ。

Pythonはラズパイに最初からインストールされてるので、すぐに使えます。それに他のプログラム言語と違いコンパイル不要で構文も簡単なので、読みやすく書きやすいのが特徴です。手軽なので僕は何か動かしたいときは、必ずPythonを使うくらい好き。

自作スクリプトからIFTTT経由で自動化させてみたい人、ラズパイ使ってスマートホームを加速させたいと思っている方の参考になれば幸いです!!

それではやっていきましょう。

SPONSORED LINKS

PythonスクリプトからIFTTT連携方法

試しに、以下をやってみます。

『Python(ラズパイ)→ IFTTT経由 →LINE』

ってな感じのLINE連携です。

▼手順は以下の通り。

  1. IFTTTアプレット作成
  2. HTTPアクセス先の確認
  3. Pythonスクリプト作成
  4. Pythonスクリプト実行

IFTTTアプレット作成

IFTTT「https://ifttt.com/discover」にてNew Appletを作成していきます。

IFTTTは『もし 〇〇 ならば、 △△ する』で成り立ちます。

先に、『〇〇(トリガー)』を作成してきます。

▼Webhooksチャンネルを選択

▼Webhooksトリガーには1つしか選択肢がありません。

▼ここでは、HTTPアクセスするときのイベント名を指定します。

続いては、『△△(アクション)』を作成してきます。

▼LINEチャンネルを指定。(初回はログインが必要かも。)

▼LINEチャンネルのアクションも1つの選択肢しかありません。

LINE Notifyに個人LINEが来るように設定します。

LINEメッセージ内容は、シンプルにアプリから連携された「Value1」「Value2」「Value3」を表示するだけ。

▼適当にアプレットのタイトルを決めて、完了です。

HTTPアクセス先の確認

先ほど作ったIFTTTアプレットのWebhooksチャンネルにアクセスするためのURLを確認していきます。

▼右上の「Services」を選択

▼ServicesタブからWebhooksチャンネルを指定します。

▼右上のSettingsを選択

▼ここに表示されるURLにブラウザでアクセスします。

▼はい。これがHTTPアクセスするためのURLです。

Webhooksトリガーの「Event Name」に指定した値(※今回ならline_event)を入れてURLが完成する。また、POSTメソッドにて3つのValue値を飛ばすことができる。

Pythonスクリプト作成

いよいよPython側スクリプトを作成します。(※Python3を利用)

▼ちなみに僕のPython環境はこんな感じ。

$ python3 -V
Python 3.5.3
$ pip3 -V
pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.5)

▼作成したPythonスクリプトがこんな感じ。

ファイル名:ifttt_demo.py

import requests

# IFTTT_Webhook
def ifttt_webhook(eventid):
    payload = {"value1": "Internet",
                "value2": "Of",
                "value3": "Things" }
    url = "https://maker.ifttt.com/trigger/" + eventid + "/with/key/b5W9d3RTHTCfcCdCVG9Cya"
    response = requests.post(url, data=payload)

# ここからスタート
if __name__ == '__main__':
        print ("IFTTT連携開始")

        # IFTTT_Webhook
        ifttt_webhook("line_event")

        print ("IFTTT連携終了")

上のサンプルコードは、Value1からValue3まで連係しますが、もしValueを連係したくない場合は、以下のようなコードとなる。

def ifttt_webhook(eventid):
    url = "https://maker.ifttt.com/trigger/" + eventid + "/with/key/b5W9d3RTHTCfcCdCVG9Cya"
    response = requests.post(url)

Pythonスクリプト作成

さっそく作ったPythonスクリプトを実行します。

HTTPアクセスが便利になる外部ライブラリ『requests』を利用しているため、事前にインストールしておかないと、実行時にエラーとなる。

$ pip3 install requests

▼実行した結果がこちら。

$ python3 ifttt_demo.py 
IFTTT連携開始
IFTTT連携終了

LINEアプリでチェックすると、「LINE Notify」から通知がきてますねー。

※3回実行しているので、何個もきてます。

最後に

こんな感じで、PythonスクリプトからIFTTTが実行できます。

今回は単純なLINE通知をアクションとしましたが、これを応用すれば、もっと高度な自動化が可能になるはずです。

それではまた。