LINE에서 Messaging API가 새로 출시된 것 같아서 여전히 형태소 해석을 할 만큼의 BOT을 만들었다
소개
이전에 Trial 계정으로 똑같은 것을 만들었는데, "계정 일제히 삭제하자!!"라는 위협 메일이 왔으므로 이행했습니다.
리포지토리
내가 만든 것
LINE 공식 SDK
BOT
SDK의 Wiki 페이지을 타면 좋겠다 ...
환경
소스 코드
bot.py
# coding: utf-8
from __future__ import unicode_literals
from flask import Flask, request, abort
from linebot import LineBotApi, WebhookHandler
from linebot.exceptions import InvalidSignatureError
from linebot.models import MessageEvent, TextMessage, TextSendMessage
from janome.tokenizer import Tokenizer
import os, re, json
def load_env():
try:
with open('.env') as f:
content = f.read()
except IOError:
content = ''
for line in content.splitlines():
m1 = re.match(r'\A([A-Za-z_0-9]+)=(.*)\Z', line)
if m1:
key, val = m1.group(1), m1.group(2)
m2 = re.match(r"\A'(.*)'\Z", val)
if m2:
val = m2.group(1)
m3 = re.match(r'\A"(.*)"\Z', val)
if m3:
val = re.sub(r'\\(.)', r'\1', m3.group(1))
os.environ.setdefault(key, val)
load_env()
app = Flask(__name__)
line_bot_api = LineBotApi(os.environ.get('CHANNEL_ACCESS_TOKEN'))
handler = WebhookHandler(os.environ.get('CHANNEL_SECRET'))
@app.route("/callback", methods=['POST'])
def callback():
signature = request.headers['X-LINE-Signature']
body = request.get_data(as_text=True)
receive_json = json.loads(body)
message = receive_json['events'][0]['message']['text']
response_arrays = []
t = Tokenizer()
for token in t.tokenize(message):
response_arrays.append(str(token))
response = ''
for item in range(len(response_arrays)):
if len(response_arrays) == item + 1:
response += str(response_arrays[item])
else:
response += str(response_arrays[item] + '\n')
try:
line_bot_api.reply_message(receive_json['events'][0]['replyToken'], TextSendMessage(text = response))
except InvalidSignatureError:
abort(400)
return 'OK'
if __name__ == '__main__':
app.run(host='0.0.0.0', port = 8003, threaded = True, debug = True)
.env
CHANNEL_ACCESS_TOKEN='hogehoge' # めっちゃ長いやつ
CHANNEL_SECRET='' # 今まで通り隠れてるやつ
LINE 관리 화면 측 설정
안의 정, HTTPS가 아니면 안되기 때문에 노력합시다!
LINE@의 관리 화면에 열심히 도착해 「계정 설정」 > 「Bot 설정」 으로 자신이 생각하는 설정을 합시다!
실제 응답
매우보기 힘들다 ...
마지막으로
뭔가 있으면 PullRequest 등 동돈 내고 싶습니다!
그리고 LINE 씨 Wiki 페이지 부탁드립니다.
구 API와 이번 신 API에서는
request.headers['X-LINE-Signature']
가 있는 것과 없는 것으로 처음 초조했습니다. 덧붙여서 구 API에서는 request.headers['X-Line-Channelsignature']
에 상당합니다.
Reference
이 문제에 관하여(LINE에서 Messaging API가 새로 출시된 것 같아서 여전히 형태소 해석을 할 만큼의 BOT을 만들었다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nnsnodnb/items/311d6fbe5156c10d7276텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)