LoginSignup
3
0

AWS Lambda でLine bot を作成する

Last updated at Posted at 2022-07-30

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.png

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

メッセージを送信する

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

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

import json
import urllib.request

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 を作成する

更新日:2024年02月13日

3
0
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
3
0