1 # -*- coding: utf-8 -*-
3 Created on Sat Sep 1 11:18:39 2018
11 import json, os, hmac, base64, hashlib, pytz
12 from datetime import datetime
13 from linebot import LineBotApi, WebhookParser, WebhookHandler
14 from linebot.exceptions import InvalidSignatureError
15 from linebot.models import MessageEvent, TextMessage, TextSendMessage
18 class WebHookHandler(tornado.web.RequestHandler):
20 pz = pytz.timezone('Asia/Tokyo')
21 t = datetime.now(pz).hour
22 if (t >= 9)and(t < 16):
23 self.write(u'仕事中.'+str(datetime.now()))
28 header = json.load(self.request.headers)
29 body = json.load(self.request.body)
30 hash = hmac.new(header['X-Line-Signature'].encode('utf-8'),
31 body.encode('utf-8'), hashlib.sha256).digest()
32 signature = base64.b64encode(hash)
35 events = webhook.parse(body, signature)
36 except InvalidSignatureError:
37 raise tornado.web.HTTPError(400)
40 if not isinstance(event, MessageEvent):
42 if not isinstance(event.message, TextMessage):
44 linebot.reply_message(
46 TextSendMessage(text=event.message.text)
51 class DummyHandler(tornado.web.RequestHandler):
55 application = tornado.web.Application([(r'/callback',WebHookHandler),(r'/',DummyHandler)])
57 if __name__ == '__main__':
58 token = os.environ['Access_Token']
59 ch = os.environ['Channel_Secret']
60 linebot = LineBotApi(token)
61 webhook = WebhookParser(ch)
62 application.listen(5000)
63 tornado.ioloop.IOLoop.instance().start()