Python, Lambda, API Gateway에서 LINE 채팅 Bot 만들기

이번에는 line-bot-sdk-python을 사용하지 않고 AWS Lambda와 API Gateway에서 앵무새 반환 LINE 채팅봇을 만들었으므로 게시합니다. AWS 초보자가 처음 Lambda와 API Gateway에 도전했습니다.

LINE Developers에 채널 등록



를 열고 '지금 시작하기'를 눌러 채널을 만듭니다.

AWS Lambda 함수 생성


Lambda 화면으로 전환하여 함수를 처음부터 만들어 봅시다.

함수 이름은 LINEBot이고 런타임은 Python 3.8입니다. 그리고 함수 만들기를 누르자.
나중에 Lambda 환경 설정을 편집합시다.

값에 Messaging API의 Channel access token (엄청 긴 녀석)을 복사하여 저장하십시오.
여기에서 "lambda_function.py"를 편집하여 실제로 코드를 작성합니다.

lambda_function.py 편집



lambda_function.py
import logging

import os
import urllib.request
import json

logger = logging.getLogger()
logger.setLevel(logging.INFO)

def lambda_handler(event, context):
    
    logger.info(event)
    
    # JSON文字列をPythonオブジェクトに変換してをeventsをループで回す
    for message_event in json.loads(event['body'])['events']:
        
        logger.info(json.dumps(message_event))
        
        url = 'https://api.line.me/v2/bot/message/reply'

        # リクエストヘッダー
        headers = {
            'Content-Type': 'application/json',
            'Authorization': 'Bearer ' + os.environ['ACCESSTOKEN']
        }
        # リクエストボディ
        data = {
            'replyToken': message_event['replyToken'],
            'messages': [
                {
                    "type": "text",
                    "text": message_event['message']['text'],
                }
            ]
        }
        req = urllib.request.Request(url=url, data=json.dumps(data).encode('utf-8'), method='POST', headers=headers)
        
        with urllib.request.urlopen(req) as res:
            
            logger.info(res.read().decode("utf-8"))


logger는 Cloud Watch에서 log를 출력하고 있지 않아도 됩니다!
htps : //에서 ゔぇぺぺrs. 네. 비 · 자 / 레후 렌세 / 메사 긴 g 아피 / # 센 드 레이 ply
공식적으로 아래와 같은 방법으로 POST 요청하면 좋다고 쓰고 있었습니다.
HTTPリクエスト POST 
https://api.line.me/v2/bot/message/reply

リクエストヘッダー
Content-Type application/json
Authorization Bearer {channel access token}

リクエストボディ
replyToken Webhookで受信する応答トークン
messages 送信するメッセージ
그리고 앵무새를 되돌리려면 다음과 같은 구조로되어 있었기 때문에
"events":[{
"replyToken":"xxxxxxxxxxxxxxxxxxx",
"message":{"type":"text","id":"xxxxxxxxxxxxxxx","text":"こんにちは"}
}]
"text": message_event['message']['text']로 앵무새를 반환할 수 있다.

API Gateway 설정



Lambda가 방금 만든 LINEBot의 "함수 개요"에서 "트리거 추가"버튼을 누릅니다. "트리거 선택"에서 "API GateWay", "API 만들기"를 각각 선택하고 API 유형은 "HTTP"를 선택합니다. 보안은 이번에는 "오픈"을 선택합니다. 지금까지 완료되면 "추가"버튼을 누릅니다.

그런 다음 방금 만든 트리거의 API 끝점을 복사하여 Messaging API의 Webhook URL에 붙여넣습니다.

완성



그러면 이렇게 앵무새 반환 채팅 bot의 완성입니다! !

참고문헌

좋은 웹페이지 즐겨찾기