AWS lambdaとIFTTTを使って、LINE botへのメッセージをtwitterに転送する

More than 1 year has passed since last update.

LINE の Messaging API を使えば、LINE bot が受信したメッセージを任意のURLにPOSTさせることができます。

https://developers.line.me/ja/docs/messaging-api/reference/#anchor-e2c59da01216760e81e8ca10c55b2e28b276c3e5

これをそのまま直にIFTTTに流せればいいけど、そうはいかないので間にAWS lambdaをかまして変換します。

https://github.com/thrakt/line-to-ifttt-bridge

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だけが残ったという、余談でした……。