-
Notifications
You must be signed in to change notification settings - Fork 80
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Manage Whatsapp Flows #1224
base: master
Are you sure you want to change the base?
Manage Whatsapp Flows #1224
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -67,7 +67,7 @@ | |||||||||||||||||||||||||||||||||||||||||||||
from websockets import connect | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
from .actions.models import ActionParameterType | ||||||||||||||||||||||||||||||||||||||||||||||
from .constants import EventClass, UserActivityType | ||||||||||||||||||||||||||||||||||||||||||||||
from .constants import EventClass, UserActivityType, FlowCategories, FlowTemplates | ||||||||||||||||||||||||||||||||||||||||||||||
from .constants import ( | ||||||||||||||||||||||||||||||||||||||||||||||
MaskingStrategy, | ||||||||||||||||||||||||||||||||||||||||||||||
SYSTEM_TRIGGERED_UTTERANCES, | ||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -1300,6 +1300,22 @@ def reload_model(bot: Text, email: Text): | |||||||||||||||||||||||||||||||||||||||||||||
data={"username": email, "exception": exc, "status": status}, | ||||||||||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
@staticmethod | ||||||||||||||||||||||||||||||||||||||||||||||
def validate_add_flow_request(data: Dict): | ||||||||||||||||||||||||||||||||||||||||||||||
required_keys = ['name', 'categories', 'template'] | ||||||||||||||||||||||||||||||||||||||||||||||
missing_keys = [key for key in required_keys if key not in data] | ||||||||||||||||||||||||||||||||||||||||||||||
if missing_keys: | ||||||||||||||||||||||||||||||||||||||||||||||
raise AppException(f'Missing {", ".join(missing_keys)} in request body!') | ||||||||||||||||||||||||||||||||||||||||||||||
categories = data.get('categories') | ||||||||||||||||||||||||||||||||||||||||||||||
template = data.get('template') | ||||||||||||||||||||||||||||||||||||||||||||||
invalid_categories = [category for category in categories | ||||||||||||||||||||||||||||||||||||||||||||||
if category not in [flow_category.value for flow_category in FlowCategories]] | ||||||||||||||||||||||||||||||||||||||||||||||
invalid_template = template if template not in [flow_template.value for flow_template in FlowTemplates] else "" | ||||||||||||||||||||||||||||||||||||||||||||||
if invalid_categories: | ||||||||||||||||||||||||||||||||||||||||||||||
raise AppException(f'Invalid categories {", ".join(invalid_categories)} in request body!') | ||||||||||||||||||||||||||||||||||||||||||||||
if invalid_template: | ||||||||||||||||||||||||||||||||||||||||||||||
raise AppException(f'Invalid template {template} in request body!') | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
@staticmethod | ||||||||||||||||||||||||||||||||||||||||||||||
def validate_create_template_request(data: Dict): | ||||||||||||||||||||||||||||||||||||||||||||||
required_keys = ["name", "category", "components", "language"] | ||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -1695,13 +1711,16 @@ def execute_http_request( | |||||||||||||||||||||||||||||||||||||||||||||
timeout=kwargs.get("timeout"), | ||||||||||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||||||||||
elif request_method.lower() in ["post", "put", "patch"]: | ||||||||||||||||||||||||||||||||||||||||||||||
response = session.request( | ||||||||||||||||||||||||||||||||||||||||||||||
request_method.upper(), | ||||||||||||||||||||||||||||||||||||||||||||||
http_url, | ||||||||||||||||||||||||||||||||||||||||||||||
json=request_body, | ||||||||||||||||||||||||||||||||||||||||||||||
headers=headers, | ||||||||||||||||||||||||||||||||||||||||||||||
timeout=kwargs.get("timeout"), | ||||||||||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||||||||||
if kwargs.get('files'): | ||||||||||||||||||||||||||||||||||||||||||||||
response = session.request( | ||||||||||||||||||||||||||||||||||||||||||||||
request_method.upper(), http_url, data=request_body, headers=headers, | ||||||||||||||||||||||||||||||||||||||||||||||
timeout=kwargs.get('timeout'), files=kwargs.get('files') | ||||||||||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||||||||||
else: | ||||||||||||||||||||||||||||||||||||||||||||||
response = session.request( | ||||||||||||||||||||||||||||||||||||||||||||||
request_method.upper(), http_url, json=request_body, headers=headers, | ||||||||||||||||||||||||||||||||||||||||||||||
timeout=kwargs.get('timeout') | ||||||||||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+1714
to
+1723
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Handle file uploads in HTTP requests more robustly. The method + if kwargs.get('files') and not isinstance(kwargs.get('files'), dict):
+ raise AppException('Files must be provided as a dictionary!') Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||
else: | ||||||||||||||||||||||||||||||||||||||||||||||
raise AppException("Invalid request method!") | ||||||||||||||||||||||||||||||||||||||||||||||
logger.debug("raw response: " + str(response.text)) | ||||||||||||||||||||||||||||||||||||||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ensure proper validation of
categories
andtemplate
invalidate_add_flow_request
.The method
validate_add_flow_request
checks for missing keys, invalid categories, and templates. However, it does not handle cases wherecategories
ortemplate
might be empty or have incorrect types. Consider adding checks to ensure these fields are not empty and are of the expected type.Committable suggestion