-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjarvis.py
More file actions
111 lines (92 loc) · 4.13 KB
/
Copy pathjarvis.py
File metadata and controls
111 lines (92 loc) · 4.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import json
import os
import requests
import sys
from flask import Flask, request
import config
import modules
from templates.text import TextTemplate
ACCESS_TOKEN = os.environ.get('ACCESS_TOKEN', config.ACCESS_TOKEN)
VERIFY_TOKEN = os.environ.get('VERIFY_TOKEN', config.VERIFY_TOKEN)
app = Flask(__name__)
@app.route('/')
def about():
return 'Just A Rather Very Intelligent System, now on Messenger!'
@app.route('/process/')
def process():
return json.dumps(modules.ans(request.args.get('q')))
@app.route('/search/')
def search():
inp=request.args.get('q')
x=inp.split(' ')
if x[0]=='mail':
sys.modules['modules.src.' + 'mail'].process(x[1],inp)
return json.dumps(TextTemplate(
'SENT MAIL').get_message())
elif x[0]=='solve':
k=sys.modules['modules.src.' + 'solve'].process(x[1])
return json.dumps(TextTemplate(k).get_message())
else:
return json.dumps(modules.ans(request.args.get('q')))
@app.route('/webhook/', methods=['GET', 'POST'])
def webhook():
if request.method == 'POST':
data = request.get_json(force=True)
messaging_events = data['entry'][0]['messaging']
for event in messaging_events:
sender = event['sender']['id']
message = None
if 'message' in event and 'text' in event['message']:
if 'quick_reply' in event['message'] and 'payload' in event['message']['quick_reply']:
quick_reply_payload = event['message']['quick_reply']['payload']
x=quick_reply_payload.split(' ')
if x[0]=='mail':
sys.modules['modules.src.' + 'mail'].process(x[1],inp)
message= TextTemplate(
'SENT MAIL').get_message()
elif x[0]=='solve':
k=sys.modules['modules.src.' + 'solve'].process(x[1])
message= TextTemplate(k).get_message()
else:
message= modules.ans(quick_reply_payload)
else:
text = event['message']['text']
x=text.split(' ')
if x[0]=='mail':
sys.modules['modules.src.' + 'mail'].process(x[1],inp)
message= TextTemplate(
'SENT MAIL').get_message()
elif x[0]=='solve':
k=sys.modules['modules.src.' + 'solve'].process(x[1])
message= TextTemplate(k).get_message()
else:
message= modules.ans(quick_reply_payload,sender=sender)
if 'postback' in event and 'payload' in event['postback']:
postback_payload = event['postback']['payload']
x=postback_payload.split(' ')
if x[0]=='mail':
sys.modules['modules.src.' + 'mail'].process(x[1],inp)
message= TextTemplate(
'SENT MAIL').get_message()
elif x[0]=='solve':
k=sys.modules['modules.src.' + 'solve'].process(x[1])
message=TextTemplate(k).get_message()
else:
message=modules.ans(postback_payload,sender=sender,postback=True)
if message is not None:
payload = {
'recipient': {
'id': sender
},
'message': message
}
r = requests.post('https://graph.facebook.com/v2.6/me/messages', params={'access_token': ACCESS_TOKEN},
json=payload)
return '200 OK' # 200 OK
elif request.method == 'GET': # Verification
if request.args.get('hub.verify_token') == VERIFY_TOKEN:
return request.args.get('hub.challenge')
else:
return 'Error, wrong validation token'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 5000)), debug=True)