-
Notifications
You must be signed in to change notification settings - Fork 79
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
Broadcast template fix #1592
Broadcast template fix #1592
Changes from 3 commits
656a2e4
d8847a2
5481027
e154860
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 | ||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -89,10 +89,12 @@ def log(**kwargs): | |||||||||||||||||||||||||||||||||||||||||||||||||
template_name = self.config['template_name'] | ||||||||||||||||||||||||||||||||||||||||||||||||||
language_code = self.config['language_code'] | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||
raw_template = self.__get_template(template_name, language_code) | ||||||||||||||||||||||||||||||||||||||||||||||||||
raw_template, template_exception = self.__get_template(template_name, language_code) | ||||||||||||||||||||||||||||||||||||||||||||||||||
raw_template = raw_template if raw_template else [] | ||||||||||||||||||||||||||||||||||||||||||||||||||
MessageBroadcastProcessor.update_broadcast_logs_with_template( | ||||||||||||||||||||||||||||||||||||||||||||||||||
self.reference_id, self.event_id, raw_template=raw_template, | ||||||||||||||||||||||||||||||||||||||||||||||||||
log_type=MessageBroadcastLogType.send.value, retry_count=0 | ||||||||||||||||||||||||||||||||||||||||||||||||||
log_type=MessageBroadcastLogType.send.value, retry_count=0, | ||||||||||||||||||||||||||||||||||||||||||||||||||
template_exception=template_exception | ||||||||||||||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||
def __send_using_configuration(self, recipients: List): | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -105,7 +107,7 @@ def __send_using_configuration(self, recipients: List): | |||||||||||||||||||||||||||||||||||||||||||||||||
namespace = template_config.get("namespace") | ||||||||||||||||||||||||||||||||||||||||||||||||||
lang = template_config["language"] | ||||||||||||||||||||||||||||||||||||||||||||||||||
template_params = self._get_template_parameters(template_config) | ||||||||||||||||||||||||||||||||||||||||||||||||||
raw_template = self.__get_template(template_id, lang) | ||||||||||||||||||||||||||||||||||||||||||||||||||
raw_template, template_exception = self.__get_template(template_id, lang) | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||
# if there's no template body, pass params as None for all recipients | ||||||||||||||||||||||||||||||||||||||||||||||||||
template_params = template_params * len(recipients) if template_params else [template_params] * len(recipients) | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -128,7 +130,7 @@ def __send_using_configuration(self, recipients: List): | |||||||||||||||||||||||||||||||||||||||||||||||||
self.bot, MessageBroadcastLogType.send.value, self.reference_id, api_response=response, | ||||||||||||||||||||||||||||||||||||||||||||||||||
status=status, recipient=recipient, template_params=t_params, template=raw_template, | ||||||||||||||||||||||||||||||||||||||||||||||||||
event_id=self.event_id, template_name=template_id, language_code=lang, namespace=namespace, | ||||||||||||||||||||||||||||||||||||||||||||||||||
retry_count=0 | ||||||||||||||||||||||||||||||||||||||||||||||||||
retry_count=0, template_exception=template_exception | ||||||||||||||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||||||||||||||
MessageBroadcastProcessor.add_event_log( | ||||||||||||||||||||||||||||||||||||||||||||||||||
self.bot, MessageBroadcastLogType.common.value, self.reference_id, failure_cnt=failure_cnt, total=total, | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -151,14 +153,17 @@ def resend_broadcast(self): | |||||||||||||||||||||||||||||||||||||||||||||||||
failure_cnt = 0 | ||||||||||||||||||||||||||||||||||||||||||||||||||
total = len(required_logs) | ||||||||||||||||||||||||||||||||||||||||||||||||||
skipped_count = len(broadcast_logs) - total | ||||||||||||||||||||||||||||||||||||||||||||||||||
template_name = required_logs[0]["template_name"] | ||||||||||||||||||||||||||||||||||||||||||||||||||
language_code = required_logs[0]["language_code"] | ||||||||||||||||||||||||||||||||||||||||||||||||||
template, template_exception = self.__get_template(template_name, language_code) | ||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+156
to
+158
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. Check if The code assumes that Apply this diff to add a check: +if not required_logs:
+ logger.warning("No required logs found for resending broadcast.")
+ return
template_name = required_logs[0]["template_name"]
language_code = required_logs[0]["language_code"]
template, template_exception = self.__get_template(template_name, language_code) 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||
for log in required_logs: | ||||||||||||||||||||||||||||||||||||||||||||||||||
template_id = log["template_name"] | ||||||||||||||||||||||||||||||||||||||||||||||||||
namespace = log["namespace"] | ||||||||||||||||||||||||||||||||||||||||||||||||||
language_code = log["language_code"] | ||||||||||||||||||||||||||||||||||||||||||||||||||
components = log["template_params"] | ||||||||||||||||||||||||||||||||||||||||||||||||||
recipient = log["recipient"] | ||||||||||||||||||||||||||||||||||||||||||||||||||
template = log["template"] | ||||||||||||||||||||||||||||||||||||||||||||||||||
template = log.template if log.template else template | ||||||||||||||||||||||||||||||||||||||||||||||||||
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. Correct dictionary access for The code uses Apply this diff to fix the issue: -template = log.template if log.template else template
+template = log["template"] if log.get("template") else template 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||
response = channel_client.send_template_message(template_id, recipient, language_code, components, | ||||||||||||||||||||||||||||||||||||||||||||||||||
namespace) | ||||||||||||||||||||||||||||||||||||||||||||||||||
status = "Failed" if response.get("error") else "Success" | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -169,7 +174,7 @@ def resend_broadcast(self): | |||||||||||||||||||||||||||||||||||||||||||||||||
self.bot, MessageBroadcastLogType.resend.value, self.reference_id, api_response=response, | ||||||||||||||||||||||||||||||||||||||||||||||||||
status=status, recipient=recipient, template_params=components, template=template, | ||||||||||||||||||||||||||||||||||||||||||||||||||
event_id=self.event_id, template_name=template_id, language_code=language_code, namespace=namespace, | ||||||||||||||||||||||||||||||||||||||||||||||||||
retry_count=retry_count, | ||||||||||||||||||||||||||||||||||||||||||||||||||
retry_count=retry_count, template_exception=template_exception | ||||||||||||||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||||||||||||||
kwargs = { | ||||||||||||||||||||||||||||||||||||||||||||||||||
f"resend_count_{retry_count}": total, | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -197,6 +202,16 @@ def __get_client(self): | |||||||||||||||||||||||||||||||||||||||||||||||||
raise AppException(f"Whatsapp channel config not found!") | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||
def __get_template(self, name: Text, language: Text): | ||||||||||||||||||||||||||||||||||||||||||||||||||
for template in BSP360Dialog(self.bot, self.user).list_templates(**{"business_templates.name": name}): | ||||||||||||||||||||||||||||||||||||||||||||||||||
if template.get("language") == language: | ||||||||||||||||||||||||||||||||||||||||||||||||||
return template.get("components") | ||||||||||||||||||||||||||||||||||||||||||||||||||
template_exception = None | ||||||||||||||||||||||||||||||||||||||||||||||||||
template = [] | ||||||||||||||||||||||||||||||||||||||||||||||||||
try: | ||||||||||||||||||||||||||||||||||||||||||||||||||
for template in BSP360Dialog(self.bot, self.user).list_templates(**{"business_templates.name": name}): | ||||||||||||||||||||||||||||||||||||||||||||||||||
if template.get("language") == language: | ||||||||||||||||||||||||||||||||||||||||||||||||||
template = template.get("components") | ||||||||||||||||||||||||||||||||||||||||||||||||||
break | ||||||||||||||||||||||||||||||||||||||||||||||||||
return template, template_exception | ||||||||||||||||||||||||||||||||||||||||||||||||||
except Exception as e: | ||||||||||||||||||||||||||||||||||||||||||||||||||
logger.exception(e) | ||||||||||||||||||||||||||||||||||||||||||||||||||
template_exception = str(e) | ||||||||||||||||||||||||||||||||||||||||||||||||||
return template, template_exception | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+205
to
+217
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. 🛠️ Refactor suggestion Avoid variable shadowing of Using Apply this diff to rename the loop variable: def __get_template(self, name: Text, language: Text):
template_exception = None
template_components = []
try:
- for template in BSP360Dialog(self.bot, self.user).list_templates(**{"business_templates.name": name}):
- if template.get("language") == language:
- template = template.get("components")
+ for tmpl in BSP360Dialog(self.bot, self.user).list_templates(**{"business_templates.name": name}):
+ if tmpl.get("language") == language:
+ template_components = tmpl.get("components")
break
- return template, template_exception
+ return template_components, template_exception
except Exception as e:
logger.exception(e)
template_exception = str(e)
- return template, template_exception
+ return template_components, template_exception 📝 Committable suggestion
Suggested change
|
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
template_exception
is handled after calling__get_template
In the
__send_using_configuration
method,template_exception
is retrieved but not checked or acted upon. Unhandled exceptions might lead to unexpected behavior.Apply this diff to handle
template_exception
: