search
LoginSignup
0

posted at

updated at

AWS Lambda でLine bot を作成する

Line bot を作成し、自動でメッセージを送受信する方法を解説します。

LINE Developersコンソールからチャネルを作成

下記手順を参考にLINE Developersコンソールからチャネルを作成します。
LINE Developersコンソールでチャネルを作成する

Webhook用のLambda関数を作成する

👇これより先は下記記事の内容を前提とします
REST API としてAWS Lambda関数を呼び出す

  • Lambda関数はフックした内容をprint=ログ出力するのみとします。
import json

def lambda_handler(event, context):

    print("event")
    print(event)

    return_data = {}

    return {
        'statusCode': 200,
        'headers': {
            'Access-Control-Allow-Origin': '*'
        },
        'body': json.dumps(return_data)
    }

  • API GatewayはPOSTメソッドを作成します。
    image

Webhookを設定する

下記手順を参考にWebhookを設定します。
Webhook URLを設定する

  • API GatewayにデプロイしたURLを取得します。
    image

  • LINE Developersコンソールへログインし、Webhookへ設定します。
    image
    image

  • Webhookを有効化します。
    image

  • QRコードに表示されたQRコードを利用してAPIをお友達追加します。
    image

※ 下記は実際のQRコードです。試しに読み取ってイメージを確認してみて下さい。
image

  • CloudWatchのログに'event:follow(お友達追加)'、'userID:ユーザID`が記録されることを確認します。
    image

メッセージを送信する

メッセージ送信のため、チャンネルアクセストークンを取得

ユーザIDを指定してメッセージ送信

import urllib

main_logic()

def main_logic():
    print("main_logic start")

    access_token = "xxxx_access_token_xxxxxxxxxx"
    
    url = "https://api.line.me/v2/bot/message/push"
    method = "POST"
    headers = {
        'Authorization': "Bearer " + access_token,
        'Content-Type': 'application/json'
    }
    messages = [
        {
            "type": "text",
            "text": "テストメッセージです!!"
        }
    ]
    params = {
        "to":"Uxxxxxsend_userid_XXXXXXXXXXXXXXXXXXX"
        ,"messages": messages
    }
    request = urllib.request.Request(url, json.dumps(params).encode("utf-8"), method=method, headers=headers)
    with urllib.request.urlopen(request) as res:
        body = res.read()
        print(body)

👇前提記事

REST API としてAWS Lambda関数を呼び出す

👇参考URL

[keywords]
AWS lambda Line linebot

AWS Lambda でLine bot を作成する

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
What you can do with signing up
0