0
Help us understand the problem. What are the problem?

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 can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?