Spaces:
Runtime error
Runtime error
File size: 4,978 Bytes
4cf8d83 3f8ccf9 4cf8d83 3f8ccf9 4cf8d83 b439c42 3f8ccf9 b439c42 3f8ccf9 b439c42 e7eca0d 3f8ccf9 4cf8d83 e7eca0d 3f8ccf9 |
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 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 |
import os
import json
import requests
from dotenv import load_dotenv
load_dotenv()
# os.environ.get('SUPABASE_URL')
def create_text_message(message_text, whatsapp_id):
data = {
"preview_url": False,
"recipient_type": "individual",
"to": whatsapp_id,
"type": "text",
"text": {
"body": message_text
}
}
return data
def create_button_objects(button_options):
button_arr = []
for option in button_options:
button_choice = {
"type": "reply",
"reply": {
"id": "inquiry-yes",
"title": "add"
}
}
button_arr.append(button_choice)
return button_arr
def create_interactive_message(message_text, button_options, whatsapp_id):
button_arr = create_button_objects(button_options)
data = {
"to": whatsapp_id,
"type": "interactive",
"interactive": {
"type": "button",
# "header": { },
"body": {
"text": message_text
},
# "footer": { },
"action": {
"buttons": button_arr
}
}
}
return data
def generate_message(data_json):
""" pending
REQUIREMENTS
- implement logging of message
- have a very simple activity which allows for different dialogue
* add - Add the numbers, 1+1, 2+2
* subtract - Subtract the numbers, 1-1, 2-2
* menu - Choose one
- send message data to retrieve dialogue state
- retrieve response and build message object
- send message object
Need to make util functions that apply to both /nlu and /conversation_manager
"""
message_data = data_json.get('message_data', '')
context_data = data_json.get('context', '')
whatsapp_id = message_data['message']['_vnd']['v1']['chat']['owner'].replace("+","")
user_message = message_data['message']['text']['body']
if user_message == '':
message_package = {
'messages': [],
'input_prompt': "Welcome to our math practice. What would you like to try? Type add or subtract.",
'state': "welcome-sequence"
}
elif user_message == 'add':
message_package = {
'messages': [
"Great, let's do some addition",
"First, we'll start with single digits.",
"Type your response as a number. For example, for '1 + 1', you'd write 2."
],
'input_prompt': "Here's the first one... What's 2+2?",
'state': "add-question-sequence"
}
elif user_message == 'subtract':
message_package = {
'messages': [
"Time for some subtraction!",
"Type your response as a number. For example, for '1 - 1', you'd write 0."
],
'input_prompt': "Here's the first one... What's 3-1?",
'state': "subtract-question-sequence"
}
else:
message_package = {
'messages': [
"Hmmm...sorry friend. I'm not really sure what to do."
],
'input_prompt': "Please type add or subtract to start a math activity.",
'state': "reprompt-menu-options"
}
headers = {
'Authorization': f"Bearer {os.environ.get('TURN_AUTHENTICATION_TOKEN')}",
'Content-Type': 'application/json'
}
for message in message_package['messages']:
data = create_text_message(message, whatsapp_id)
r = requests.post(f'https://whatsapp.turn.io/v1/messages', data=json.dumps(data), headers=headers)
# print("==================")
# print("Headers")
# print(headers)
# print("Data")
# print(data)
# print("Request Info")
# print(r)
# print("==================")
context = {"context":{"user": whatsapp_id, "state": message_package['state'], "bot_message": message_package['input_prompt'], "user_message": user_message}}
return context
# data = {
# "to": whatsapp_id,
# "type": "interactive",
# "interactive": {
# "type": "button",
# # "header": { },
# "body": {
# "text": "Did I answer your question?"
# },
# # "footer": { },
# "action": {
# "buttons": [
# {
# "type": "reply",
# "reply": {
# "id": "inquiry-yes",
# "title": "Yes"
# }
# },
# {
# "type": "reply",
# "reply": {
# "id": "inquiry-no",
# "title": "No"
# }
# }
# ]
# }
# }
# } |