Skip to content
This repository has been archived by the owner on Dec 17, 2023. It is now read-only.

docs(samples): add update intent code sample #357

Merged
merged 20 commits into from Aug 17, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
28 changes: 28 additions & 0 deletions 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
nicain marked this conversation as resolved.
Show resolved Hide resolved
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
61 changes: 61 additions & 0 deletions 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