OSDN Git Service

test
[simple-tornado-bot/simple-tornado-bot.git] / bot.py
1 # -*- coding: utf-8 -*-
2 """
3 Created on Sat Sep  1 11:18:39 2018
4
5 @author: fuke masasi
6 """
7
8 import tornado.ioloop
9 import tornado.web
10 import json, os
11 from linebot import LineBotApi, WebhookParser
12 from linebot.exceptions import InvalidSignatureError
13 from linebot.models import MessageEvent, TextMessage, TextSendMessage
14
15
16 class WebHookHandler(tornado.web.RequestHandler):
17     def get(self):
18         self.write('hello')
19     
20     def post(self):
21         signature = json.load(self.request.headers['X-Line-Signature'])
22         data = json.load(self.request.body)
23         try:
24             events = webhook.parse(data, signature)
25         except InvalidSignatureError:
26             self.abort(400)
27         for event in events:
28             if not isinstance(event,MessageEvent):
29                 continue
30             if not isinstance(event.message,TextMessage):
31                 continue
32             linebot.reply_message(
33                 event.reply_token,
34                 TextSendMessage(text=event.message.text)
35             )
36
37 application = tornado.web.Application([(r'/callback',WebHookHandler)],{
38         #'debug':True
39         })
40
41 if __name__ == '__main__':
42     ch_id = os.environ['Channel_ID']
43     ch = os.environ['Channel_Secret']
44     linebot = LineBotApi(ch_id)
45     webhook = WebhookParser(ch)  
46     application.listen(5000)
47     tornado.ioloop.IOLoop.instance().start()