-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathwhatsapp.py
59 lines (50 loc) · 2.6 KB
/
whatsapp.py
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
# from flask import Flask, request
from typing import Text, Dict
from sanic import Sanic
from sanic.response import HTTPResponse
from sanic.request import Request
import uuid
from sms_modifier import JSONModifier, SMSModification, SendAndRecieveRasa, StoreTemporaryData, checkElements
RASA_URL = "http://localhost:5005/webhooks/rest/webhook/" #Default for rasa
RESTART_RESPONSE = "Please start your conversation again." # DEfualt
app = Sanic(str(uuid.uuid4())) #Default
DEFAULT_ERROR_MESSAGE = "Please only select from the given category.\nPlease type '/restart' to restart the conversation"
@app.route('/incoming', methods = ['POST'])
def receiveIncomingMessage(request):
message = request.json
"""
TODO: Change the below three lines according to your service provider
"""
user_message = message['message']
senderID = message['sender']
metadata = message.get('metadata', None)
if user_message == "/restart":
#If the user gave /restart
try:
JSONModifier.clearData(senderID = senderID)
SendAndRecieveRasa.sendResponse(user_message = user_message, senderID = senderID, url = RASA_URL)
except:
print("No key but restarted")
return HTTPResponse(RESTART_RESPONSE)
#Check_initial_user returns true for initial user or false for error or payload
check_initial_user = SMSModification.checkInitialUser(message = user_message, senderID = senderID) #Check if it the initial user or not
if check_initial_user is True:
# Initaial user
user_message = user_message
elif check_initial_user is False:
if StoreTemporaryData().findData(senderID):
rasa_response = SendAndRecieveRasa.sendResponse(user_message = user_message, senderID = senderID, url = RASA_URL, metadata = metadata)
# print(rasa_response.json())
converted_bot_response = checkElements(senderID = senderID, payload = rasa_response.json()).checkAll()
StoreTemporaryData().deleteData(senderID)
return HTTPResponse(converted_bot_response)
JSONModifier.clearData(senderID = senderID)
return HTTPResponse(DEFAULT_ERROR_MESSAGE)
else:
user_message = check_initial_user
rasa_response = SendAndRecieveRasa.sendResponse(user_message = user_message, senderID = senderID, url = RASA_URL, metadata = metadata)
# print(rasa_response.json())
converted_bot_response = checkElements(senderID = senderID, payload = rasa_response.json()).checkAll()
return HTTPResponse(converted_bot_response)
if __name__ == "__main__":
app.run(debug = True, port = 5000, host = '0.0.0.0')