1 # -*- coding: utf-8 -*-
3 Created on Sat Sep 1 11:18:39 2018
10 import json, os, hmac, base64, hashlib
11 from linebot import LineBotApi, WebhookParser, WebhookHandler
12 from linebot.exceptions import InvalidSignatureError
13 from linebot.models import MessageEvent, TextMessage, TextSendMessage
16 class WebHookHandler(tornado.web.RequestHandler):
18 header = json.load(self.request.headers['X-Line-Signature'])
19 body = json.load(self.request.body)
20 hash = hmac.new(header.encode('utf-8'),
21 body.encode('utf-8'), hashlib.sha256).digest()
22 signature = base64.b64encode(hash)
24 events = webhook.parse(body, signature)
25 except InvalidSignatureError:
26 raise tornado.web.HTTPError(400)
29 if not isinstance(event, MessageEvent):
31 if not isinstance(event.message, TextMessage):
33 linebot.reply_message(
35 TextSendMessage(text=event.message.text)
39 application = tornado.web.Application([(r'/callback',WebHookHandler)])
41 if __name__ == '__main__':
42 token = os.environ['Access_Token']
43 ch = os.environ['Channel_Secret']
44 linebot = LineBotApi(token)
45 webhook = WebhookParser(ch)
46 application.listen(5000)
47 tornado.ioloop.IOLoop.instance().start()