From fab916f1f239b7425371abb224b65965913c0481 Mon Sep 17 00:00:00 2001 From: Gal Zahavi <38544478+galz10@users.noreply.github.com> Date: Tue, 17 Aug 2021 09:15:47 -0700 Subject: [PATCH] docs(samples): add update intent code sample (#357) * Added Update Intent Snippet and Test * Deleted Setting Env Vars * Fixed Lint Issues * Fixed Lint and Build Issue * Fixed Build Issue * Changed tests to pytests * Removed delete and create agent from test * Fixed Import Order * Deleted unused import * Removed Language from update_intent Snippet * Added copyright * Changed intent name to random name * delete intent after testing * fix test * remove contains * Added Create Intent * fix lint Co-authored-by: Anthonios Partheniou --- samples/snippets/update_intent.py | 28 ++++++++++++ samples/snippets/update_intent_test.py | 61 ++++++++++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 samples/snippets/update_intent.py create mode 100644 samples/snippets/update_intent_test.py diff --git a/samples/snippets/update_intent.py b/samples/snippets/update_intent.py new file mode 100644 index 000000000..906ed84e4 --- /dev/null +++ b/samples/snippets/update_intent.py @@ -0,0 +1,28 @@ +# Copyright 2021 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from google.cloud.dialogflow_v2 import IntentsClient +from google.protobuf import field_mask_pb2 + + +def update_intent(project_id, intent_id, display_name): + intents_client = IntentsClient() + + intent_name = intents_client.intent_path(project_id, intent_id) + intent = intents_client.get_intent(request={"name": intent_name}) + + intent.display_name = display_name + update_mask = field_mask_pb2.FieldMask(paths=["display_name"]) + response = intents_client.update_intent(intent=intent, update_mask=update_mask) + return response diff --git a/samples/snippets/update_intent_test.py b/samples/snippets/update_intent_test.py new file mode 100644 index 000000000..1feb298f4 --- /dev/null +++ b/samples/snippets/update_intent_test.py @@ -0,0 +1,61 @@ +# Copyright 2021 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import uuid + +from google.cloud.dialogflow_v2.services.agents.client import AgentsClient +from google.cloud.dialogflow_v2.services.intents.client import IntentsClient +from google.cloud.dialogflow_v2.types.intent import Intent + +import pytest + +from update_intent import update_intent + +PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT") +pytest.INTENT_ID = None + + +def create_intent(project_id): + intents_client = IntentsClient() + + parent = AgentsClient.agent_path(project_id) + + intent = Intent() + + intent.display_name = "fake_intent" + + intents = intents_client.create_intent(request={"parent": parent, "intent": intent}) + + return intents.name.split("/")[4] + + +@pytest.fixture(scope="function", autouse=True) +def setup_teardown(): + pytest.INTENT_ID = create_intent(project_id=PROJECT_ID) + print("Created Intent in setUp") + + +def test_update_intent(): + + fake_intent = "fake_intent_{}".format(uuid.uuid4()) + + actualResponse = update_intent(PROJECT_ID, pytest.INTENT_ID, fake_intent) + expectedResponse = fake_intent + + intents_client = IntentsClient() + + intents_client.delete_intent(name=actualResponse.name) + + assert actualResponse.display_name == expectedResponse