LINE ボットを作る -LINE Messaging API と AWS Lambda を連携させる- その2

AWS Lamda 関数作成

AWS Lambda の関数を開いて、[関数の作成]

f:id:singyestarday:20181127131558p:plain

[一から作成]、今回はPython3.6を選択。 f:id:singyestarday:20181127131907p:plain

ロールの設定が必要になりますが、特別に必要な権限はないとので、新規で作成します。

[カスタムロールの作成]を選択。作成します。

f:id:singyestarday:20181127132222p:plain

Python コーディング

まずは必要なライブラリをDLします。

上記のライブラリファイルと、「lambda_function.py」をローカルに保存。

f:id:singyestarday:20181127141441p:plain

ソースコードの内容は以下。

ACCESS_TOKEN 部分は、前回作成したLINEチャネルのアクセストークンを入力。

# -*- coding:utf-8 -*-
from __future__ import print_function
import requests
import json

# 定義
LINE_API_ENDPOINT = 'https://api.line.me/v2/bot/message/reply'
ACCESS_TOKEN = [おのおののアクセストークン]

LINE_API_HEADERS = {
    'Authorization': 'Bearer ' + ACCESS_TOKEN,
    'Content-type': 'application/json'
}


# ---------------------------------------------
# Webhook用ハンドラー
# ---------------------------------------------
def lambda_handler(event, context):
    
    request_json = event

    reply_token = ''
    text = ''
    payload = ''
       
    for e in request_json['events']:
        
        # イベントタイプの判断
        event_type = e['type']
      
        # メッセージイベント時        
        if "message" == event_type and "message" in e.keys():
            
            reply_token = e['replyToken']   # 返信先トークン
            text = e['message']['text']     # 送られてきたメッセージ
            
            # 返信用のオブジェクト
            payload = {
                  "replyToken":reply_token,
                  "messages":[
                        {
                             "type":"text",
                             "text": text
                         }
                    ]
            }
            
            break
                    
        # 最初の友達登録時、ブロック解除時など
        else:
            reply_token = e['replyToken']
            
            # 返信用のオブジェクト
            payload = {
                  "replyToken":reply_token,
                  "messages":[
                        {
                             "type":"text",
                             "text": event_type
                         }
                    ]
            }
    
    #リプライメッセージの送信
    requests.post(LINE_API_ENDPOINT, headers=LINE_API_HEADERS, data=json.dumps(payload))
    
    return

以上。

次回、Lambdaのトリガーと、AWS API Gatewayの設定をして完了です。