From 2b56a2f3f06b2e7ddc72c35ea73e1d8bf387124a Mon Sep 17 00:00:00 2001 From: Milad <63479762+MRyderOC@users.noreply.github.com> Date: Fri, 24 Feb 2023 14:28:56 -0600 Subject: [PATCH 1/8] BUG #110 --- src/dfcx_scrapi/core/transition_route_groups.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/dfcx_scrapi/core/transition_route_groups.py b/src/dfcx_scrapi/core/transition_route_groups.py index 0d9990c9..074a4f78 100644 --- a/src/dfcx_scrapi/core/transition_route_groups.py +++ b/src/dfcx_scrapi/core/transition_route_groups.py @@ -320,9 +320,11 @@ def route_groups_to_dataframe( temp_dict.update({"route_group_name": route_group.display_name}) if route.target_page: - temp_dict.update( - {"target_page": all_pages_map[route.target_page]} - ) + t_p = all_pages_map.get(route.target_page) + if not t_p: + t_p = str(route.target_page).split("/")[-1] + + temp_dict.update({"target_page": t_p}) if route.intent: temp_dict.update({"intent": intents_map[route.intent]}) From e627dcbb08b62c026dec8221b11bc86c63d193fe Mon Sep 17 00:00:00 2001 From: Milad <63479762+MRyderOC@users.noreply.github.com> Date: Fri, 24 Feb 2023 14:29:31 -0600 Subject: [PATCH 2/8] BUG #111 --- src/dfcx_scrapi/core/webhooks.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/dfcx_scrapi/core/webhooks.py b/src/dfcx_scrapi/core/webhooks.py index 9731ecab..17128266 100644 --- a/src/dfcx_scrapi/core/webhooks.py +++ b/src/dfcx_scrapi/core/webhooks.py @@ -225,11 +225,13 @@ def update_webhook( webhook_obj.name = webhook_id - # set environment attributes from kwargs - for key, value in kwargs.items(): - setattr(webhook_obj, key, value) - paths = kwargs.keys() - mask = field_mask_pb2.FieldMask(paths=paths) + mask = None + if kwargs: + # set environment attributes from kwargs + for key, value in kwargs.items(): + setattr(webhook_obj, key, value) + paths = kwargs.keys() + mask = field_mask_pb2.FieldMask(paths=paths) client_options = self._set_region(webhook_id) client = services.webhooks.WebhooksClient( @@ -237,7 +239,8 @@ def update_webhook( request = types.webhook.UpdateWebhookRequest() request.webhook = webhook_obj - request.update_mask = mask + if mask: + request.update_mask = mask response = client.update_webhook(request) From dd49a64c4cc11747d90a6c87594c14db93154d4a Mon Sep 17 00:00:00 2001 From: Milad <63479762+MRyderOC@users.noreply.github.com> Date: Fri, 24 Feb 2023 14:38:29 -0600 Subject: [PATCH 3/8] BUG #112 --- src/dfcx_scrapi/tools/webhook_util.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/dfcx_scrapi/tools/webhook_util.py b/src/dfcx_scrapi/tools/webhook_util.py index 6bddb296..526d678c 100644 --- a/src/dfcx_scrapi/tools/webhook_util.py +++ b/src/dfcx_scrapi/tools/webhook_util.py @@ -74,7 +74,9 @@ def build_session_info(parameters): return session_info @staticmethod - def build_response(response_text=None, page_info=None, session_info=None): + def build_response( + response_text=None, page_info=None, session_info=None, action="replace" + ): """Builds a Response object for Dialogflow CX. Provides the JSON object structure expected by DFCX for the Response @@ -85,12 +87,18 @@ def build_response(response_text=None, page_info=None, session_info=None): response_text: The text response to be displayed to the user. Can also be empty string if no response to the user is required. page_info: (Optional) The JSON object returned by build_page_info() - session_info: (Optiona) The JSON object returned by + session_info: (Optional) The JSON object returned by build_session_info() + action: (Optional) Whether messages will replace or append to + the list of messages waiting to be sent to the user. + """ + if action not in ["replace", "append"]: + raise ValueError("`action` should be in ['replace', 'append'].") + action = action.upper() if response_text: response_object = { - 'mergeBehavior': 'REPLACE', + 'mergeBehavior': action, 'messages': [ { 'text': { From bd79d8f843e6836eaf5c416ec805c87650fd0ff7 Mon Sep 17 00:00:00 2001 From: Milad <63479762+MRyderOC@users.noreply.github.com> Date: Fri, 24 Feb 2023 14:46:31 -0600 Subject: [PATCH 4/8] lint fix --- src/dfcx_scrapi/core/transition_route_groups.py | 2 +- src/dfcx_scrapi/tools/webhook_util.py | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/dfcx_scrapi/core/transition_route_groups.py b/src/dfcx_scrapi/core/transition_route_groups.py index 074a4f78..96e6343e 100644 --- a/src/dfcx_scrapi/core/transition_route_groups.py +++ b/src/dfcx_scrapi/core/transition_route_groups.py @@ -322,7 +322,7 @@ def route_groups_to_dataframe( if route.target_page: t_p = all_pages_map.get(route.target_page) if not t_p: - t_p = str(route.target_page).split("/")[-1] + t_p = str(route.target_page).rsplit("/", maxsplit=1)[-1] temp_dict.update({"target_page": t_p}) diff --git a/src/dfcx_scrapi/tools/webhook_util.py b/src/dfcx_scrapi/tools/webhook_util.py index 526d678c..4a26ed7f 100644 --- a/src/dfcx_scrapi/tools/webhook_util.py +++ b/src/dfcx_scrapi/tools/webhook_util.py @@ -75,7 +75,7 @@ def build_session_info(parameters): @staticmethod def build_response( - response_text=None, page_info=None, session_info=None, action="replace" + response_text=None, page_info=None, session_info=None, action='replace' ): """Builds a Response object for Dialogflow CX. @@ -91,10 +91,9 @@ def build_response( build_session_info() action: (Optional) Whether messages will replace or append to the list of messages waiting to be sent to the user. - """ - if action not in ["replace", "append"]: - raise ValueError("`action` should be in ['replace', 'append'].") + if action.casefold() not in ['replace', 'append']: + raise ValueError('`action` should be in ["replace", "append"].') action = action.upper() if response_text: response_object = { From 6a7c857cdd858c8579c67aa3714b71e3add8d6f3 Mon Sep 17 00:00:00 2001 From: Milad <63479762+MRyderOC@users.noreply.github.com> Date: Wed, 15 Mar 2023 12:40:27 -0500 Subject: [PATCH 5/8] BUG #114 --- src/dfcx_scrapi/builders/intents.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/dfcx_scrapi/builders/intents.py b/src/dfcx_scrapi/builders/intents.py index 124dbe05..0a99f3bc 100644 --- a/src/dfcx_scrapi/builders/intents.py +++ b/src/dfcx_scrapi/builders/intents.py @@ -60,6 +60,7 @@ def _include_spaces_to_phrase(self, phrase: List[str], annots: List[str]): A list of strings that represents parameter_id of each part in phrase. """ + chars_to_ignore_at_beginning = ["'", ",", ".", "?", "!"] i = 0 while True: p_curr, a_curr = phrase[i], annots[i] @@ -73,7 +74,13 @@ def _include_spaces_to_phrase(self, phrase: List[str], annots: List[str]): annots.insert(i+1, "") i += 2 elif a_curr and not a_next: - phrase[i+1] = " " + p_next + flag = any( + ch + for ch in chars_to_ignore_at_beginning + if p_next.startswith(ch) + ) + if not flag: + phrase[i+1] = " " + p_next i += 1 elif not a_curr and a_next: phrase[i] = p_curr + " " From d965ddba52315eb5c8952d81d6fbf2eb7a64bf29 Mon Sep 17 00:00:00 2001 From: Milad <63479762+MRyderOC@users.noreply.github.com> Date: Wed, 15 Mar 2023 12:53:50 -0500 Subject: [PATCH 6/8] more readable code --- src/dfcx_scrapi/tools/webhook_util.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/dfcx_scrapi/tools/webhook_util.py b/src/dfcx_scrapi/tools/webhook_util.py index 4a26ed7f..cb799a95 100644 --- a/src/dfcx_scrapi/tools/webhook_util.py +++ b/src/dfcx_scrapi/tools/webhook_util.py @@ -75,7 +75,7 @@ def build_session_info(parameters): @staticmethod def build_response( - response_text=None, page_info=None, session_info=None, action='replace' + response_text=None, page_info=None, session_info=None, append=False ): """Builds a Response object for Dialogflow CX. @@ -90,11 +90,10 @@ def build_response( session_info: (Optional) The JSON object returned by build_session_info() action: (Optional) Whether messages will replace or append to - the list of messages waiting to be sent to the user. + the list of messages waiting to be sent to the use. + Default behavior is to replace. """ - if action.casefold() not in ['replace', 'append']: - raise ValueError('`action` should be in ["replace", "append"].') - action = action.upper() + action = 'APPEND' if append else 'REPLACE' if response_text: response_object = { 'mergeBehavior': action, From 6bea27adb0d2dda318ac639fb5ae6db49522b597 Mon Sep 17 00:00:00 2001 From: Milad <63479762+MRyderOC@users.noreply.github.com> Date: Fri, 24 Mar 2023 10:44:43 -0500 Subject: [PATCH 7/8] docs correction --- src/dfcx_scrapi/tools/webhook_util.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/dfcx_scrapi/tools/webhook_util.py b/src/dfcx_scrapi/tools/webhook_util.py index cb799a95..197a93c8 100644 --- a/src/dfcx_scrapi/tools/webhook_util.py +++ b/src/dfcx_scrapi/tools/webhook_util.py @@ -89,9 +89,9 @@ def build_response( page_info: (Optional) The JSON object returned by build_page_info() session_info: (Optional) The JSON object returned by build_session_info() - action: (Optional) Whether messages will replace or append to - the list of messages waiting to be sent to the use. - Default behavior is to replace. + append: (Optional) Whether messages will append or replace to + the list of messages waiting to be sent to the user. If append + set to False it will replace the messages. """ action = 'APPEND' if append else 'REPLACE' if response_text: From 98143ab13eb01cce2a11f1283e054995d7c124cc Mon Sep 17 00:00:00 2001 From: Milad <63479762+MRyderOC@users.noreply.github.com> Date: Mon, 27 Mar 2023 15:36:31 -0500 Subject: [PATCH 8/8] revert changes for update_webhook --- src/dfcx_scrapi/core/webhooks.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/dfcx_scrapi/core/webhooks.py b/src/dfcx_scrapi/core/webhooks.py index 17128266..9731ecab 100644 --- a/src/dfcx_scrapi/core/webhooks.py +++ b/src/dfcx_scrapi/core/webhooks.py @@ -225,13 +225,11 @@ def update_webhook( webhook_obj.name = webhook_id - mask = None - if kwargs: - # set environment attributes from kwargs - for key, value in kwargs.items(): - setattr(webhook_obj, key, value) - paths = kwargs.keys() - mask = field_mask_pb2.FieldMask(paths=paths) + # set environment attributes from kwargs + for key, value in kwargs.items(): + setattr(webhook_obj, key, value) + paths = kwargs.keys() + mask = field_mask_pb2.FieldMask(paths=paths) client_options = self._set_region(webhook_id) client = services.webhooks.WebhooksClient( @@ -239,8 +237,7 @@ def update_webhook( request = types.webhook.UpdateWebhookRequest() request.webhook = webhook_obj - if mask: - request.update_mask = mask + request.update_mask = mask response = client.update_webhook(request)