LoginSignup
2
1

More than 5 years have passed since last update.

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

Posted at

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

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1