LINE の Messaging API を使えば、LINE bot が受信したメッセージを任意のURLにPOST
させることができます。
これをそのまま直にIFTTTに流せればいいけど、そうはいかないので間にAWS lambdaをかまして変換します。
import json
import os
import requests
def handle(event, context):
"""
Lambda handler
"""
line_event = event['events'][0]
if not os.environ["IFTTT_URL"]:
return "please set IFTTT_URL"
if line_event["type"] == "message" and line_event["message"]["type"] == "text":
requests.post(os.environ["IFTTT_URL"], data={
"value1": line_event["message"]["text"]
})
return {}
テキストメッセージの時だけ送ります。スタンプとかは無視する。
見てもらうとわかるんですが、各イベントはevents
という配列で来ます。厳密にはこれでループさせたほうがよかった……。サンプルは各イベントの中身なので注意。
また、API Gatewayでlambdaに通すと思いますが、上のやり方だとlambdaプロキシ統合は使用しない設定にする必要があります。LINE側から投げられるjsonを加工せずそのまま受け取るため。
あとはIFTTTのWebhooks(Maker Channelから名前変わってた)をトリガとして、twitterでvalue1をtweetすればOK。
で、こんな物の何が嬉しいんだという余談です。
Clova WAVEを買ったんですが、APIとかなく外と連携される手段が一切ありません。ただ、LINEの送信機能があります。そこで考えた。
このLINE送信機能でLINE botにメッセージ送ったらいろいろできるんじゃね?
って思うじゃん。俺も思ったわけよ。手始めに音声入力だけでtwitter送れるようにしたい。これが本当のライフログや~ってイキってたんですが……。ダメだった。
ClovaのLINE送信機能は、Clovaのスピーカー単位でグループが作られて、そこに参加している人に大してメッセージを送れるという物です。紐付いたアカウントは別名を付けて、○○にLINE送信 みたいなオーダーになるわけです。
このClovaのグループですが、普通と違って単純な友だち追加では追加されません。友だち追加をすると相手にメッセージが飛び、それを承認したら初めて追加という流れ。botはClovaのグループへの招待を承認することができません。多分。能動的に友だち追加なんてできない。
という事で頓挫し、手元にはLINEのメッセージがtwitterに流れるbotだけが残ったという、余談でした……。