From 71c70fcd144bac0e6cc48a9cb59ed895873032a2 Mon Sep 17 00:00:00 2001 From: Bu Sun Kim <8822365+busunkim96@users.noreply.github.com> Date: Tue, 1 Mar 2022 04:40:07 -0700 Subject: [PATCH 1/9] chore: update sync-repo-settings (#474) Add GH Action checks, remove Kokoro, and update required versions of samples. Co-authored-by: Karl Weinmeister <11586922+kweinmeister@users.noreply.github.com> --- .github/sync-repo-settings.yaml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml index def8ccfa5..85f9654c5 100644 --- a/.github/sync-repo-settings.yaml +++ b/.github/sync-repo-settings.yaml @@ -7,8 +7,19 @@ branchProtectionRules: requiresCodeOwnerReviews: true requiresStrictStatusChecks: true requiredStatusCheckContexts: - - 'Kokoro' - - 'cla/google' + - 'cla/google', + - 'OwlBot Post Processor', + - 'docs', + - 'docfx', + - 'lint', + - 'unit (3.6)', + - 'unit (3.7)', + - 'unit (3.8)', + - 'unit (3.9)', + - 'unit (3.10)', + - 'cover' - 'Samples - Lint' - 'Samples - Python 3.7' - 'Samples - Python 3.8' + - 'Samples - Python 3.9' + - 'Samples - Python 3.10' From 5068e82cc5a1578f78ed7e324ee7ba1fa132ea42 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Tue, 1 Mar 2022 12:30:17 +0000 Subject: [PATCH 2/9] chore(deps): update actions/setup-python action to v3 (#477) Source-Link: https://github.com/googleapis/synthtool/commit/571ee2c3b26182429eddcf115122ee545d7d3787 Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:660abdf857d3ab9aabcd967c163c70e657fcc5653595c709263af5f3fa23ef67 --- .github/.OwlBot.lock.yaml | 2 +- .github/sync-repo-settings.yaml | 24 ++++++++++++------------ .github/workflows/docs.yml | 4 ++-- .github/workflows/lint.yml | 2 +- .github/workflows/unittest.yml | 4 ++-- 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml index 39ad3cecd..d9a55fa40 100644 --- a/.github/.OwlBot.lock.yaml +++ b/.github/.OwlBot.lock.yaml @@ -13,4 +13,4 @@ # limitations under the License. docker: image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest - digest: sha256:d22cd2ddce65fdac6986f115563faf2fc81482b09dfbea83ac2808c92ecfdff0 + digest: sha256:660abdf857d3ab9aabcd967c163c70e657fcc5653595c709263af5f3fa23ef67 diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml index 85f9654c5..63d45e6b3 100644 --- a/.github/sync-repo-settings.yaml +++ b/.github/sync-repo-settings.yaml @@ -7,19 +7,19 @@ branchProtectionRules: requiresCodeOwnerReviews: true requiresStrictStatusChecks: true requiredStatusCheckContexts: - - 'cla/google', - - 'OwlBot Post Processor', - - 'docs', - - 'docfx', - - 'lint', - - 'unit (3.6)', - - 'unit (3.7)', - - 'unit (3.8)', - - 'unit (3.9)', - - 'unit (3.10)', + - 'cla/google' + - 'OwlBot Post Processor' + - 'docs' + - 'docfx' + - 'lint' + - 'unit (3.6)' + - 'unit (3.7)' + - 'unit (3.8)' + - 'unit (3.9)' + - 'unit (3.10)' - 'cover' - 'Samples - Lint' - 'Samples - Python 3.7' - - 'Samples - Python 3.8' + - 'Samples - Python 3.8' - 'Samples - Python 3.9' - - 'Samples - Python 3.10' + - 'Samples - Python 3.10' diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index f7b8344c4..cca4e98bf 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -10,7 +10,7 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Setup Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v3 with: python-version: "3.10" - name: Install nox @@ -26,7 +26,7 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Setup Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v3 with: python-version: "3.10" - name: Install nox diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 1e8b05c3d..f687324ef 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -10,7 +10,7 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Setup Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v3 with: python-version: "3.10" - name: Install nox diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml index 074ee2504..d3003e09e 100644 --- a/.github/workflows/unittest.yml +++ b/.github/workflows/unittest.yml @@ -13,7 +13,7 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Setup Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v3 with: python-version: ${{ matrix.python }} - name: Install nox @@ -39,7 +39,7 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Setup Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v3 with: python-version: "3.10" - name: Install coverage From e0f1ba0585edd940723b03426cc9d3c357714d53 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Thu, 3 Mar 2022 00:26:23 +0000 Subject: [PATCH 3/9] chore(deps): update actions/checkout action to v3 (#478) Source-Link: https://github.com/googleapis/synthtool/commit/ca879097772aeec2cbb971c3cea8ecc81522b68a Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:6162c384d685c5fe22521d3f37f6fc732bf99a085f6d47b677dbcae97fc21392 --- .github/.OwlBot.lock.yaml | 2 +- .github/workflows/docs.yml | 4 ++-- .github/workflows/lint.yml | 2 +- .github/workflows/unittest.yml | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml index d9a55fa40..480226ac0 100644 --- a/.github/.OwlBot.lock.yaml +++ b/.github/.OwlBot.lock.yaml @@ -13,4 +13,4 @@ # limitations under the License. docker: image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest - digest: sha256:660abdf857d3ab9aabcd967c163c70e657fcc5653595c709263af5f3fa23ef67 + digest: sha256:6162c384d685c5fe22521d3f37f6fc732bf99a085f6d47b677dbcae97fc21392 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index cca4e98bf..b46d7305d 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Setup Python uses: actions/setup-python@v3 with: @@ -24,7 +24,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Setup Python uses: actions/setup-python@v3 with: diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index f687324ef..f512a4960 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Setup Python uses: actions/setup-python@v3 with: diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml index d3003e09e..e87fe5b7b 100644 --- a/.github/workflows/unittest.yml +++ b/.github/workflows/unittest.yml @@ -11,7 +11,7 @@ jobs: python: ['3.6', '3.7', '3.8', '3.9', '3.10'] steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Setup Python uses: actions/setup-python@v3 with: @@ -37,7 +37,7 @@ jobs: - unit steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Setup Python uses: actions/setup-python@v3 with: From 4a62e80e045639061779bb097dacab744276973a Mon Sep 17 00:00:00 2001 From: Anthonios Partheniou Date: Fri, 4 Mar 2022 11:51:32 -0500 Subject: [PATCH 4/9] fix(deps): require google-api-core>=1.31.5, >=2.3.2 (#479) fix(deps): require proto-plus>=1.15.0 --- setup.py | 4 ++-- testing/constraints-3.6.txt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/setup.py b/setup.py index 8fc21dbdb..4ad9c769e 100644 --- a/setup.py +++ b/setup.py @@ -25,8 +25,8 @@ # NOTE: Maintainers, please do not require google-api-core>=2.x.x # Until this issue is closed # https://github.com/googleapis/google-cloud-python/issues/10566 - "google-api-core[grpc] >= 1.28.0, <3.0.0dev", - "proto-plus >= 1.10.0", + "google-api-core[grpc] >= 1.31.5, <3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0", + "proto-plus >= 1.15.0", ] package_root = os.path.abspath(os.path.dirname(__file__)) diff --git a/testing/constraints-3.6.txt b/testing/constraints-3.6.txt index 30a8ed74a..be5a64f35 100644 --- a/testing/constraints-3.6.txt +++ b/testing/constraints-3.6.txt @@ -4,5 +4,5 @@ # Pin the version to the lower bound. # e.g., if setup.py has "google-cloud-foo >= 1.14.0, < 2.0.0dev", # Then this file should have google-cloud-foo==1.14.0 -google-api-core==1.28.0 -proto-plus==1.10.0 +google-api-core==1.31.5 +proto-plus==1.15.0 From ac6119bd7d14a004799002c87a8e1e3968816af2 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Fri, 4 Mar 2022 12:51:37 -0500 Subject: [PATCH 5/9] chore: Adding support for pytest-xdist and pytest-parallel (#480) Source-Link: https://github.com/googleapis/synthtool/commit/82f5cb283efffe96e1b6cd634738e0e7de2cd90a Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:5d8da01438ece4021d135433f2cf3227aa39ef0eaccc941d62aa35e6902832ae Co-authored-by: Owl Bot Co-authored-by: Anthonios Partheniou --- .github/.OwlBot.lock.yaml | 2 +- samples/snippets/noxfile.py | 80 +++++++++++++++++++++---------------- 2 files changed, 47 insertions(+), 35 deletions(-) diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml index 480226ac0..7e08e05a3 100644 --- a/.github/.OwlBot.lock.yaml +++ b/.github/.OwlBot.lock.yaml @@ -13,4 +13,4 @@ # limitations under the License. docker: image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest - digest: sha256:6162c384d685c5fe22521d3f37f6fc732bf99a085f6d47b677dbcae97fc21392 + digest: sha256:5d8da01438ece4021d135433f2cf3227aa39ef0eaccc941d62aa35e6902832ae diff --git a/samples/snippets/noxfile.py b/samples/snippets/noxfile.py index 20cdfc620..4c808af73 100644 --- a/samples/snippets/noxfile.py +++ b/samples/snippets/noxfile.py @@ -188,42 +188,54 @@ def _session_tests( # check for presence of tests test_list = glob.glob("*_test.py") + glob.glob("test_*.py") test_list.extend(glob.glob("tests")) + if len(test_list) == 0: print("No tests found, skipping directory.") - else: - if TEST_CONFIG["pip_version_override"]: - pip_version = TEST_CONFIG["pip_version_override"] - session.install(f"pip=={pip_version}") - """Runs py.test for a particular project.""" - if os.path.exists("requirements.txt"): - if os.path.exists("constraints.txt"): - session.install("-r", "requirements.txt", "-c", "constraints.txt") - else: - session.install("-r", "requirements.txt") - - if os.path.exists("requirements-test.txt"): - if os.path.exists("constraints-test.txt"): - session.install( - "-r", "requirements-test.txt", "-c", "constraints-test.txt" - ) - else: - session.install("-r", "requirements-test.txt") - - if INSTALL_LIBRARY_FROM_SOURCE: - session.install("-e", _get_repo_root()) - - if post_install: - post_install(session) - - session.run( - "pytest", - *(PYTEST_COMMON_ARGS + session.posargs), - # Pytest will return 5 when no tests are collected. This can happen - # on travis where slow and flaky tests are excluded. - # See http://doc.pytest.org/en/latest/_modules/_pytest/main.html - success_codes=[0, 5], - env=get_pytest_env_vars(), - ) + return + + if TEST_CONFIG["pip_version_override"]: + pip_version = TEST_CONFIG["pip_version_override"] + session.install(f"pip=={pip_version}") + """Runs py.test for a particular project.""" + concurrent_args = [] + if os.path.exists("requirements.txt"): + if os.path.exists("constraints.txt"): + session.install("-r", "requirements.txt", "-c", "constraints.txt") + else: + session.install("-r", "requirements.txt") + with open("requirements.txt") as rfile: + packages = rfile.read() + + if os.path.exists("requirements-test.txt"): + if os.path.exists("constraints-test.txt"): + session.install( + "-r", "requirements-test.txt", "-c", "constraints-test.txt" + ) + else: + session.install("-r", "requirements-test.txt") + with open("requirements-test.txt") as rtfile: + packages += rtfile.read() + + if INSTALL_LIBRARY_FROM_SOURCE: + session.install("-e", _get_repo_root()) + + if post_install: + post_install(session) + + if "pytest-parallel" in packages: + concurrent_args.extend(['--workers', 'auto', '--tests-per-worker', 'auto']) + elif "pytest-xdist" in packages: + concurrent_args.extend(['-n', 'auto']) + + session.run( + "pytest", + *(PYTEST_COMMON_ARGS + session.posargs + concurrent_args), + # Pytest will return 5 when no tests are collected. This can happen + # on travis where slow and flaky tests are excluded. + # See http://doc.pytest.org/en/latest/_modules/_pytest/main.html + success_codes=[0, 5], + env=get_pytest_env_vars(), + ) @nox.session(python=ALL_VERSIONS) From 4aeae450b4158fd9ede86f798831f4b75eadeebd Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Sat, 5 Mar 2022 00:28:12 +0000 Subject: [PATCH 6/9] chore(deps): update actions/download-artifact action to v3 (#482) Source-Link: https://github.com/googleapis/synthtool/commit/38e11ad1104dcc1e63b52691ddf2fe4015d06955 Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:4e1991042fe54b991db9ca17c8fb386e61b22fe4d1472a568bf0fcac85dcf5d3 --- .github/.OwlBot.lock.yaml | 2 +- .github/workflows/unittest.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml index 7e08e05a3..44c78f7cc 100644 --- a/.github/.OwlBot.lock.yaml +++ b/.github/.OwlBot.lock.yaml @@ -13,4 +13,4 @@ # limitations under the License. docker: image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest - digest: sha256:5d8da01438ece4021d135433f2cf3227aa39ef0eaccc941d62aa35e6902832ae + digest: sha256:4e1991042fe54b991db9ca17c8fb386e61b22fe4d1472a568bf0fcac85dcf5d3 diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml index e87fe5b7b..e5be6edbd 100644 --- a/.github/workflows/unittest.yml +++ b/.github/workflows/unittest.yml @@ -26,7 +26,7 @@ jobs: run: | nox -s unit-${{ matrix.python }} - name: Upload coverage results - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: coverage-artifacts path: .coverage-${{ matrix.python }} @@ -47,7 +47,7 @@ jobs: python -m pip install --upgrade setuptools pip wheel python -m pip install coverage - name: Download coverage results - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v3 with: name: coverage-artifacts path: .coverage-results/ From 3fc35801eeba2c4323110e3338340b68cc8dd5ad Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Mon, 7 Mar 2022 17:10:49 +0100 Subject: [PATCH 7/9] chore(deps): update all dependencies (#483) --- samples/snippets/requirements-test.txt | 2 +- samples/snippets/requirements.txt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/samples/snippets/requirements-test.txt b/samples/snippets/requirements-test.txt index 86cb16d03..6efa87702 100644 --- a/samples/snippets/requirements-test.txt +++ b/samples/snippets/requirements-test.txt @@ -1,2 +1,2 @@ -pytest==6.2.5 +pytest==7.0.1 flaky==3.7.0 diff --git a/samples/snippets/requirements.txt b/samples/snippets/requirements.txt index 191ce22d5..409f5f4ee 100644 --- a/samples/snippets/requirements.txt +++ b/samples/snippets/requirements.txt @@ -1,2 +1,2 @@ -google-cloud-dialogflow==2.11.0 -Flask==2.0.2 +google-cloud-dialogflow==2.12.0 +Flask==2.0.3 From bd935578a57d7738796bf8d3c02dfca126bfdfbb Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Tue, 8 Mar 2022 17:14:13 +0000 Subject: [PATCH 8/9] docs: clarified the behavior of language_code in EventInput (#475) - [ ] Regenerate this pull request now. docs: clarified wording around Cloud Storage usage docs: added a new resource name pattern for ConversationModel PiperOrigin-RevId: 432962774 Source-Link: https://github.com/googleapis/googleapis/commit/5556688216b2884d540da675c23d88d42cb856b3 Source-Link: https://github.com/googleapis/googleapis-gen/commit/ca6f30a2233469ff7da361fe9fb78784dcbc6c7e Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiY2E2ZjMwYTIyMzM0NjlmZjdkYTM2MWZlOWZiNzg3ODRkY2JjNmM3ZSJ9 chore: update copyright year to 2022 PiperOrigin-RevId: 431037888 Source-Link: https://github.com/googleapis/googleapis/commit/b3397f5febbf21dfc69b875ddabaf76bee765058 Source-Link: https://github.com/googleapis/googleapis-gen/commit/510b54e1cdefd53173984df16645081308fe897e Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNTEwYjU0ZTFjZGVmZDUzMTczOTg0ZGYxNjY0NTA4MTMwOGZlODk3ZSJ9 feat: added ConversationModel resource and its APIs feat: added ConversationDataset resource and its APIs feat: added SetSuggestionFeatureConfig and ClearSuggestionFeatureConfig APIs for ConversationProfile feat: added new knowledge type of Document content feat: added states of Document feat: added metadata for the Knowledge operation docs: updated copyright PiperOrigin-RevId: 430829291 Source-Link: https://github.com/googleapis/googleapis/commit/83795ddb9586420bbd6732f9a80d9546a9f91dcd Source-Link: https://github.com/googleapis/googleapis-gen/commit/b6b58a4d9b2cd6657bb6d6406c901f16d1d5213f Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiYjZiNThhNGQ5YjJjZDY2NTdiYjZkNjQwNmM5MDFmMTZkMWQ1MjEzZiJ9 chore: use gapic-generator-python 0.63.4 chore: fix snippet region tag format chore: fix docstring code block formatting PiperOrigin-RevId: 430730865 Source-Link: https://github.com/googleapis/googleapis/commit/ea5800229f73f94fd7204915a86ed09dcddf429a Source-Link: https://github.com/googleapis/googleapis-gen/commit/ca893ff8af25fc7fe001de1405a517d80446ecca Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiY2E4OTNmZjhhZjI1ZmM3ZmUwMDFkZTE0MDVhNTE3ZDgwNDQ2ZWNjYSJ9 --- dialogflow-v2-py.tar.gz | Bin 0 -> 491520 bytes docs/dialogflow_v2/conversation_datasets.rst | 10 + docs/dialogflow_v2/conversation_models.rst | 10 + docs/dialogflow_v2/services.rst | 2 + google/cloud/dialogflow/__init__.py | 164 +- google/cloud/dialogflow_v2/__init__.py | 92 +- .../cloud/dialogflow_v2/gapic_metadata.json | 188 + .../cloud/dialogflow_v2/services/__init__.py | 2 +- .../dialogflow_v2/services/agents/__init__.py | 2 +- .../services/agents/async_client.py | 20 +- .../dialogflow_v2/services/agents/client.py | 29 +- .../dialogflow_v2/services/agents/pagers.py | 2 +- .../services/agents/transports/__init__.py | 2 +- .../services/agents/transports/base.py | 2 +- .../services/agents/transports/grpc.py | 2 +- .../agents/transports/grpc_asyncio.py | 2 +- .../services/answer_records/__init__.py | 2 +- .../services/answer_records/async_client.py | 6 +- .../services/answer_records/client.py | 8 +- .../services/answer_records/pagers.py | 2 +- .../answer_records/transports/__init__.py | 2 +- .../answer_records/transports/base.py | 2 +- .../answer_records/transports/grpc.py | 2 +- .../answer_records/transports/grpc_asyncio.py | 2 +- .../services/contexts/__init__.py | 2 +- .../services/contexts/async_client.py | 14 +- .../dialogflow_v2/services/contexts/client.py | 20 +- .../dialogflow_v2/services/contexts/pagers.py | 2 +- .../services/contexts/transports/__init__.py | 2 +- .../services/contexts/transports/base.py | 2 +- .../services/contexts/transports/grpc.py | 2 +- .../contexts/transports/grpc_asyncio.py | 2 +- .../conversation_datasets/__init__.py | 22 + .../conversation_datasets/async_client.py | 799 ++++ .../services/conversation_datasets/client.py | 1017 +++++ .../services/conversation_datasets/pagers.py | 159 + .../transports/__init__.py | 35 + .../conversation_datasets/transports/base.py | 224 + .../conversation_datasets/transports/grpc.py | 434 ++ .../transports/grpc_asyncio.py | 439 ++ .../services/conversation_models/__init__.py | 22 + .../conversation_models/async_client.py | 1223 ++++++ .../services/conversation_models/client.py | 1494 +++++++ .../services/conversation_models/pagers.py | 301 ++ .../transports/__init__.py | 35 + .../conversation_models/transports/base.py | 286 ++ .../conversation_models/transports/grpc.py | 569 +++ .../transports/grpc_asyncio.py | 576 +++ .../conversation_profiles/__init__.py | 2 +- .../conversation_profiles/async_client.py | 271 +- .../services/conversation_profiles/client.py | 288 +- .../services/conversation_profiles/pagers.py | 2 +- .../transports/__init__.py | 2 +- .../conversation_profiles/transports/base.py | 37 +- .../conversation_profiles/transports/grpc.py | 112 +- .../transports/grpc_asyncio.py | 114 +- .../services/conversations/__init__.py | 2 +- .../services/conversations/async_client.py | 12 +- .../services/conversations/client.py | 17 +- .../services/conversations/pagers.py | 2 +- .../conversations/transports/__init__.py | 2 +- .../services/conversations/transports/base.py | 2 +- .../services/conversations/transports/grpc.py | 2 +- .../conversations/transports/grpc_asyncio.py | 2 +- .../services/documents/__init__.py | 2 +- .../services/documents/async_client.py | 24 +- .../services/documents/client.py | 32 +- .../services/documents/pagers.py | 2 +- .../services/documents/transports/__init__.py | 2 +- .../services/documents/transports/base.py | 2 +- .../services/documents/transports/grpc.py | 2 +- .../documents/transports/grpc_asyncio.py | 2 +- .../services/entity_types/__init__.py | 2 +- .../services/entity_types/async_client.py | 22 +- .../services/entity_types/client.py | 32 +- .../services/entity_types/pagers.py | 2 +- .../entity_types/transports/__init__.py | 2 +- .../services/entity_types/transports/base.py | 2 +- .../services/entity_types/transports/grpc.py | 2 +- .../entity_types/transports/grpc_asyncio.py | 2 +- .../services/environments/__init__.py | 2 +- .../services/environments/async_client.py | 14 +- .../services/environments/client.py | 20 +- .../services/environments/pagers.py | 2 +- .../environments/transports/__init__.py | 2 +- .../services/environments/transports/base.py | 2 +- .../services/environments/transports/grpc.py | 2 +- .../environments/transports/grpc_asyncio.py | 2 +- .../services/fulfillments/__init__.py | 2 +- .../services/fulfillments/async_client.py | 6 +- .../services/fulfillments/client.py | 8 +- .../fulfillments/transports/__init__.py | 2 +- .../services/fulfillments/transports/base.py | 2 +- .../services/fulfillments/transports/grpc.py | 2 +- .../fulfillments/transports/grpc_asyncio.py | 2 +- .../services/intents/__init__.py | 2 +- .../services/intents/async_client.py | 16 +- .../dialogflow_v2/services/intents/client.py | 23 +- .../dialogflow_v2/services/intents/pagers.py | 2 +- .../services/intents/transports/__init__.py | 2 +- .../services/intents/transports/base.py | 2 +- .../services/intents/transports/grpc.py | 2 +- .../intents/transports/grpc_asyncio.py | 2 +- .../services/knowledge_bases/__init__.py | 2 +- .../services/knowledge_bases/async_client.py | 12 +- .../services/knowledge_bases/client.py | 17 +- .../services/knowledge_bases/pagers.py | 2 +- .../knowledge_bases/transports/__init__.py | 2 +- .../knowledge_bases/transports/base.py | 2 +- .../knowledge_bases/transports/grpc.py | 2 +- .../transports/grpc_asyncio.py | 2 +- .../services/participants/__init__.py | 2 +- .../services/participants/async_client.py | 18 +- .../services/participants/client.py | 26 +- .../services/participants/pagers.py | 2 +- .../participants/transports/__init__.py | 2 +- .../services/participants/transports/base.py | 2 +- .../services/participants/transports/grpc.py | 2 +- .../participants/transports/grpc_asyncio.py | 2 +- .../services/session_entity_types/__init__.py | 2 +- .../session_entity_types/async_client.py | 12 +- .../services/session_entity_types/client.py | 17 +- .../services/session_entity_types/pagers.py | 2 +- .../transports/__init__.py | 2 +- .../session_entity_types/transports/base.py | 2 +- .../session_entity_types/transports/grpc.py | 2 +- .../transports/grpc_asyncio.py | 2 +- .../services/sessions/__init__.py | 2 +- .../services/sessions/async_client.py | 6 +- .../dialogflow_v2/services/sessions/client.py | 8 +- .../services/sessions/transports/__init__.py | 2 +- .../services/sessions/transports/base.py | 2 +- .../services/sessions/transports/grpc.py | 2 +- .../sessions/transports/grpc_asyncio.py | 2 +- .../services/versions/__init__.py | 2 +- .../services/versions/async_client.py | 12 +- .../dialogflow_v2/services/versions/client.py | 17 +- .../dialogflow_v2/services/versions/pagers.py | 2 +- .../services/versions/transports/__init__.py | 2 +- .../services/versions/transports/base.py | 2 +- .../services/versions/transports/grpc.py | 2 +- .../versions/transports/grpc_asyncio.py | 2 +- google/cloud/dialogflow_v2/types/__init__.py | 88 +- google/cloud/dialogflow_v2/types/agent.py | 30 +- .../dialogflow_v2/types/answer_record.py | 2 +- .../cloud/dialogflow_v2/types/audio_config.py | 2 +- google/cloud/dialogflow_v2/types/context.py | 2 +- .../cloud/dialogflow_v2/types/conversation.py | 2 +- .../types/conversation_dataset.py | 282 ++ .../dialogflow_v2/types/conversation_event.py | 2 +- .../dialogflow_v2/types/conversation_model.py | 641 +++ .../types/conversation_profile.py | 129 +- google/cloud/dialogflow_v2/types/document.py | 45 +- .../cloud/dialogflow_v2/types/entity_type.py | 2 +- .../cloud/dialogflow_v2/types/environment.py | 2 +- .../cloud/dialogflow_v2/types/fulfillment.py | 2 +- google/cloud/dialogflow_v2/types/gcs.py | 2 +- .../types/human_agent_assistant_event.py | 2 +- google/cloud/dialogflow_v2/types/intent.py | 2 +- .../dialogflow_v2/types/knowledge_base.py | 2 +- .../cloud/dialogflow_v2/types/participant.py | 2 +- google/cloud/dialogflow_v2/types/session.py | 7 +- .../types/session_entity_type.py | 2 +- .../dialogflow_v2/types/validation_result.py | 2 +- google/cloud/dialogflow_v2/types/version.py | 2 +- google/cloud/dialogflow_v2/types/webhook.py | 2 +- google/cloud/dialogflow_v2beta1/__init__.py | 2 +- .../dialogflow_v2beta1/services/__init__.py | 2 +- .../services/agents/__init__.py | 2 +- .../services/agents/async_client.py | 20 +- .../services/agents/client.py | 29 +- .../services/agents/pagers.py | 2 +- .../services/agents/transports/__init__.py | 2 +- .../services/agents/transports/base.py | 2 +- .../services/agents/transports/grpc.py | 2 +- .../agents/transports/grpc_asyncio.py | 2 +- .../services/answer_records/__init__.py | 2 +- .../services/answer_records/async_client.py | 8 +- .../services/answer_records/client.py | 11 +- .../services/answer_records/pagers.py | 2 +- .../answer_records/transports/__init__.py | 2 +- .../answer_records/transports/base.py | 2 +- .../answer_records/transports/grpc.py | 2 +- .../answer_records/transports/grpc_asyncio.py | 2 +- .../services/contexts/__init__.py | 2 +- .../services/contexts/async_client.py | 14 +- .../services/contexts/client.py | 20 +- .../services/contexts/pagers.py | 2 +- .../services/contexts/transports/__init__.py | 2 +- .../services/contexts/transports/base.py | 2 +- .../services/contexts/transports/grpc.py | 2 +- .../contexts/transports/grpc_asyncio.py | 2 +- .../conversation_profiles/__init__.py | 2 +- .../conversation_profiles/async_client.py | 12 +- .../services/conversation_profiles/client.py | 17 +- .../services/conversation_profiles/pagers.py | 2 +- .../transports/__init__.py | 2 +- .../conversation_profiles/transports/base.py | 2 +- .../conversation_profiles/transports/grpc.py | 2 +- .../transports/grpc_asyncio.py | 2 +- .../services/conversations/__init__.py | 2 +- .../services/conversations/async_client.py | 14 +- .../services/conversations/client.py | 20 +- .../services/conversations/pagers.py | 2 +- .../conversations/transports/__init__.py | 2 +- .../services/conversations/transports/base.py | 2 +- .../services/conversations/transports/grpc.py | 2 +- .../conversations/transports/grpc_asyncio.py | 2 +- .../services/documents/__init__.py | 2 +- .../services/documents/async_client.py | 16 +- .../services/documents/client.py | 23 +- .../services/documents/pagers.py | 2 +- .../services/documents/transports/__init__.py | 2 +- .../services/documents/transports/base.py | 2 +- .../services/documents/transports/grpc.py | 2 +- .../documents/transports/grpc_asyncio.py | 2 +- .../services/entity_types/__init__.py | 2 +- .../services/entity_types/async_client.py | 22 +- .../services/entity_types/client.py | 32 +- .../services/entity_types/pagers.py | 2 +- .../entity_types/transports/__init__.py | 2 +- .../services/entity_types/transports/base.py | 2 +- .../services/entity_types/transports/grpc.py | 2 +- .../entity_types/transports/grpc_asyncio.py | 2 +- .../services/environments/__init__.py | 2 +- .../services/environments/async_client.py | 14 +- .../services/environments/client.py | 20 +- .../services/environments/pagers.py | 2 +- .../environments/transports/__init__.py | 2 +- .../services/environments/transports/base.py | 2 +- .../services/environments/transports/grpc.py | 2 +- .../environments/transports/grpc_asyncio.py | 2 +- .../services/fulfillments/__init__.py | 2 +- .../services/fulfillments/async_client.py | 6 +- .../services/fulfillments/client.py | 8 +- .../fulfillments/transports/__init__.py | 2 +- .../services/fulfillments/transports/base.py | 2 +- .../services/fulfillments/transports/grpc.py | 2 +- .../fulfillments/transports/grpc_asyncio.py | 2 +- .../services/intents/__init__.py | 2 +- .../services/intents/async_client.py | 16 +- .../services/intents/client.py | 23 +- .../services/intents/pagers.py | 2 +- .../services/intents/transports/__init__.py | 2 +- .../services/intents/transports/base.py | 2 +- .../services/intents/transports/grpc.py | 2 +- .../intents/transports/grpc_asyncio.py | 2 +- .../services/knowledge_bases/__init__.py | 2 +- .../services/knowledge_bases/async_client.py | 12 +- .../services/knowledge_bases/client.py | 17 +- .../services/knowledge_bases/pagers.py | 2 +- .../knowledge_bases/transports/__init__.py | 2 +- .../knowledge_bases/transports/base.py | 2 +- .../knowledge_bases/transports/grpc.py | 2 +- .../transports/grpc_asyncio.py | 2 +- .../services/participants/__init__.py | 2 +- .../services/participants/async_client.py | 22 +- .../services/participants/client.py | 32 +- .../services/participants/pagers.py | 2 +- .../participants/transports/__init__.py | 2 +- .../services/participants/transports/base.py | 2 +- .../services/participants/transports/grpc.py | 2 +- .../participants/transports/grpc_asyncio.py | 2 +- .../services/session_entity_types/__init__.py | 2 +- .../session_entity_types/async_client.py | 12 +- .../services/session_entity_types/client.py | 17 +- .../services/session_entity_types/pagers.py | 2 +- .../transports/__init__.py | 2 +- .../session_entity_types/transports/base.py | 2 +- .../session_entity_types/transports/grpc.py | 2 +- .../transports/grpc_asyncio.py | 2 +- .../services/sessions/__init__.py | 2 +- .../services/sessions/async_client.py | 6 +- .../services/sessions/client.py | 8 +- .../services/sessions/transports/__init__.py | 2 +- .../services/sessions/transports/base.py | 2 +- .../services/sessions/transports/grpc.py | 2 +- .../sessions/transports/grpc_asyncio.py | 2 +- .../services/versions/__init__.py | 2 +- .../services/versions/async_client.py | 12 +- .../services/versions/client.py | 17 +- .../services/versions/pagers.py | 2 +- .../services/versions/transports/__init__.py | 2 +- .../services/versions/transports/base.py | 2 +- .../services/versions/transports/grpc.py | 2 +- .../versions/transports/grpc_asyncio.py | 2 +- .../dialogflow_v2beta1/types/__init__.py | 2 +- .../cloud/dialogflow_v2beta1/types/agent.py | 2 +- .../dialogflow_v2beta1/types/answer_record.py | 2 +- .../dialogflow_v2beta1/types/audio_config.py | 2 +- .../cloud/dialogflow_v2beta1/types/context.py | 2 +- .../dialogflow_v2beta1/types/conversation.py | 2 +- .../types/conversation_event.py | 2 +- .../types/conversation_profile.py | 2 +- .../dialogflow_v2beta1/types/document.py | 2 +- .../dialogflow_v2beta1/types/entity_type.py | 2 +- .../dialogflow_v2beta1/types/environment.py | 2 +- .../dialogflow_v2beta1/types/fulfillment.py | 2 +- google/cloud/dialogflow_v2beta1/types/gcs.py | 2 +- .../types/human_agent_assistant_event.py | 2 +- .../cloud/dialogflow_v2beta1/types/intent.py | 2 +- .../types/knowledge_base.py | 2 +- .../dialogflow_v2beta1/types/participant.py | 2 +- .../cloud/dialogflow_v2beta1/types/session.py | 2 +- .../types/session_entity_type.py | 2 +- .../types/validation_result.py | 2 +- .../cloud/dialogflow_v2beta1/types/version.py | 2 +- .../cloud/dialogflow_v2beta1/types/webhook.py | 2 +- ..._v2_generated_agents_delete_agent_async.py | 43 + ...w_v2_generated_agents_delete_agent_sync.py | 43 + ..._v2_generated_agents_export_agent_async.py | 50 + ...w_v2_generated_agents_export_agent_sync.py | 50 + ...low_v2_generated_agents_get_agent_async.py | 45 + ...flow_v2_generated_agents_get_agent_sync.py | 45 + ...ated_agents_get_validation_result_async.py | 45 + ...rated_agents_get_validation_result_sync.py | 45 + ..._v2_generated_agents_import_agent_async.py | 50 + ...w_v2_generated_agents_import_agent_sync.py | 50 + ...v2_generated_agents_restore_agent_async.py | 50 + ..._v2_generated_agents_restore_agent_sync.py | 50 + ...v2_generated_agents_search_agents_async.py | 46 + ..._v2_generated_agents_search_agents_sync.py | 46 + ...low_v2_generated_agents_set_agent_async.py | 51 + ...flow_v2_generated_agents_set_agent_sync.py | 51 + ...w_v2_generated_agents_train_agent_async.py | 49 + ...ow_v2_generated_agents_train_agent_sync.py | 49 + ...nswer_records_list_answer_records_async.py | 47 + ...answer_records_list_answer_records_sync.py | 47 + ...swer_records_update_answer_record_async.py | 44 + ...nswer_records_update_answer_record_sync.py | 44 + ...generated_contexts_create_context_async.py | 49 + ..._generated_contexts_create_context_sync.py | 49 + ...ated_contexts_delete_all_contexts_async.py | 43 + ...rated_contexts_delete_all_contexts_sync.py | 43 + ...generated_contexts_delete_context_async.py | 43 + ..._generated_contexts_delete_context_sync.py | 43 + ...v2_generated_contexts_get_context_async.py | 45 + ..._v2_generated_contexts_get_context_sync.py | 45 + ..._generated_contexts_list_contexts_async.py | 46 + ...2_generated_contexts_list_contexts_sync.py | 46 + ...generated_contexts_update_context_async.py | 48 + ..._generated_contexts_update_context_sync.py | 48 + ...asets_create_conversation_dataset_async.py | 53 + ...tasets_create_conversation_dataset_sync.py | 53 + ...asets_delete_conversation_dataset_async.py | 49 + ...tasets_delete_conversation_dataset_sync.py | 49 + ...datasets_get_conversation_dataset_async.py | 45 + ..._datasets_get_conversation_dataset_sync.py | 45 + ...datasets_import_conversation_data_async.py | 53 + ..._datasets_import_conversation_data_sync.py | 53 + ...tasets_list_conversation_datasets_async.py | 46 + ...atasets_list_conversation_datasets_sync.py | 46 + ..._models_create_conversation_model_async.py | 53 + ...ate_conversation_model_evaluation_async.py | 49 + ...eate_conversation_model_evaluation_sync.py | 49 + ...n_models_create_conversation_model_sync.py | 53 + ..._models_delete_conversation_model_async.py | 49 + ...n_models_delete_conversation_model_sync.py | 49 + ..._models_deploy_conversation_model_async.py | 49 + ...n_models_deploy_conversation_model_sync.py | 49 + ...ion_models_get_conversation_model_async.py | 45 + ...get_conversation_model_evaluation_async.py | 45 + ..._get_conversation_model_evaluation_sync.py | 45 + ...tion_models_get_conversation_model_sync.py | 45 + ...st_conversation_model_evaluations_async.py | 46 + ...ist_conversation_model_evaluations_sync.py | 46 + ...n_models_list_conversation_models_async.py | 46 + ...on_models_list_conversation_models_sync.py | 46 + ...odels_undeploy_conversation_model_async.py | 49 + ...models_undeploy_conversation_model_sync.py | 49 + ...s_clear_suggestion_feature_config_async.py | 51 + ...es_clear_suggestion_feature_config_sync.py | 51 + ...files_create_conversation_profile_async.py | 49 + ...ofiles_create_conversation_profile_sync.py | 49 + ...files_delete_conversation_profile_async.py | 43 + ...ofiles_delete_conversation_profile_sync.py | 43 + ...profiles_get_conversation_profile_async.py | 45 + ..._profiles_get_conversation_profile_sync.py | 45 + ...ofiles_list_conversation_profiles_async.py | 46 + ...rofiles_list_conversation_profiles_sync.py | 46 + ...les_set_suggestion_feature_config_async.py | 50 + ...iles_set_suggestion_feature_config_sync.py | 50 + ...files_update_conversation_profile_async.py | 48 + ...ofiles_update_conversation_profile_sync.py | 48 + ...nversations_complete_conversation_async.py | 45 + ...onversations_complete_conversation_sync.py | 45 + ...conversations_create_conversation_async.py | 49 + ..._conversations_create_conversation_sync.py | 49 + ...ed_conversations_get_conversation_async.py | 45 + ...ted_conversations_get_conversation_sync.py | 45 + ..._conversations_list_conversations_async.py | 46 + ...d_conversations_list_conversations_sync.py | 46 + ...rated_conversations_list_messages_async.py | 46 + ...erated_conversations_list_messages_sync.py | 46 + ...nerated_documents_create_document_async.py | 56 + ...enerated_documents_create_document_sync.py | 56 + ...nerated_documents_delete_document_async.py | 49 + ...enerated_documents_delete_document_sync.py | 49 + ...nerated_documents_export_document_async.py | 49 + ...enerated_documents_export_document_sync.py | 49 + ..._generated_documents_get_document_async.py | 45 + ...2_generated_documents_get_document_sync.py | 45 + ...erated_documents_import_documents_async.py | 58 + ...nerated_documents_import_documents_sync.py | 58 + ...enerated_documents_list_documents_async.py | 46 + ...generated_documents_list_documents_sync.py | 46 + ...nerated_documents_reload_document_async.py | 50 + ...enerated_documents_reload_document_sync.py | 50 + ...nerated_documents_update_document_async.py | 55 + ...enerated_documents_update_document_sync.py | 55 + ...ntity_types_batch_create_entities_async.py | 54 + ...entity_types_batch_create_entities_sync.py | 54 + ...ntity_types_batch_delete_entities_async.py | 50 + ...entity_types_batch_delete_entities_sync.py | 50 + ...y_types_batch_delete_entity_types_async.py | 50 + ...ty_types_batch_delete_entity_types_sync.py | 50 + ...ntity_types_batch_update_entities_async.py | 54 + ...entity_types_batch_update_entities_sync.py | 54 + ...y_types_batch_update_entity_types_async.py | 50 + ...ty_types_batch_update_entity_types_sync.py | 50 + ...d_entity_types_create_entity_type_async.py | 50 + ...ed_entity_types_create_entity_type_sync.py | 50 + ...d_entity_types_delete_entity_type_async.py | 43 + ...ed_entity_types_delete_entity_type_sync.py | 43 + ...ated_entity_types_get_entity_type_async.py | 45 + ...rated_entity_types_get_entity_type_sync.py | 45 + ...ed_entity_types_list_entity_types_async.py | 46 + ...ted_entity_types_list_entity_types_sync.py | 46 + ...d_entity_types_update_entity_type_async.py | 49 + ...ed_entity_types_update_entity_type_sync.py | 49 + ...d_environments_create_environment_async.py | 46 + ...ed_environments_create_environment_sync.py | 46 + ...d_environments_delete_environment_async.py | 43 + ...ed_environments_delete_environment_sync.py | 43 + ...ated_environments_get_environment_async.py | 45 + ...ironments_get_environment_history_async.py | 46 + ...vironments_get_environment_history_sync.py | 46 + ...rated_environments_get_environment_sync.py | 45 + ...ed_environments_list_environments_async.py | 46 + ...ted_environments_list_environments_sync.py | 46 + ...d_environments_update_environment_async.py | 44 + ...ed_environments_update_environment_sync.py | 44 + ...ated_fulfillments_get_fulfillment_async.py | 45 + ...rated_fulfillments_get_fulfillment_sync.py | 45 + ...d_fulfillments_update_fulfillment_async.py | 49 + ...ed_fulfillments_update_fulfillment_sync.py | 49 + ...ated_intents_batch_delete_intents_async.py | 53 + ...rated_intents_batch_delete_intents_sync.py | 53 + ...ated_intents_batch_update_intents_async.py | 50 + ...rated_intents_batch_update_intents_sync.py | 50 + ...2_generated_intents_create_intent_async.py | 49 + ...v2_generated_intents_create_intent_sync.py | 49 + ...2_generated_intents_delete_intent_async.py | 43 + ...v2_generated_intents_delete_intent_sync.py | 43 + ...w_v2_generated_intents_get_intent_async.py | 45 + ...ow_v2_generated_intents_get_intent_sync.py | 45 + ...v2_generated_intents_list_intents_async.py | 46 + ..._v2_generated_intents_list_intents_sync.py | 46 + ...2_generated_intents_update_intent_async.py | 48 + ...v2_generated_intents_update_intent_sync.py | 48 + ...ledge_bases_create_knowledge_base_async.py | 49 + ...wledge_bases_create_knowledge_base_sync.py | 49 + ...ledge_bases_delete_knowledge_base_async.py | 43 + ...wledge_bases_delete_knowledge_base_sync.py | 43 + ...nowledge_bases_get_knowledge_base_async.py | 45 + ...knowledge_bases_get_knowledge_base_sync.py | 45 + ...wledge_bases_list_knowledge_bases_async.py | 46 + ...owledge_bases_list_knowledge_bases_sync.py | 46 + ...ledge_bases_update_knowledge_base_async.py | 48 + ...wledge_bases_update_knowledge_base_sync.py | 48 + ...ated_participants_analyze_content_async.py | 50 + ...rated_participants_analyze_content_sync.py | 50 + ...d_participants_create_participant_async.py | 45 + ...ed_participants_create_participant_sync.py | 45 + ...ated_participants_get_participant_async.py | 45 + ...rated_participants_get_participant_sync.py | 45 + ...ed_participants_list_participants_async.py | 46 + ...ted_participants_list_participants_sync.py | 46 + ...ted_participants_suggest_articles_async.py | 45 + ...ated_participants_suggest_articles_sync.py | 45 + ..._participants_suggest_faq_answers_async.py | 45 + ...d_participants_suggest_faq_answers_sync.py | 45 + ...articipants_suggest_smart_replies_async.py | 45 + ...participants_suggest_smart_replies_sync.py | 45 + ...d_participants_update_participant_async.py | 44 + ...ed_participants_update_participant_sync.py | 44 + ..._types_create_session_entity_type_async.py | 52 + ...y_types_create_session_entity_type_sync.py | 52 + ..._types_delete_session_entity_type_async.py | 43 + ...y_types_delete_session_entity_type_sync.py | 43 + ...ity_types_get_session_entity_type_async.py | 45 + ...tity_types_get_session_entity_type_sync.py | 45 + ...y_types_list_session_entity_types_async.py | 46 + ...ty_types_list_session_entity_types_sync.py | 46 + ..._types_update_session_entity_type_async.py | 51 + ...y_types_update_session_entity_type_sync.py | 51 + ..._generated_sessions_detect_intent_async.py | 45 + ...2_generated_sessions_detect_intent_sync.py | 45 + ..._sessions_streaming_detect_intent_async.py | 56 + ...d_sessions_streaming_detect_intent_sync.py | 56 + ...generated_versions_create_version_async.py | 45 + ..._generated_versions_create_version_sync.py | 45 + ...generated_versions_delete_version_async.py | 43 + ..._generated_versions_delete_version_sync.py | 43 + ...v2_generated_versions_get_version_async.py | 45 + ..._v2_generated_versions_get_version_sync.py | 45 + ..._generated_versions_list_versions_async.py | 46 + ...2_generated_versions_list_versions_sync.py | 46 + ...generated_versions_update_version_async.py | 44 + ..._generated_versions_update_version_sync.py | 44 + ...ta1_generated_agents_delete_agent_async.py | 43 + ...eta1_generated_agents_delete_agent_sync.py | 43 + ...ta1_generated_agents_export_agent_async.py | 49 + ...eta1_generated_agents_export_agent_sync.py | 49 + ...2beta1_generated_agents_get_agent_async.py | 45 + ...v2beta1_generated_agents_get_agent_sync.py | 45 + ...ated_agents_get_validation_result_async.py | 45 + ...rated_agents_get_validation_result_sync.py | 45 + ...ta1_generated_agents_import_agent_async.py | 50 + ...eta1_generated_agents_import_agent_sync.py | 50 + ...a1_generated_agents_restore_agent_async.py | 50 + ...ta1_generated_agents_restore_agent_sync.py | 50 + ...a1_generated_agents_search_agents_async.py | 46 + ...ta1_generated_agents_search_agents_sync.py | 46 + ...2beta1_generated_agents_set_agent_async.py | 48 + ...v2beta1_generated_agents_set_agent_sync.py | 48 + ...eta1_generated_agents_train_agent_async.py | 49 + ...beta1_generated_agents_train_agent_sync.py | 49 + ..._answer_records_get_answer_record_async.py | 44 + ...d_answer_records_get_answer_record_sync.py | 44 + ...nswer_records_list_answer_records_async.py | 45 + ...answer_records_list_answer_records_sync.py | 45 + ...swer_records_update_answer_record_async.py | 44 + ...nswer_records_update_answer_record_sync.py | 44 + ...generated_contexts_create_context_async.py | 45 + ..._generated_contexts_create_context_sync.py | 45 + ...ated_contexts_delete_all_contexts_async.py | 43 + ...rated_contexts_delete_all_contexts_sync.py | 43 + ...generated_contexts_delete_context_async.py | 43 + ..._generated_contexts_delete_context_sync.py | 43 + ...a1_generated_contexts_get_context_async.py | 45 + ...ta1_generated_contexts_get_context_sync.py | 45 + ..._generated_contexts_list_contexts_async.py | 46 + ...1_generated_contexts_list_contexts_sync.py | 46 + ...generated_contexts_update_context_async.py | 44 + ..._generated_contexts_update_context_sync.py | 44 + ...files_create_conversation_profile_async.py | 49 + ...ofiles_create_conversation_profile_sync.py | 49 + ...files_delete_conversation_profile_async.py | 43 + ...ofiles_delete_conversation_profile_sync.py | 43 + ...profiles_get_conversation_profile_async.py | 45 + ..._profiles_get_conversation_profile_sync.py | 45 + ...ofiles_list_conversation_profiles_async.py | 46 + ...rofiles_list_conversation_profiles_sync.py | 46 + ...files_update_conversation_profile_async.py | 48 + ...ofiles_update_conversation_profile_sync.py | 48 + ...nversations_batch_create_messages_async.py | 50 + ...onversations_batch_create_messages_sync.py | 50 + ...nversations_complete_conversation_async.py | 45 + ...onversations_complete_conversation_sync.py | 45 + ...conversations_create_conversation_async.py | 49 + ..._conversations_create_conversation_sync.py | 49 + ...ed_conversations_get_conversation_async.py | 45 + ...ted_conversations_get_conversation_sync.py | 45 + ..._conversations_list_conversations_async.py | 46 + ...d_conversations_list_conversations_sync.py | 46 + ...rated_conversations_list_messages_async.py | 46 + ...erated_conversations_list_messages_sync.py | 46 + ...nerated_documents_create_document_async.py | 56 + ...enerated_documents_create_document_sync.py | 56 + ...nerated_documents_delete_document_async.py | 49 + ...enerated_documents_delete_document_sync.py | 49 + ..._generated_documents_get_document_async.py | 45 + ...1_generated_documents_get_document_sync.py | 45 + ...erated_documents_import_documents_async.py | 58 + ...nerated_documents_import_documents_sync.py | 58 + ...enerated_documents_list_documents_async.py | 46 + ...generated_documents_list_documents_sync.py | 46 + ...nerated_documents_reload_document_async.py | 49 + ...enerated_documents_reload_document_sync.py | 49 + ...nerated_documents_update_document_async.py | 55 + ...enerated_documents_update_document_sync.py | 55 + ...ntity_types_batch_create_entities_async.py | 53 + ...entity_types_batch_create_entities_sync.py | 53 + ...ntity_types_batch_delete_entities_async.py | 50 + ...entity_types_batch_delete_entities_sync.py | 50 + ...y_types_batch_delete_entity_types_async.py | 50 + ...ty_types_batch_delete_entity_types_sync.py | 50 + ...ntity_types_batch_update_entities_async.py | 53 + ...entity_types_batch_update_entities_sync.py | 53 + ...y_types_batch_update_entity_types_async.py | 50 + ...ty_types_batch_update_entity_types_sync.py | 50 + ...d_entity_types_create_entity_type_async.py | 50 + ...ed_entity_types_create_entity_type_sync.py | 50 + ...d_entity_types_delete_entity_type_async.py | 43 + ...ed_entity_types_delete_entity_type_sync.py | 43 + ...ated_entity_types_get_entity_type_async.py | 45 + ...rated_entity_types_get_entity_type_sync.py | 45 + ...ed_entity_types_list_entity_types_async.py | 46 + ...ted_entity_types_list_entity_types_sync.py | 46 + ...d_entity_types_update_entity_type_async.py | 49 + ...ed_entity_types_update_entity_type_sync.py | 49 + ...d_environments_create_environment_async.py | 46 + ...ed_environments_create_environment_sync.py | 46 + ...d_environments_delete_environment_async.py | 43 + ...ed_environments_delete_environment_sync.py | 43 + ...ated_environments_get_environment_async.py | 45 + ...ironments_get_environment_history_async.py | 46 + ...vironments_get_environment_history_sync.py | 46 + ...rated_environments_get_environment_sync.py | 45 + ...ed_environments_list_environments_async.py | 46 + ...ted_environments_list_environments_sync.py | 46 + ...d_environments_update_environment_async.py | 44 + ...ed_environments_update_environment_sync.py | 44 + ...ated_fulfillments_get_fulfillment_async.py | 45 + ...rated_fulfillments_get_fulfillment_sync.py | 45 + ...d_fulfillments_update_fulfillment_async.py | 49 + ...ed_fulfillments_update_fulfillment_sync.py | 49 + ...ated_intents_batch_delete_intents_async.py | 53 + ...rated_intents_batch_delete_intents_sync.py | 53 + ...ated_intents_batch_update_intents_async.py | 50 + ...rated_intents_batch_update_intents_sync.py | 50 + ...1_generated_intents_create_intent_async.py | 49 + ...a1_generated_intents_create_intent_sync.py | 49 + ...1_generated_intents_delete_intent_async.py | 43 + ...a1_generated_intents_delete_intent_sync.py | 43 + ...eta1_generated_intents_get_intent_async.py | 45 + ...beta1_generated_intents_get_intent_sync.py | 45 + ...a1_generated_intents_list_intents_async.py | 46 + ...ta1_generated_intents_list_intents_sync.py | 46 + ...1_generated_intents_update_intent_async.py | 48 + ...a1_generated_intents_update_intent_sync.py | 48 + ...ledge_bases_create_knowledge_base_async.py | 49 + ...wledge_bases_create_knowledge_base_sync.py | 49 + ...ledge_bases_delete_knowledge_base_async.py | 43 + ...wledge_bases_delete_knowledge_base_sync.py | 43 + ...nowledge_bases_get_knowledge_base_async.py | 45 + ...knowledge_bases_get_knowledge_base_sync.py | 45 + ...wledge_bases_list_knowledge_bases_async.py | 46 + ...owledge_bases_list_knowledge_bases_sync.py | 46 + ...ledge_bases_update_knowledge_base_async.py | 48 + ...wledge_bases_update_knowledge_base_sync.py | 48 + ...ated_participants_analyze_content_async.py | 45 + ...rated_participants_analyze_content_sync.py | 45 + ...d_participants_compile_suggestion_async.py | 44 + ...ed_participants_compile_suggestion_sync.py | 44 + ...d_participants_create_participant_async.py | 45 + ...ed_participants_create_participant_sync.py | 45 + ...ated_participants_get_participant_async.py | 45 + ...rated_participants_get_participant_sync.py | 45 + ...ed_participants_list_participants_async.py | 46 + ...ted_participants_list_participants_sync.py | 46 + ...ted_participants_list_suggestions_async.py | 45 + ...ated_participants_list_suggestions_sync.py | 45 + ...ted_participants_suggest_articles_async.py | 45 + ...ated_participants_suggest_articles_sync.py | 45 + ..._participants_suggest_faq_answers_async.py | 45 + ...d_participants_suggest_faq_answers_sync.py | 45 + ...articipants_suggest_smart_replies_async.py | 45 + ...participants_suggest_smart_replies_sync.py | 45 + ...d_participants_update_participant_async.py | 44 + ...ed_participants_update_participant_sync.py | 44 + ..._types_create_session_entity_type_async.py | 45 + ...y_types_create_session_entity_type_sync.py | 45 + ..._types_delete_session_entity_type_async.py | 43 + ...y_types_delete_session_entity_type_sync.py | 43 + ...ity_types_get_session_entity_type_async.py | 45 + ...tity_types_get_session_entity_type_sync.py | 45 + ...y_types_list_session_entity_types_async.py | 46 + ...ty_types_list_session_entity_types_sync.py | 46 + ..._types_update_session_entity_type_async.py | 44 + ...y_types_update_session_entity_type_sync.py | 44 + ..._generated_sessions_detect_intent_async.py | 45 + ...1_generated_sessions_detect_intent_sync.py | 45 + ..._sessions_streaming_detect_intent_async.py | 56 + ...d_sessions_streaming_detect_intent_sync.py | 56 + ...generated_versions_create_version_async.py | 45 + ..._generated_versions_create_version_sync.py | 45 + ...generated_versions_delete_version_async.py | 43 + ..._generated_versions_delete_version_sync.py | 43 + ...a1_generated_versions_get_version_async.py | 45 + ...ta1_generated_versions_get_version_sync.py | 45 + ..._generated_versions_list_versions_async.py | 46 + ...1_generated_versions_list_versions_sync.py | 46 + ...generated_versions_update_version_async.py | 44 + ..._generated_versions_update_version_sync.py | 44 + .../snippet_metadata_dialogflow_v2.json | 2104 ++++++++-- .../snippet_metadata_dialogflow_v2beta1.json | 704 ++-- scripts/fixup_dialogflow_v2_keywords.py | 18 +- scripts/fixup_dialogflow_v2beta1_keywords.py | 2 +- tests/__init__.py | 2 +- tests/unit/__init__.py | 2 +- tests/unit/gapic/__init__.py | 2 +- tests/unit/gapic/dialogflow_v2/__init__.py | 2 +- tests/unit/gapic/dialogflow_v2/test_agents.py | 2 +- .../dialogflow_v2/test_answer_records.py | 2 +- .../unit/gapic/dialogflow_v2/test_contexts.py | 2 +- .../test_conversation_datasets.py | 2615 ++++++++++++ .../dialogflow_v2/test_conversation_models.py | 3737 +++++++++++++++++ .../test_conversation_profiles.py | 510 ++- .../gapic/dialogflow_v2/test_conversations.py | 2 +- .../gapic/dialogflow_v2/test_documents.py | 6 +- .../gapic/dialogflow_v2/test_entity_types.py | 2 +- .../gapic/dialogflow_v2/test_environments.py | 2 +- .../gapic/dialogflow_v2/test_fulfillments.py | 2 +- .../unit/gapic/dialogflow_v2/test_intents.py | 2 +- .../dialogflow_v2/test_knowledge_bases.py | 2 +- .../gapic/dialogflow_v2/test_participants.py | 2 +- .../test_session_entity_types.py | 2 +- .../unit/gapic/dialogflow_v2/test_sessions.py | 2 +- .../unit/gapic/dialogflow_v2/test_versions.py | 2 +- .../unit/gapic/dialogflow_v2beta1/__init__.py | 2 +- .../gapic/dialogflow_v2beta1/test_agents.py | 2 +- .../dialogflow_v2beta1/test_answer_records.py | 2 +- .../gapic/dialogflow_v2beta1/test_contexts.py | 2 +- .../test_conversation_profiles.py | 2 +- .../dialogflow_v2beta1/test_conversations.py | 2 +- .../dialogflow_v2beta1/test_documents.py | 2 +- .../dialogflow_v2beta1/test_entity_types.py | 2 +- .../dialogflow_v2beta1/test_environments.py | 2 +- .../dialogflow_v2beta1/test_fulfillments.py | 2 +- .../gapic/dialogflow_v2beta1/test_intents.py | 2 +- .../test_knowledge_bases.py | 2 +- .../dialogflow_v2beta1/test_participants.py | 2 +- .../test_session_entity_types.py | 2 +- .../gapic/dialogflow_v2beta1/test_sessions.py | 2 +- .../gapic/dialogflow_v2beta1/test_versions.py | 2 +- 727 files changed, 37550 insertions(+), 1547 deletions(-) create mode 100644 dialogflow-v2-py.tar.gz create mode 100644 docs/dialogflow_v2/conversation_datasets.rst create mode 100644 docs/dialogflow_v2/conversation_models.rst create mode 100644 google/cloud/dialogflow_v2/services/conversation_datasets/__init__.py create mode 100644 google/cloud/dialogflow_v2/services/conversation_datasets/async_client.py create mode 100644 google/cloud/dialogflow_v2/services/conversation_datasets/client.py create mode 100644 google/cloud/dialogflow_v2/services/conversation_datasets/pagers.py create mode 100644 google/cloud/dialogflow_v2/services/conversation_datasets/transports/__init__.py create mode 100644 google/cloud/dialogflow_v2/services/conversation_datasets/transports/base.py create mode 100644 google/cloud/dialogflow_v2/services/conversation_datasets/transports/grpc.py create mode 100644 google/cloud/dialogflow_v2/services/conversation_datasets/transports/grpc_asyncio.py create mode 100644 google/cloud/dialogflow_v2/services/conversation_models/__init__.py create mode 100644 google/cloud/dialogflow_v2/services/conversation_models/async_client.py create mode 100644 google/cloud/dialogflow_v2/services/conversation_models/client.py create mode 100644 google/cloud/dialogflow_v2/services/conversation_models/pagers.py create mode 100644 google/cloud/dialogflow_v2/services/conversation_models/transports/__init__.py create mode 100644 google/cloud/dialogflow_v2/services/conversation_models/transports/base.py create mode 100644 google/cloud/dialogflow_v2/services/conversation_models/transports/grpc.py create mode 100644 google/cloud/dialogflow_v2/services/conversation_models/transports/grpc_asyncio.py create mode 100644 google/cloud/dialogflow_v2/types/conversation_dataset.py create mode 100644 google/cloud/dialogflow_v2/types/conversation_model.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_agents_delete_agent_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_agents_delete_agent_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_agents_export_agent_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_agents_export_agent_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_agents_get_agent_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_agents_get_agent_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_agents_get_validation_result_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_agents_get_validation_result_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_agents_import_agent_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_agents_import_agent_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_agents_restore_agent_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_agents_restore_agent_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_agents_search_agents_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_agents_search_agents_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_agents_set_agent_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_agents_set_agent_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_agents_train_agent_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_agents_train_agent_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_answer_records_list_answer_records_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_answer_records_list_answer_records_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_answer_records_update_answer_record_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_answer_records_update_answer_record_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_contexts_create_context_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_contexts_create_context_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_contexts_delete_all_contexts_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_contexts_delete_all_contexts_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_contexts_delete_context_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_contexts_delete_context_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_contexts_get_context_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_contexts_get_context_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_contexts_list_contexts_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_contexts_list_contexts_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_contexts_update_context_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_contexts_update_context_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_datasets_create_conversation_dataset_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_datasets_create_conversation_dataset_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_datasets_delete_conversation_dataset_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_datasets_delete_conversation_dataset_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_datasets_get_conversation_dataset_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_datasets_get_conversation_dataset_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_datasets_import_conversation_data_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_datasets_import_conversation_data_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_datasets_list_conversation_datasets_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_datasets_list_conversation_datasets_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_models_create_conversation_model_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_models_create_conversation_model_evaluation_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_models_create_conversation_model_evaluation_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_models_create_conversation_model_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_models_delete_conversation_model_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_models_delete_conversation_model_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_models_deploy_conversation_model_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_models_deploy_conversation_model_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_models_get_conversation_model_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_models_get_conversation_model_evaluation_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_models_get_conversation_model_evaluation_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_models_get_conversation_model_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_models_list_conversation_model_evaluations_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_models_list_conversation_model_evaluations_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_models_list_conversation_models_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_models_list_conversation_models_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_models_undeploy_conversation_model_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_models_undeploy_conversation_model_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_profiles_clear_suggestion_feature_config_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_profiles_clear_suggestion_feature_config_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_profiles_create_conversation_profile_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_profiles_create_conversation_profile_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_profiles_delete_conversation_profile_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_profiles_delete_conversation_profile_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_profiles_get_conversation_profile_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_profiles_get_conversation_profile_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_profiles_list_conversation_profiles_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_profiles_list_conversation_profiles_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_profiles_set_suggestion_feature_config_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_profiles_set_suggestion_feature_config_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_profiles_update_conversation_profile_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversation_profiles_update_conversation_profile_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversations_complete_conversation_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversations_complete_conversation_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversations_create_conversation_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversations_create_conversation_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversations_get_conversation_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversations_get_conversation_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversations_list_conversations_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversations_list_conversations_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversations_list_messages_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_conversations_list_messages_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_documents_create_document_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_documents_create_document_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_documents_delete_document_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_documents_delete_document_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_documents_export_document_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_documents_export_document_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_documents_get_document_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_documents_get_document_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_documents_import_documents_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_documents_import_documents_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_documents_list_documents_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_documents_list_documents_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_documents_reload_document_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_documents_reload_document_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_documents_update_document_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_documents_update_document_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_entity_types_batch_create_entities_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_entity_types_batch_create_entities_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_entity_types_batch_delete_entities_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_entity_types_batch_delete_entities_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_entity_types_batch_delete_entity_types_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_entity_types_batch_delete_entity_types_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_entity_types_batch_update_entities_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_entity_types_batch_update_entities_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_entity_types_batch_update_entity_types_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_entity_types_batch_update_entity_types_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_entity_types_create_entity_type_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_entity_types_create_entity_type_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_entity_types_delete_entity_type_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_entity_types_delete_entity_type_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_entity_types_get_entity_type_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_entity_types_get_entity_type_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_entity_types_list_entity_types_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_entity_types_list_entity_types_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_entity_types_update_entity_type_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_entity_types_update_entity_type_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_environments_create_environment_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_environments_create_environment_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_environments_delete_environment_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_environments_delete_environment_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_environments_get_environment_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_environments_get_environment_history_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_environments_get_environment_history_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_environments_get_environment_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_environments_list_environments_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_environments_list_environments_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_environments_update_environment_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_environments_update_environment_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_fulfillments_get_fulfillment_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_fulfillments_get_fulfillment_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_fulfillments_update_fulfillment_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_fulfillments_update_fulfillment_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_intents_batch_delete_intents_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_intents_batch_delete_intents_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_intents_batch_update_intents_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_intents_batch_update_intents_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_intents_create_intent_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_intents_create_intent_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_intents_delete_intent_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_intents_delete_intent_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_intents_get_intent_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_intents_get_intent_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_intents_list_intents_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_intents_list_intents_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_intents_update_intent_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_intents_update_intent_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_knowledge_bases_create_knowledge_base_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_knowledge_bases_create_knowledge_base_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_knowledge_bases_delete_knowledge_base_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_knowledge_bases_delete_knowledge_base_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_knowledge_bases_get_knowledge_base_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_knowledge_bases_get_knowledge_base_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_knowledge_bases_list_knowledge_bases_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_knowledge_bases_list_knowledge_bases_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_knowledge_bases_update_knowledge_base_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_knowledge_bases_update_knowledge_base_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_participants_analyze_content_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_participants_analyze_content_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_participants_create_participant_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_participants_create_participant_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_participants_get_participant_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_participants_get_participant_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_participants_list_participants_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_participants_list_participants_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_participants_suggest_articles_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_participants_suggest_articles_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_participants_suggest_faq_answers_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_participants_suggest_faq_answers_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_participants_suggest_smart_replies_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_participants_suggest_smart_replies_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_participants_update_participant_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_participants_update_participant_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_session_entity_types_create_session_entity_type_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_session_entity_types_create_session_entity_type_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_session_entity_types_delete_session_entity_type_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_session_entity_types_delete_session_entity_type_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_session_entity_types_get_session_entity_type_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_session_entity_types_get_session_entity_type_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_session_entity_types_list_session_entity_types_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_session_entity_types_list_session_entity_types_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_session_entity_types_update_session_entity_type_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_session_entity_types_update_session_entity_type_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_sessions_detect_intent_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_sessions_detect_intent_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_sessions_streaming_detect_intent_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_sessions_streaming_detect_intent_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_versions_create_version_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_versions_create_version_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_versions_delete_version_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_versions_delete_version_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_versions_get_version_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_versions_get_version_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_versions_list_versions_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_versions_list_versions_sync.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_versions_update_version_async.py create mode 100644 samples/generated_samples/dialogflow_v2_generated_versions_update_version_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_agents_delete_agent_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_agents_delete_agent_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_agents_export_agent_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_agents_export_agent_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_agents_get_agent_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_agents_get_agent_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_agents_get_validation_result_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_agents_get_validation_result_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_agents_import_agent_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_agents_import_agent_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_agents_restore_agent_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_agents_restore_agent_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_agents_search_agents_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_agents_search_agents_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_agents_set_agent_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_agents_set_agent_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_agents_train_agent_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_agents_train_agent_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_answer_records_get_answer_record_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_answer_records_get_answer_record_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_answer_records_list_answer_records_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_answer_records_list_answer_records_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_answer_records_update_answer_record_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_answer_records_update_answer_record_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_contexts_create_context_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_contexts_create_context_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_contexts_delete_all_contexts_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_contexts_delete_all_contexts_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_contexts_delete_context_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_contexts_delete_context_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_contexts_get_context_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_contexts_get_context_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_contexts_list_contexts_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_contexts_list_contexts_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_contexts_update_context_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_contexts_update_context_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_create_conversation_profile_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_create_conversation_profile_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_delete_conversation_profile_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_delete_conversation_profile_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_get_conversation_profile_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_get_conversation_profile_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_list_conversation_profiles_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_list_conversation_profiles_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_update_conversation_profile_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_update_conversation_profile_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_conversations_batch_create_messages_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_conversations_batch_create_messages_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_conversations_complete_conversation_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_conversations_complete_conversation_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_conversations_create_conversation_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_conversations_create_conversation_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_conversations_get_conversation_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_conversations_get_conversation_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_conversations_list_conversations_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_conversations_list_conversations_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_conversations_list_messages_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_conversations_list_messages_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_documents_create_document_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_documents_create_document_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_documents_delete_document_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_documents_delete_document_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_documents_get_document_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_documents_get_document_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_documents_import_documents_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_documents_import_documents_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_documents_list_documents_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_documents_list_documents_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_documents_reload_document_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_documents_reload_document_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_documents_update_document_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_documents_update_document_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_create_entities_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_create_entities_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_delete_entities_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_delete_entities_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_delete_entity_types_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_delete_entity_types_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_update_entities_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_update_entities_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_update_entity_types_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_update_entity_types_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_entity_types_create_entity_type_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_entity_types_create_entity_type_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_entity_types_delete_entity_type_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_entity_types_delete_entity_type_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_entity_types_get_entity_type_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_entity_types_get_entity_type_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_entity_types_list_entity_types_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_entity_types_list_entity_types_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_entity_types_update_entity_type_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_entity_types_update_entity_type_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_environments_create_environment_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_environments_create_environment_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_environments_delete_environment_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_environments_delete_environment_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_environments_get_environment_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_environments_get_environment_history_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_environments_get_environment_history_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_environments_get_environment_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_environments_list_environments_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_environments_list_environments_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_environments_update_environment_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_environments_update_environment_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_fulfillments_get_fulfillment_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_fulfillments_get_fulfillment_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_fulfillments_update_fulfillment_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_fulfillments_update_fulfillment_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_intents_batch_delete_intents_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_intents_batch_delete_intents_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_intents_batch_update_intents_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_intents_batch_update_intents_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_intents_create_intent_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_intents_create_intent_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_intents_delete_intent_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_intents_delete_intent_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_intents_get_intent_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_intents_get_intent_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_intents_list_intents_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_intents_list_intents_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_intents_update_intent_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_intents_update_intent_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_create_knowledge_base_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_create_knowledge_base_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_delete_knowledge_base_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_delete_knowledge_base_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_get_knowledge_base_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_get_knowledge_base_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_list_knowledge_bases_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_list_knowledge_bases_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_update_knowledge_base_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_update_knowledge_base_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_participants_analyze_content_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_participants_analyze_content_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_participants_compile_suggestion_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_participants_compile_suggestion_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_participants_create_participant_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_participants_create_participant_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_participants_get_participant_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_participants_get_participant_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_participants_list_participants_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_participants_list_participants_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_participants_list_suggestions_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_participants_list_suggestions_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_participants_suggest_articles_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_participants_suggest_articles_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_participants_suggest_faq_answers_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_participants_suggest_faq_answers_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_participants_suggest_smart_replies_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_participants_suggest_smart_replies_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_participants_update_participant_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_participants_update_participant_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_create_session_entity_type_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_create_session_entity_type_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_delete_session_entity_type_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_delete_session_entity_type_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_get_session_entity_type_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_get_session_entity_type_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_list_session_entity_types_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_list_session_entity_types_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_update_session_entity_type_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_update_session_entity_type_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_sessions_detect_intent_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_sessions_detect_intent_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_sessions_streaming_detect_intent_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_sessions_streaming_detect_intent_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_versions_create_version_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_versions_create_version_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_versions_delete_version_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_versions_delete_version_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_versions_get_version_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_versions_get_version_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_versions_list_versions_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_versions_list_versions_sync.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_versions_update_version_async.py create mode 100644 samples/generated_samples/dialogflow_v2beta1_generated_versions_update_version_sync.py create mode 100644 tests/unit/gapic/dialogflow_v2/test_conversation_datasets.py create mode 100644 tests/unit/gapic/dialogflow_v2/test_conversation_models.py diff --git a/dialogflow-v2-py.tar.gz b/dialogflow-v2-py.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..f3569ef7e5828cadee88767275b77f6e5a7f9597 GIT binary patch literal 491520 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%0D=kLTyC$dawey&Z`P}omFUXOVgZrZq z8OtIiy^(hh2}G!#O8Uone@d=!&fhA-Pz_X_qACX>8HdvrQ9-J>;eYEVZA5>RT-8;~ z5w#P0t*FZs9W70@dp-xWVmXhJsgzOetbc+lOD$$qSKSo_U zcx?ViKITn!-8uRl{Bk7T#s9U-K?vf?l-xT1lBw(4ha}Q78Z;N z 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ⅇLI^o9ecJDc*5vjI0}$z&5Q_NsfLU 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

5nY?9+-M8G;xxrfEiFwr8n4!> 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
((6s>kf_=ThE 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�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 z EN90=yLTS6Um#R-RZ;6;Rrme_q}p^3uvSrkYRuFo+_oO47pbt%f3mrpm zg>zY3M%c+c2*3dsf0^@4l+--i{=o^a;HTK%V9vT!~Ilrw5FH71u??r}c9LOtKD z;oGahRa6DiFAh@D-WXPL*cZjl(5P!8Mw64rV17OLC$>rk>O|h*86ACPap�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%0AyfE8*DIxP#wz*#&ae3J9oJHmLS0)#sO)Fi1Ww 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

1N}Iz@gj%KD1QQ33A33y)Ko!-n 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 literal 0 HcmV?d00001 diff --git a/docs/dialogflow_v2/conversation_datasets.rst b/docs/dialogflow_v2/conversation_datasets.rst new file mode 100644 index 000000000..d0510a1fc --- /dev/null +++ b/docs/dialogflow_v2/conversation_datasets.rst @@ -0,0 +1,10 @@ +ConversationDatasets +-------------------------------------- + +.. automodule:: google.cloud.dialogflow_v2.services.conversation_datasets + :members: + :inherited-members: + +.. automodule:: google.cloud.dialogflow_v2.services.conversation_datasets.pagers + :members: + :inherited-members: diff --git a/docs/dialogflow_v2/conversation_models.rst b/docs/dialogflow_v2/conversation_models.rst new file mode 100644 index 000000000..2c1565841 --- /dev/null +++ b/docs/dialogflow_v2/conversation_models.rst @@ -0,0 +1,10 @@ +ConversationModels +------------------------------------ + +.. automodule:: google.cloud.dialogflow_v2.services.conversation_models + :members: + :inherited-members: + +.. automodule:: google.cloud.dialogflow_v2.services.conversation_models.pagers + :members: + :inherited-members: diff --git a/docs/dialogflow_v2/services.rst b/docs/dialogflow_v2/services.rst index 8bdbdfe41..c6039fcaf 100644 --- a/docs/dialogflow_v2/services.rst +++ b/docs/dialogflow_v2/services.rst @@ -6,6 +6,8 @@ Services for Google Cloud Dialogflow v2 API agents answer_records contexts + conversation_datasets + conversation_models conversation_profiles conversations documents diff --git a/google/cloud/dialogflow/__init__.py b/google/cloud/dialogflow/__init__.py index 3e2be7a0c..5944f232c 100644 --- a/google/cloud/dialogflow/__init__.py +++ b/google/cloud/dialogflow/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -26,6 +26,18 @@ from google.cloud.dialogflow_v2.services.contexts.async_client import ( ContextsAsyncClient, ) +from google.cloud.dialogflow_v2.services.conversation_datasets.client import ( + ConversationDatasetsClient, +) +from google.cloud.dialogflow_v2.services.conversation_datasets.async_client import ( + ConversationDatasetsAsyncClient, +) +from google.cloud.dialogflow_v2.services.conversation_models.client import ( + ConversationModelsClient, +) +from google.cloud.dialogflow_v2.services.conversation_models.async_client import ( + ConversationModelsAsyncClient, +) from google.cloud.dialogflow_v2.services.conversation_profiles.client import ( ConversationProfilesClient, ) @@ -126,8 +138,106 @@ from google.cloud.dialogflow_v2.types.conversation import ListConversationsResponse from google.cloud.dialogflow_v2.types.conversation import ListMessagesRequest from google.cloud.dialogflow_v2.types.conversation import ListMessagesResponse +from google.cloud.dialogflow_v2.types.conversation_dataset import ConversationDataset +from google.cloud.dialogflow_v2.types.conversation_dataset import ConversationInfo +from google.cloud.dialogflow_v2.types.conversation_dataset import ( + CreateConversationDatasetOperationMetadata, +) +from google.cloud.dialogflow_v2.types.conversation_dataset import ( + CreateConversationDatasetRequest, +) +from google.cloud.dialogflow_v2.types.conversation_dataset import ( + DeleteConversationDatasetOperationMetadata, +) +from google.cloud.dialogflow_v2.types.conversation_dataset import ( + DeleteConversationDatasetRequest, +) +from google.cloud.dialogflow_v2.types.conversation_dataset import ( + GetConversationDatasetRequest, +) +from google.cloud.dialogflow_v2.types.conversation_dataset import ( + ImportConversationDataOperationMetadata, +) +from google.cloud.dialogflow_v2.types.conversation_dataset import ( + ImportConversationDataOperationResponse, +) +from google.cloud.dialogflow_v2.types.conversation_dataset import ( + ImportConversationDataRequest, +) +from google.cloud.dialogflow_v2.types.conversation_dataset import InputConfig +from google.cloud.dialogflow_v2.types.conversation_dataset import ( + ListConversationDatasetsRequest, +) +from google.cloud.dialogflow_v2.types.conversation_dataset import ( + ListConversationDatasetsResponse, +) from google.cloud.dialogflow_v2.types.conversation_event import ConversationEvent +from google.cloud.dialogflow_v2.types.conversation_model import ( + ArticleSuggestionModelMetadata, +) +from google.cloud.dialogflow_v2.types.conversation_model import ConversationModel +from google.cloud.dialogflow_v2.types.conversation_model import ( + ConversationModelEvaluation, +) +from google.cloud.dialogflow_v2.types.conversation_model import ( + CreateConversationModelEvaluationOperationMetadata, +) +from google.cloud.dialogflow_v2.types.conversation_model import ( + CreateConversationModelEvaluationRequest, +) +from google.cloud.dialogflow_v2.types.conversation_model import ( + CreateConversationModelOperationMetadata, +) +from google.cloud.dialogflow_v2.types.conversation_model import ( + CreateConversationModelRequest, +) +from google.cloud.dialogflow_v2.types.conversation_model import ( + DeleteConversationModelOperationMetadata, +) +from google.cloud.dialogflow_v2.types.conversation_model import ( + DeleteConversationModelRequest, +) +from google.cloud.dialogflow_v2.types.conversation_model import ( + DeployConversationModelOperationMetadata, +) +from google.cloud.dialogflow_v2.types.conversation_model import ( + DeployConversationModelRequest, +) +from google.cloud.dialogflow_v2.types.conversation_model import EvaluationConfig +from google.cloud.dialogflow_v2.types.conversation_model import ( + GetConversationModelEvaluationRequest, +) +from google.cloud.dialogflow_v2.types.conversation_model import ( + GetConversationModelRequest, +) +from google.cloud.dialogflow_v2.types.conversation_model import InputDataset +from google.cloud.dialogflow_v2.types.conversation_model import ( + ListConversationModelEvaluationsRequest, +) +from google.cloud.dialogflow_v2.types.conversation_model import ( + ListConversationModelEvaluationsResponse, +) +from google.cloud.dialogflow_v2.types.conversation_model import ( + ListConversationModelsRequest, +) +from google.cloud.dialogflow_v2.types.conversation_model import ( + ListConversationModelsResponse, +) +from google.cloud.dialogflow_v2.types.conversation_model import SmartReplyMetrics +from google.cloud.dialogflow_v2.types.conversation_model import SmartReplyModelMetadata +from google.cloud.dialogflow_v2.types.conversation_model import ( + UndeployConversationModelOperationMetadata, +) +from google.cloud.dialogflow_v2.types.conversation_model import ( + UndeployConversationModelRequest, +) from google.cloud.dialogflow_v2.types.conversation_profile import AutomatedAgentConfig +from google.cloud.dialogflow_v2.types.conversation_profile import ( + ClearSuggestionFeatureConfigOperationMetadata, +) +from google.cloud.dialogflow_v2.types.conversation_profile import ( + ClearSuggestionFeatureConfigRequest, +) from google.cloud.dialogflow_v2.types.conversation_profile import ConversationProfile from google.cloud.dialogflow_v2.types.conversation_profile import ( CreateConversationProfileRequest, @@ -152,6 +262,12 @@ ) from google.cloud.dialogflow_v2.types.conversation_profile import LoggingConfig from google.cloud.dialogflow_v2.types.conversation_profile import NotificationConfig +from google.cloud.dialogflow_v2.types.conversation_profile import ( + SetSuggestionFeatureConfigOperationMetadata, +) +from google.cloud.dialogflow_v2.types.conversation_profile import ( + SetSuggestionFeatureConfigRequest, +) from google.cloud.dialogflow_v2.types.conversation_profile import SuggestionFeature from google.cloud.dialogflow_v2.types.conversation_profile import ( UpdateConversationProfileRequest, @@ -160,6 +276,7 @@ from google.cloud.dialogflow_v2.types.document import DeleteDocumentRequest from google.cloud.dialogflow_v2.types.document import Document from google.cloud.dialogflow_v2.types.document import ExportDocumentRequest +from google.cloud.dialogflow_v2.types.document import ExportOperationMetadata from google.cloud.dialogflow_v2.types.document import GetDocumentRequest from google.cloud.dialogflow_v2.types.document import ImportDocumentsRequest from google.cloud.dialogflow_v2.types.document import ImportDocumentsResponse @@ -297,6 +414,10 @@ "AnswerRecordsAsyncClient", "ContextsClient", "ContextsAsyncClient", + "ConversationDatasetsClient", + "ConversationDatasetsAsyncClient", + "ConversationModelsClient", + "ConversationModelsAsyncClient", "ConversationProfilesClient", "ConversationProfilesAsyncClient", "ConversationsClient", @@ -368,8 +489,46 @@ "ListConversationsResponse", "ListMessagesRequest", "ListMessagesResponse", + "ConversationDataset", + "ConversationInfo", + "CreateConversationDatasetOperationMetadata", + "CreateConversationDatasetRequest", + "DeleteConversationDatasetOperationMetadata", + "DeleteConversationDatasetRequest", + "GetConversationDatasetRequest", + "ImportConversationDataOperationMetadata", + "ImportConversationDataOperationResponse", + "ImportConversationDataRequest", + "InputConfig", + "ListConversationDatasetsRequest", + "ListConversationDatasetsResponse", "ConversationEvent", + "ArticleSuggestionModelMetadata", + "ConversationModel", + "ConversationModelEvaluation", + "CreateConversationModelEvaluationOperationMetadata", + "CreateConversationModelEvaluationRequest", + "CreateConversationModelOperationMetadata", + "CreateConversationModelRequest", + "DeleteConversationModelOperationMetadata", + "DeleteConversationModelRequest", + "DeployConversationModelOperationMetadata", + "DeployConversationModelRequest", + "EvaluationConfig", + "GetConversationModelEvaluationRequest", + "GetConversationModelRequest", + "InputDataset", + "ListConversationModelEvaluationsRequest", + "ListConversationModelEvaluationsResponse", + "ListConversationModelsRequest", + "ListConversationModelsResponse", + "SmartReplyMetrics", + "SmartReplyModelMetadata", + "UndeployConversationModelOperationMetadata", + "UndeployConversationModelRequest", "AutomatedAgentConfig", + "ClearSuggestionFeatureConfigOperationMetadata", + "ClearSuggestionFeatureConfigRequest", "ConversationProfile", "CreateConversationProfileRequest", "DeleteConversationProfileRequest", @@ -380,12 +539,15 @@ "ListConversationProfilesResponse", "LoggingConfig", "NotificationConfig", + "SetSuggestionFeatureConfigOperationMetadata", + "SetSuggestionFeatureConfigRequest", "SuggestionFeature", "UpdateConversationProfileRequest", "CreateDocumentRequest", "DeleteDocumentRequest", "Document", "ExportDocumentRequest", + "ExportOperationMetadata", "GetDocumentRequest", "ImportDocumentsRequest", "ImportDocumentsResponse", diff --git a/google/cloud/dialogflow_v2/__init__.py b/google/cloud/dialogflow_v2/__init__.py index e436704ff..83aab244b 100644 --- a/google/cloud/dialogflow_v2/__init__.py +++ b/google/cloud/dialogflow_v2/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,6 +20,10 @@ from .services.answer_records import AnswerRecordsAsyncClient from .services.contexts import ContextsClient from .services.contexts import ContextsAsyncClient +from .services.conversation_datasets import ConversationDatasetsClient +from .services.conversation_datasets import ConversationDatasetsAsyncClient +from .services.conversation_models import ConversationModelsClient +from .services.conversation_models import ConversationModelsAsyncClient from .services.conversation_profiles import ConversationProfilesClient from .services.conversation_profiles import ConversationProfilesAsyncClient from .services.conversations import ConversationsClient @@ -92,8 +96,46 @@ from .types.conversation import ListConversationsResponse from .types.conversation import ListMessagesRequest from .types.conversation import ListMessagesResponse +from .types.conversation_dataset import ConversationDataset +from .types.conversation_dataset import ConversationInfo +from .types.conversation_dataset import CreateConversationDatasetOperationMetadata +from .types.conversation_dataset import CreateConversationDatasetRequest +from .types.conversation_dataset import DeleteConversationDatasetOperationMetadata +from .types.conversation_dataset import DeleteConversationDatasetRequest +from .types.conversation_dataset import GetConversationDatasetRequest +from .types.conversation_dataset import ImportConversationDataOperationMetadata +from .types.conversation_dataset import ImportConversationDataOperationResponse +from .types.conversation_dataset import ImportConversationDataRequest +from .types.conversation_dataset import InputConfig +from .types.conversation_dataset import ListConversationDatasetsRequest +from .types.conversation_dataset import ListConversationDatasetsResponse from .types.conversation_event import ConversationEvent +from .types.conversation_model import ArticleSuggestionModelMetadata +from .types.conversation_model import ConversationModel +from .types.conversation_model import ConversationModelEvaluation +from .types.conversation_model import CreateConversationModelEvaluationOperationMetadata +from .types.conversation_model import CreateConversationModelEvaluationRequest +from .types.conversation_model import CreateConversationModelOperationMetadata +from .types.conversation_model import CreateConversationModelRequest +from .types.conversation_model import DeleteConversationModelOperationMetadata +from .types.conversation_model import DeleteConversationModelRequest +from .types.conversation_model import DeployConversationModelOperationMetadata +from .types.conversation_model import DeployConversationModelRequest +from .types.conversation_model import EvaluationConfig +from .types.conversation_model import GetConversationModelEvaluationRequest +from .types.conversation_model import GetConversationModelRequest +from .types.conversation_model import InputDataset +from .types.conversation_model import ListConversationModelEvaluationsRequest +from .types.conversation_model import ListConversationModelEvaluationsResponse +from .types.conversation_model import ListConversationModelsRequest +from .types.conversation_model import ListConversationModelsResponse +from .types.conversation_model import SmartReplyMetrics +from .types.conversation_model import SmartReplyModelMetadata +from .types.conversation_model import UndeployConversationModelOperationMetadata +from .types.conversation_model import UndeployConversationModelRequest from .types.conversation_profile import AutomatedAgentConfig +from .types.conversation_profile import ClearSuggestionFeatureConfigOperationMetadata +from .types.conversation_profile import ClearSuggestionFeatureConfigRequest from .types.conversation_profile import ConversationProfile from .types.conversation_profile import CreateConversationProfileRequest from .types.conversation_profile import DeleteConversationProfileRequest @@ -104,12 +146,15 @@ from .types.conversation_profile import ListConversationProfilesResponse from .types.conversation_profile import LoggingConfig from .types.conversation_profile import NotificationConfig +from .types.conversation_profile import SetSuggestionFeatureConfigOperationMetadata +from .types.conversation_profile import SetSuggestionFeatureConfigRequest from .types.conversation_profile import SuggestionFeature from .types.conversation_profile import UpdateConversationProfileRequest from .types.document import CreateDocumentRequest from .types.document import DeleteDocumentRequest from .types.document import Document from .types.document import ExportDocumentRequest +from .types.document import ExportOperationMetadata from .types.document import GetDocumentRequest from .types.document import ImportDocumentsRequest from .types.document import ImportDocumentsResponse @@ -230,6 +275,8 @@ "AgentsAsyncClient", "AnswerRecordsAsyncClient", "ContextsAsyncClient", + "ConversationDatasetsAsyncClient", + "ConversationModelsAsyncClient", "ConversationProfilesAsyncClient", "ConversationsAsyncClient", "DocumentsAsyncClient", @@ -253,6 +300,7 @@ "AnswerRecord", "AnswerRecordsClient", "ArticleAnswer", + "ArticleSuggestionModelMetadata", "AssistQueryParameters", "AudioEncoding", "AutomatedAgentConfig", @@ -266,16 +314,30 @@ "BatchUpdateEntityTypesResponse", "BatchUpdateIntentsRequest", "BatchUpdateIntentsResponse", + "ClearSuggestionFeatureConfigOperationMetadata", + "ClearSuggestionFeatureConfigRequest", "CompleteConversationRequest", "Context", "ContextsClient", "Conversation", + "ConversationDataset", + "ConversationDatasetsClient", "ConversationEvent", + "ConversationInfo", + "ConversationModel", + "ConversationModelEvaluation", + "ConversationModelsClient", "ConversationPhoneNumber", "ConversationProfile", "ConversationProfilesClient", "ConversationsClient", "CreateContextRequest", + "CreateConversationDatasetOperationMetadata", + "CreateConversationDatasetRequest", + "CreateConversationModelEvaluationOperationMetadata", + "CreateConversationModelEvaluationRequest", + "CreateConversationModelOperationMetadata", + "CreateConversationModelRequest", "CreateConversationProfileRequest", "CreateConversationRequest", "CreateDocumentRequest", @@ -289,6 +351,10 @@ "DeleteAgentRequest", "DeleteAllContextsRequest", "DeleteContextRequest", + "DeleteConversationDatasetOperationMetadata", + "DeleteConversationDatasetRequest", + "DeleteConversationModelOperationMetadata", + "DeleteConversationModelRequest", "DeleteConversationProfileRequest", "DeleteDocumentRequest", "DeleteEntityTypeRequest", @@ -297,6 +363,8 @@ "DeleteKnowledgeBaseRequest", "DeleteSessionEntityTypeRequest", "DeleteVersionRequest", + "DeployConversationModelOperationMetadata", + "DeployConversationModelRequest", "DetectIntentRequest", "DetectIntentResponse", "Document", @@ -308,10 +376,12 @@ "Environment", "EnvironmentHistory", "EnvironmentsClient", + "EvaluationConfig", "EventInput", "ExportAgentRequest", "ExportAgentResponse", "ExportDocumentRequest", + "ExportOperationMetadata", "FaqAnswer", "Fulfillment", "FulfillmentsClient", @@ -319,6 +389,9 @@ "GcsSources", "GetAgentRequest", "GetContextRequest", + "GetConversationDatasetRequest", + "GetConversationModelEvaluationRequest", + "GetConversationModelRequest", "GetConversationProfileRequest", "GetConversationRequest", "GetDocumentRequest", @@ -336,10 +409,15 @@ "HumanAgentAssistantEvent", "HumanAgentHandoffConfig", "ImportAgentRequest", + "ImportConversationDataOperationMetadata", + "ImportConversationDataOperationResponse", + "ImportConversationDataRequest", "ImportDocumentTemplate", "ImportDocumentsRequest", "ImportDocumentsResponse", "InputAudioConfig", + "InputConfig", + "InputDataset", "Intent", "IntentBatch", "IntentView", @@ -351,6 +429,12 @@ "ListAnswerRecordsResponse", "ListContextsRequest", "ListContextsResponse", + "ListConversationDatasetsRequest", + "ListConversationDatasetsResponse", + "ListConversationModelEvaluationsRequest", + "ListConversationModelEvaluationsResponse", + "ListConversationModelsRequest", + "ListConversationModelsResponse", "ListConversationProfilesRequest", "ListConversationProfilesResponse", "ListConversationsRequest", @@ -397,7 +481,11 @@ "SessionEntityTypesClient", "SessionsClient", "SetAgentRequest", + "SetSuggestionFeatureConfigOperationMetadata", + "SetSuggestionFeatureConfigRequest", "SmartReplyAnswer", + "SmartReplyMetrics", + "SmartReplyModelMetadata", "SpeechContext", "SpeechModelVariant", "SpeechToTextConfig", @@ -418,6 +506,8 @@ "TextInput", "TextToSpeechSettings", "TrainAgentRequest", + "UndeployConversationModelOperationMetadata", + "UndeployConversationModelRequest", "UpdateAnswerRecordRequest", "UpdateContextRequest", "UpdateConversationProfileRequest", diff --git a/google/cloud/dialogflow_v2/gapic_metadata.json b/google/cloud/dialogflow_v2/gapic_metadata.json index cfaea99dc..9112f7102 100644 --- a/google/cloud/dialogflow_v2/gapic_metadata.json +++ b/google/cloud/dialogflow_v2/gapic_metadata.json @@ -217,11 +217,184 @@ } } }, + "ConversationDatasets": { + "clients": { + "grpc": { + "libraryClient": "ConversationDatasetsClient", + "rpcs": { + "CreateConversationDataset": { + "methods": [ + "create_conversation_dataset" + ] + }, + "DeleteConversationDataset": { + "methods": [ + "delete_conversation_dataset" + ] + }, + "GetConversationDataset": { + "methods": [ + "get_conversation_dataset" + ] + }, + "ImportConversationData": { + "methods": [ + "import_conversation_data" + ] + }, + "ListConversationDatasets": { + "methods": [ + "list_conversation_datasets" + ] + } + } + }, + "grpc-async": { + "libraryClient": "ConversationDatasetsAsyncClient", + "rpcs": { + "CreateConversationDataset": { + "methods": [ + "create_conversation_dataset" + ] + }, + "DeleteConversationDataset": { + "methods": [ + "delete_conversation_dataset" + ] + }, + "GetConversationDataset": { + "methods": [ + "get_conversation_dataset" + ] + }, + "ImportConversationData": { + "methods": [ + "import_conversation_data" + ] + }, + "ListConversationDatasets": { + "methods": [ + "list_conversation_datasets" + ] + } + } + } + } + }, + "ConversationModels": { + "clients": { + "grpc": { + "libraryClient": "ConversationModelsClient", + "rpcs": { + "CreateConversationModel": { + "methods": [ + "create_conversation_model" + ] + }, + "CreateConversationModelEvaluation": { + "methods": [ + "create_conversation_model_evaluation" + ] + }, + "DeleteConversationModel": { + "methods": [ + "delete_conversation_model" + ] + }, + "DeployConversationModel": { + "methods": [ + "deploy_conversation_model" + ] + }, + "GetConversationModel": { + "methods": [ + "get_conversation_model" + ] + }, + "GetConversationModelEvaluation": { + "methods": [ + "get_conversation_model_evaluation" + ] + }, + "ListConversationModelEvaluations": { + "methods": [ + "list_conversation_model_evaluations" + ] + }, + "ListConversationModels": { + "methods": [ + "list_conversation_models" + ] + }, + "UndeployConversationModel": { + "methods": [ + "undeploy_conversation_model" + ] + } + } + }, + "grpc-async": { + "libraryClient": "ConversationModelsAsyncClient", + "rpcs": { + "CreateConversationModel": { + "methods": [ + "create_conversation_model" + ] + }, + "CreateConversationModelEvaluation": { + "methods": [ + "create_conversation_model_evaluation" + ] + }, + "DeleteConversationModel": { + "methods": [ + "delete_conversation_model" + ] + }, + "DeployConversationModel": { + "methods": [ + "deploy_conversation_model" + ] + }, + "GetConversationModel": { + "methods": [ + "get_conversation_model" + ] + }, + "GetConversationModelEvaluation": { + "methods": [ + "get_conversation_model_evaluation" + ] + }, + "ListConversationModelEvaluations": { + "methods": [ + "list_conversation_model_evaluations" + ] + }, + "ListConversationModels": { + "methods": [ + "list_conversation_models" + ] + }, + "UndeployConversationModel": { + "methods": [ + "undeploy_conversation_model" + ] + } + } + } + } + }, "ConversationProfiles": { "clients": { "grpc": { "libraryClient": "ConversationProfilesClient", "rpcs": { + "ClearSuggestionFeatureConfig": { + "methods": [ + "clear_suggestion_feature_config" + ] + }, "CreateConversationProfile": { "methods": [ "create_conversation_profile" @@ -242,6 +415,11 @@ "list_conversation_profiles" ] }, + "SetSuggestionFeatureConfig": { + "methods": [ + "set_suggestion_feature_config" + ] + }, "UpdateConversationProfile": { "methods": [ "update_conversation_profile" @@ -252,6 +430,11 @@ "grpc-async": { "libraryClient": "ConversationProfilesAsyncClient", "rpcs": { + "ClearSuggestionFeatureConfig": { + "methods": [ + "clear_suggestion_feature_config" + ] + }, "CreateConversationProfile": { "methods": [ "create_conversation_profile" @@ -272,6 +455,11 @@ "list_conversation_profiles" ] }, + "SetSuggestionFeatureConfig": { + "methods": [ + "set_suggestion_feature_config" + ] + }, "UpdateConversationProfile": { "methods": [ "update_conversation_profile" diff --git a/google/cloud/dialogflow_v2/services/__init__.py b/google/cloud/dialogflow_v2/services/__init__.py index 4de65971c..e8e1c3845 100644 --- a/google/cloud/dialogflow_v2/services/__init__.py +++ b/google/cloud/dialogflow_v2/services/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/agents/__init__.py b/google/cloud/dialogflow_v2/services/agents/__init__.py index 0501fa947..db2a1a7d2 100644 --- a/google/cloud/dialogflow_v2/services/agents/__init__.py +++ b/google/cloud/dialogflow_v2/services/agents/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/agents/async_client.py b/google/cloud/dialogflow_v2/services/agents/async_client.py index 13bad140f..3ef3510bb 100644 --- a/google/cloud/dialogflow_v2/services/agents/async_client.py +++ b/google/cloud/dialogflow_v2/services/agents/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -209,7 +209,7 @@ async def get_agent( ) -> agent.Agent: r"""Retrieves the specified agent. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -313,7 +313,7 @@ async def set_agent( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -418,7 +418,7 @@ async def delete_agent( ) -> None: r"""Deletes the specified agent. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -505,7 +505,7 @@ async def search_agents( Sub-Collections `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -620,7 +620,7 @@ async def train_agent( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -746,7 +746,7 @@ async def export_agent( [ExportAgentResponse][google.cloud.dialogflow.v2.ExportAgentResponse] - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -881,7 +881,7 @@ async def import_agent( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -1002,7 +1002,7 @@ async def restore_agent( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -1099,7 +1099,7 @@ async def get_validation_result( automatically when training is completed. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 diff --git a/google/cloud/dialogflow_v2/services/agents/client.py b/google/cloud/dialogflow_v2/services/agents/client.py index 5136fb32c..4e48b82d8 100644 --- a/google/cloud/dialogflow_v2/services/agents/client.py +++ b/google/cloud/dialogflow_v2/services/agents/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -409,8 +409,7 @@ def get_agent( ) -> agent.Agent: r"""Retrieves the specified agent. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -514,8 +513,7 @@ def set_agent( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -620,8 +618,7 @@ def delete_agent( ) -> None: r"""Deletes the specified agent. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -708,8 +705,7 @@ def search_agents( Sub-Collections `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -824,8 +820,7 @@ def train_agent( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -951,8 +946,7 @@ def export_agent( [ExportAgentResponse][google.cloud.dialogflow.v2.ExportAgentResponse] - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -1087,8 +1081,7 @@ def import_agent( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -1210,8 +1203,7 @@ def restore_agent( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -1309,8 +1301,7 @@ def get_validation_result( automatically when training is completed. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 diff --git a/google/cloud/dialogflow_v2/services/agents/pagers.py b/google/cloud/dialogflow_v2/services/agents/pagers.py index 8dbecf85b..9df41a693 100644 --- a/google/cloud/dialogflow_v2/services/agents/pagers.py +++ b/google/cloud/dialogflow_v2/services/agents/pagers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/agents/transports/__init__.py b/google/cloud/dialogflow_v2/services/agents/transports/__init__.py index ceadcd3aa..703a3046b 100644 --- a/google/cloud/dialogflow_v2/services/agents/transports/__init__.py +++ b/google/cloud/dialogflow_v2/services/agents/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/agents/transports/base.py b/google/cloud/dialogflow_v2/services/agents/transports/base.py index e7727b244..43eee555b 100644 --- a/google/cloud/dialogflow_v2/services/agents/transports/base.py +++ b/google/cloud/dialogflow_v2/services/agents/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/agents/transports/grpc.py b/google/cloud/dialogflow_v2/services/agents/transports/grpc.py index 21f5032e9..06af394cf 100644 --- a/google/cloud/dialogflow_v2/services/agents/transports/grpc.py +++ b/google/cloud/dialogflow_v2/services/agents/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/agents/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2/services/agents/transports/grpc_asyncio.py index 7cd70d487..0ae691c36 100644 --- a/google/cloud/dialogflow_v2/services/agents/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2/services/agents/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/answer_records/__init__.py b/google/cloud/dialogflow_v2/services/answer_records/__init__.py index 25960120e..6fb08a96f 100644 --- a/google/cloud/dialogflow_v2/services/answer_records/__init__.py +++ b/google/cloud/dialogflow_v2/services/answer_records/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/answer_records/async_client.py b/google/cloud/dialogflow_v2/services/answer_records/async_client.py index 2120040c2..6442728eb 100644 --- a/google/cloud/dialogflow_v2/services/answer_records/async_client.py +++ b/google/cloud/dialogflow_v2/services/answer_records/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -221,7 +221,7 @@ async def list_answer_records( specified project in reverse chronological order. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -324,7 +324,7 @@ async def update_answer_record( ) -> gcd_answer_record.AnswerRecord: r"""Updates the specified answer record. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 diff --git a/google/cloud/dialogflow_v2/services/answer_records/client.py b/google/cloud/dialogflow_v2/services/answer_records/client.py index d1e1a0494..02050d6ee 100644 --- a/google/cloud/dialogflow_v2/services/answer_records/client.py +++ b/google/cloud/dialogflow_v2/services/answer_records/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -413,8 +413,7 @@ def list_answer_records( specified project in reverse chronological order. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -517,8 +516,7 @@ def update_answer_record( ) -> gcd_answer_record.AnswerRecord: r"""Updates the specified answer record. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 diff --git a/google/cloud/dialogflow_v2/services/answer_records/pagers.py b/google/cloud/dialogflow_v2/services/answer_records/pagers.py index 7a92f17a1..552c48227 100644 --- a/google/cloud/dialogflow_v2/services/answer_records/pagers.py +++ b/google/cloud/dialogflow_v2/services/answer_records/pagers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/answer_records/transports/__init__.py b/google/cloud/dialogflow_v2/services/answer_records/transports/__init__.py index e97f4f57d..889c9420d 100644 --- a/google/cloud/dialogflow_v2/services/answer_records/transports/__init__.py +++ b/google/cloud/dialogflow_v2/services/answer_records/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/answer_records/transports/base.py b/google/cloud/dialogflow_v2/services/answer_records/transports/base.py index 514a003e3..1f0a7a185 100644 --- a/google/cloud/dialogflow_v2/services/answer_records/transports/base.py +++ b/google/cloud/dialogflow_v2/services/answer_records/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/answer_records/transports/grpc.py b/google/cloud/dialogflow_v2/services/answer_records/transports/grpc.py index d1d55afdd..638a9dd01 100644 --- a/google/cloud/dialogflow_v2/services/answer_records/transports/grpc.py +++ b/google/cloud/dialogflow_v2/services/answer_records/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/answer_records/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2/services/answer_records/transports/grpc_asyncio.py index d2e087ffb..78c0eedc6 100644 --- a/google/cloud/dialogflow_v2/services/answer_records/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2/services/answer_records/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/contexts/__init__.py b/google/cloud/dialogflow_v2/services/contexts/__init__.py index 4c5791dcf..4f3cbf869 100644 --- a/google/cloud/dialogflow_v2/services/contexts/__init__.py +++ b/google/cloud/dialogflow_v2/services/contexts/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/contexts/async_client.py b/google/cloud/dialogflow_v2/services/contexts/async_client.py index b3ba8df35..cd098a21e 100644 --- a/google/cloud/dialogflow_v2/services/contexts/async_client.py +++ b/google/cloud/dialogflow_v2/services/contexts/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -210,7 +210,7 @@ async def list_contexts( session. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -314,7 +314,7 @@ async def get_context( ) -> context.Context: r"""Retrieves the specified context. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -430,7 +430,7 @@ async def create_context( context. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -553,7 +553,7 @@ async def update_context( ) -> gcd_context.Context: r"""Updates the specified context. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -672,7 +672,7 @@ async def delete_context( ) -> None: r"""Deletes the specified context. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -757,7 +757,7 @@ async def delete_all_contexts( ) -> None: r"""Deletes all active contexts in the specified session. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 diff --git a/google/cloud/dialogflow_v2/services/contexts/client.py b/google/cloud/dialogflow_v2/services/contexts/client.py index 25612ec6d..230e874dd 100644 --- a/google/cloud/dialogflow_v2/services/contexts/client.py +++ b/google/cloud/dialogflow_v2/services/contexts/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -413,8 +413,7 @@ def list_contexts( session. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -518,8 +517,7 @@ def get_context( ) -> context.Context: r"""Retrieves the specified context. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -635,8 +633,7 @@ def create_context( context. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -759,8 +756,7 @@ def update_context( ) -> gcd_context.Context: r"""Updates the specified context. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -879,8 +875,7 @@ def delete_context( ) -> None: r"""Deletes the specified context. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -965,8 +960,7 @@ def delete_all_contexts( ) -> None: r"""Deletes all active contexts in the specified session. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 diff --git a/google/cloud/dialogflow_v2/services/contexts/pagers.py b/google/cloud/dialogflow_v2/services/contexts/pagers.py index a8c9d5cbc..cc751bbdf 100644 --- a/google/cloud/dialogflow_v2/services/contexts/pagers.py +++ b/google/cloud/dialogflow_v2/services/contexts/pagers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/contexts/transports/__init__.py b/google/cloud/dialogflow_v2/services/contexts/transports/__init__.py index d25eca3aa..412097665 100644 --- a/google/cloud/dialogflow_v2/services/contexts/transports/__init__.py +++ b/google/cloud/dialogflow_v2/services/contexts/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/contexts/transports/base.py b/google/cloud/dialogflow_v2/services/contexts/transports/base.py index c2f65b08e..c6317d90e 100644 --- a/google/cloud/dialogflow_v2/services/contexts/transports/base.py +++ b/google/cloud/dialogflow_v2/services/contexts/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/contexts/transports/grpc.py b/google/cloud/dialogflow_v2/services/contexts/transports/grpc.py index a9c91434a..a320d5242 100644 --- a/google/cloud/dialogflow_v2/services/contexts/transports/grpc.py +++ b/google/cloud/dialogflow_v2/services/contexts/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/contexts/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2/services/contexts/transports/grpc_asyncio.py index 2de420770..96be8e085 100644 --- a/google/cloud/dialogflow_v2/services/contexts/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2/services/contexts/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/conversation_datasets/__init__.py b/google/cloud/dialogflow_v2/services/conversation_datasets/__init__.py new file mode 100644 index 000000000..35817e2b2 --- /dev/null +++ b/google/cloud/dialogflow_v2/services/conversation_datasets/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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 .client import ConversationDatasetsClient +from .async_client import ConversationDatasetsAsyncClient + +__all__ = ( + "ConversationDatasetsClient", + "ConversationDatasetsAsyncClient", +) diff --git a/google/cloud/dialogflow_v2/services/conversation_datasets/async_client.py b/google/cloud/dialogflow_v2/services/conversation_datasets/async_client.py new file mode 100644 index 000000000..f722d44f9 --- /dev/null +++ b/google/cloud/dialogflow_v2/services/conversation_datasets/async_client.py @@ -0,0 +1,799 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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 collections import OrderedDict +import functools +import re +from typing import Dict, Optional, Sequence, Tuple, Type, Union +import pkg_resources + +from google.api_core.client_options import ClientOptions +from google.api_core import exceptions as core_exceptions +from google.api_core import gapic_v1 +from google.api_core import retry as retries +from google.auth import credentials as ga_credentials # type: ignore +from google.oauth2 import service_account # type: ignore + +try: + OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault] +except AttributeError: # pragma: NO COVER + OptionalRetry = Union[retries.Retry, object] # type: ignore + +from google.api_core import operation # type: ignore +from google.api_core import operation_async # type: ignore +from google.cloud.dialogflow_v2.services.conversation_datasets import pagers +from google.cloud.dialogflow_v2.types import conversation_dataset +from google.cloud.dialogflow_v2.types import ( + conversation_dataset as gcd_conversation_dataset, +) +from google.protobuf import empty_pb2 # type: ignore +from google.protobuf import timestamp_pb2 # type: ignore +from .transports.base import ConversationDatasetsTransport, DEFAULT_CLIENT_INFO +from .transports.grpc_asyncio import ConversationDatasetsGrpcAsyncIOTransport +from .client import ConversationDatasetsClient + + +class ConversationDatasetsAsyncClient: + """Conversation datasets. + Conversation datasets contain raw conversation files and their + customizable metadata that can be used for model training. + """ + + _client: ConversationDatasetsClient + + DEFAULT_ENDPOINT = ConversationDatasetsClient.DEFAULT_ENDPOINT + DEFAULT_MTLS_ENDPOINT = ConversationDatasetsClient.DEFAULT_MTLS_ENDPOINT + + conversation_dataset_path = staticmethod( + ConversationDatasetsClient.conversation_dataset_path + ) + parse_conversation_dataset_path = staticmethod( + ConversationDatasetsClient.parse_conversation_dataset_path + ) + common_billing_account_path = staticmethod( + ConversationDatasetsClient.common_billing_account_path + ) + parse_common_billing_account_path = staticmethod( + ConversationDatasetsClient.parse_common_billing_account_path + ) + common_folder_path = staticmethod(ConversationDatasetsClient.common_folder_path) + parse_common_folder_path = staticmethod( + ConversationDatasetsClient.parse_common_folder_path + ) + common_organization_path = staticmethod( + ConversationDatasetsClient.common_organization_path + ) + parse_common_organization_path = staticmethod( + ConversationDatasetsClient.parse_common_organization_path + ) + common_project_path = staticmethod(ConversationDatasetsClient.common_project_path) + parse_common_project_path = staticmethod( + ConversationDatasetsClient.parse_common_project_path + ) + common_location_path = staticmethod(ConversationDatasetsClient.common_location_path) + parse_common_location_path = staticmethod( + ConversationDatasetsClient.parse_common_location_path + ) + + @classmethod + def from_service_account_info(cls, info: dict, *args, **kwargs): + """Creates an instance of this client using the provided credentials + info. + + Args: + info (dict): The service account private key info. + args: Additional arguments to pass to the constructor. + kwargs: Additional arguments to pass to the constructor. + + Returns: + ConversationDatasetsAsyncClient: The constructed client. + """ + return ConversationDatasetsClient.from_service_account_info.__func__(ConversationDatasetsAsyncClient, info, *args, **kwargs) # type: ignore + + @classmethod + def from_service_account_file(cls, filename: str, *args, **kwargs): + """Creates an instance of this client using the provided credentials + file. + + Args: + filename (str): The path to the service account private key json + file. + args: Additional arguments to pass to the constructor. + kwargs: Additional arguments to pass to the constructor. + + Returns: + ConversationDatasetsAsyncClient: The constructed client. + """ + return ConversationDatasetsClient.from_service_account_file.__func__(ConversationDatasetsAsyncClient, filename, *args, **kwargs) # type: ignore + + from_service_account_json = from_service_account_file + + @classmethod + def get_mtls_endpoint_and_cert_source( + cls, client_options: Optional[ClientOptions] = None + ): + """Return the API endpoint and client cert source for mutual TLS. + + The client cert source is determined in the following order: + (1) if `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable is not "true", the + client cert source is None. + (2) if `client_options.client_cert_source` is provided, use the provided one; if the + default client cert source exists, use the default one; otherwise the client cert + source is None. + + The API endpoint is determined in the following order: + (1) if `client_options.api_endpoint` if provided, use the provided one. + (2) if `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable is "always", use the + default mTLS endpoint; if the environment variabel is "never", use the default API + endpoint; otherwise if client cert source exists, use the default mTLS endpoint, otherwise + use the default API endpoint. + + More details can be found at https://google.aip.dev/auth/4114. + + Args: + client_options (google.api_core.client_options.ClientOptions): Custom options for the + client. Only the `api_endpoint` and `client_cert_source` properties may be used + in this method. + + Returns: + Tuple[str, Callable[[], Tuple[bytes, bytes]]]: returns the API endpoint and the + client cert source to use. + + Raises: + google.auth.exceptions.MutualTLSChannelError: If any errors happen. + """ + return ConversationDatasetsClient.get_mtls_endpoint_and_cert_source(client_options) # type: ignore + + @property + def transport(self) -> ConversationDatasetsTransport: + """Returns the transport used by the client instance. + + Returns: + ConversationDatasetsTransport: The transport used by the client instance. + """ + return self._client.transport + + get_transport_class = functools.partial( + type(ConversationDatasetsClient).get_transport_class, + type(ConversationDatasetsClient), + ) + + def __init__( + self, + *, + credentials: ga_credentials.Credentials = None, + transport: Union[str, ConversationDatasetsTransport] = "grpc_asyncio", + client_options: ClientOptions = None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + ) -> None: + """Instantiates the conversation datasets client. + + Args: + credentials (Optional[google.auth.credentials.Credentials]): The + authorization credentials to attach to requests. These + credentials identify the application to the service; if none + are specified, the client will attempt to ascertain the + credentials from the environment. + transport (Union[str, ~.ConversationDatasetsTransport]): The + transport to use. If set to None, a transport is chosen + automatically. + client_options (ClientOptions): Custom options for the client. It + won't take effect if a ``transport`` instance is provided. + (1) The ``api_endpoint`` property can be used to override the + default endpoint provided by the client. GOOGLE_API_USE_MTLS_ENDPOINT + environment variable can also be used to override the endpoint: + "always" (always use the default mTLS endpoint), "never" (always + use the default regular endpoint) and "auto" (auto switch to the + default mTLS endpoint if client certificate is present, this is + the default value). However, the ``api_endpoint`` property takes + precedence if provided. + (2) If GOOGLE_API_USE_CLIENT_CERTIFICATE environment variable + is "true", then the ``client_cert_source`` property can be used + to provide client certificate for mutual TLS transport. If + not provided, the default SSL client certificate will be used if + present. If GOOGLE_API_USE_CLIENT_CERTIFICATE is "false" or not + set, no client certificate will be used. + + Raises: + google.auth.exceptions.MutualTlsChannelError: If mutual TLS transport + creation failed for any reason. + """ + self._client = ConversationDatasetsClient( + credentials=credentials, + transport=transport, + client_options=client_options, + client_info=client_info, + ) + + async def create_conversation_dataset( + self, + request: Union[ + gcd_conversation_dataset.CreateConversationDatasetRequest, dict + ] = None, + *, + parent: str = None, + conversation_dataset: gcd_conversation_dataset.ConversationDataset = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> operation_async.AsyncOperation: + r"""Creates a new conversation dataset. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [CreateConversationDatasetOperationMetadata][google.cloud.dialogflow.v2.CreateConversationDatasetOperationMetadata] + - ``response``: + [ConversationDataset][google.cloud.dialogflow.v2.ConversationDataset] + + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_create_conversation_dataset(): + # Create a client + client = dialogflow_v2.ConversationDatasetsClient() + + # Initialize request argument(s) + conversation_dataset = dialogflow_v2.ConversationDataset() + conversation_dataset.display_name = "display_name_value" + + request = dialogflow_v2.CreateConversationDatasetRequest( + parent="parent_value", + conversation_dataset=conversation_dataset, + ) + + # Make the request + operation = client.create_conversation_dataset(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.CreateConversationDatasetRequest, dict]): + The request object. The request message for + [ConversationDatasets.CreateConversationDataset][google.cloud.dialogflow.v2.ConversationDatasets.CreateConversationDataset]. + parent (:class:`str`): + Required. The project to create conversation dataset + for. Format: + ``projects//locations/`` + + This corresponds to the ``parent`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + conversation_dataset (:class:`google.cloud.dialogflow_v2.types.ConversationDataset`): + Required. The conversation dataset to + create. + + This corresponds to the ``conversation_dataset`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.api_core.operation_async.AsyncOperation: + An object representing a long-running operation. + + The result type for the operation will be :class:`google.cloud.dialogflow_v2.types.ConversationDataset` Represents a conversation dataset that a user imports raw data into. + The data inside ConversationDataset can not be + changed after ImportConversationData finishes (and + calling ImportConversationData on a dataset that + already has data is not allowed). + + """ + # Create or coerce a protobuf request object. + # Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + has_flattened_params = any([parent, conversation_dataset]) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + request = gcd_conversation_dataset.CreateConversationDatasetRequest(request) + + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if parent is not None: + request.parent = parent + if conversation_dataset is not None: + request.conversation_dataset = conversation_dataset + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = gapic_v1.method_async.wrap_method( + self._client._transport.create_conversation_dataset, + default_timeout=None, + client_info=DEFAULT_CLIENT_INFO, + ) + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", request.parent),)), + ) + + # Send the request. + response = await rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # Wrap the response in an operation future. + response = operation_async.from_gapic( + response, + self._client._transport.operations_client, + gcd_conversation_dataset.ConversationDataset, + metadata_type=gcd_conversation_dataset.CreateConversationDatasetOperationMetadata, + ) + + # Done; return the response. + return response + + async def get_conversation_dataset( + self, + request: Union[conversation_dataset.GetConversationDatasetRequest, dict] = None, + *, + name: str = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> conversation_dataset.ConversationDataset: + r"""Retrieves the specified conversation dataset. + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_get_conversation_dataset(): + # Create a client + client = dialogflow_v2.ConversationDatasetsClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetConversationDatasetRequest( + name="name_value", + ) + + # Make the request + response = client.get_conversation_dataset(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.GetConversationDatasetRequest, dict]): + The request object. The request message for + [ConversationDatasets.GetConversationDataset][google.cloud.dialogflow.v2.ConversationDatasets.GetConversationDataset]. + name (:class:`str`): + Required. The conversation dataset to retrieve. Format: + ``projects//locations//conversationDatasets/`` + + This corresponds to the ``name`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.cloud.dialogflow_v2.types.ConversationDataset: + Represents a conversation dataset + that a user imports raw data into. The + data inside ConversationDataset can not + be changed after ImportConversationData + finishes (and calling + ImportConversationData on a dataset that + already has data is not allowed). + + """ + # Create or coerce a protobuf request object. + # Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + has_flattened_params = any([name]) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + request = conversation_dataset.GetConversationDatasetRequest(request) + + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if name is not None: + request.name = name + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = gapic_v1.method_async.wrap_method( + self._client._transport.get_conversation_dataset, + default_timeout=None, + client_info=DEFAULT_CLIENT_INFO, + ) + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request.name),)), + ) + + # Send the request. + response = await rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # Done; return the response. + return response + + async def list_conversation_datasets( + self, + request: Union[ + conversation_dataset.ListConversationDatasetsRequest, dict + ] = None, + *, + parent: str = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> pagers.ListConversationDatasetsAsyncPager: + r"""Returns the list of all conversation datasets in the + specified project and location. + + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_list_conversation_datasets(): + # Create a client + client = dialogflow_v2.ConversationDatasetsClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListConversationDatasetsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_conversation_datasets(request=request) + + # Handle the response + for response in page_result: + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.ListConversationDatasetsRequest, dict]): + The request object. The request message for + [ConversationDatasets.ListConversationDatasets][google.cloud.dialogflow.v2.ConversationDatasets.ListConversationDatasets]. + parent (:class:`str`): + Required. The project and location name to list all + conversation datasets for. Format: + ``projects//locations/`` + + This corresponds to the ``parent`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.cloud.dialogflow_v2.services.conversation_datasets.pagers.ListConversationDatasetsAsyncPager: + The response message for + [ConversationDatasets.ListConversationDatasets][google.cloud.dialogflow.v2.ConversationDatasets.ListConversationDatasets]. + + Iterating over this object will yield results and + resolve additional pages automatically. + + """ + # Create or coerce a protobuf request object. + # Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + has_flattened_params = any([parent]) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + request = conversation_dataset.ListConversationDatasetsRequest(request) + + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if parent is not None: + request.parent = parent + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = gapic_v1.method_async.wrap_method( + self._client._transport.list_conversation_datasets, + default_timeout=None, + client_info=DEFAULT_CLIENT_INFO, + ) + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", request.parent),)), + ) + + # Send the request. + response = await rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # This method is paged; wrap the response in a pager, which provides + # an `__aiter__` convenience method. + response = pagers.ListConversationDatasetsAsyncPager( + method=rpc, request=request, response=response, metadata=metadata, + ) + + # Done; return the response. + return response + + async def delete_conversation_dataset( + self, + request: Union[ + conversation_dataset.DeleteConversationDatasetRequest, dict + ] = None, + *, + name: str = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> operation_async.AsyncOperation: + r"""Deletes the specified conversation dataset. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [DeleteConversationDatasetOperationMetadata][google.cloud.dialogflow.v2.DeleteConversationDatasetOperationMetadata] + - ``response``: An `Empty + message `__ + + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_delete_conversation_dataset(): + # Create a client + client = dialogflow_v2.ConversationDatasetsClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteConversationDatasetRequest( + name="name_value", + ) + + # Make the request + operation = client.delete_conversation_dataset(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.DeleteConversationDatasetRequest, dict]): + The request object. The request message for + [ConversationDatasets.DeleteConversationDataset][google.cloud.dialogflow.v2.ConversationDatasets.DeleteConversationDataset]. + name (:class:`str`): + Required. The conversation dataset to delete. Format: + ``projects//locations//conversationDatasets/`` + + This corresponds to the ``name`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.api_core.operation_async.AsyncOperation: + An object representing a long-running operation. + + The result type for the operation will be :class:`google.protobuf.empty_pb2.Empty` A generic empty message that you can re-use to avoid defining duplicated + empty messages in your APIs. A typical example is to + use it as the request or the response type of an API + method. For instance: + + service Foo { + rpc Bar(google.protobuf.Empty) returns + (google.protobuf.Empty); + + } + + The JSON representation for Empty is empty JSON + object {}. + + """ + # Create or coerce a protobuf request object. + # Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + has_flattened_params = any([name]) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + request = conversation_dataset.DeleteConversationDatasetRequest(request) + + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if name is not None: + request.name = name + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = gapic_v1.method_async.wrap_method( + self._client._transport.delete_conversation_dataset, + default_timeout=None, + client_info=DEFAULT_CLIENT_INFO, + ) + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request.name),)), + ) + + # Send the request. + response = await rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # Wrap the response in an operation future. + response = operation_async.from_gapic( + response, + self._client._transport.operations_client, + empty_pb2.Empty, + metadata_type=conversation_dataset.DeleteConversationDatasetOperationMetadata, + ) + + # Done; return the response. + return response + + async def import_conversation_data( + self, + request: Union[conversation_dataset.ImportConversationDataRequest, dict] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> operation_async.AsyncOperation: + r"""Import data into the specified conversation dataset. Note that + it is not allowed to import data to a conversation dataset that + already has data in it. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [ImportConversationDataOperationMetadata][google.cloud.dialogflow.v2.ImportConversationDataOperationMetadata] + - ``response``: + [ImportConversationDataOperationResponse][google.cloud.dialogflow.v2.ImportConversationDataOperationResponse] + + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_import_conversation_data(): + # Create a client + client = dialogflow_v2.ConversationDatasetsClient() + + # Initialize request argument(s) + input_config = dialogflow_v2.InputConfig() + input_config.gcs_source.uris = ['uris_value_1', 'uris_value_2'] + + request = dialogflow_v2.ImportConversationDataRequest( + name="name_value", + input_config=input_config, + ) + + # Make the request + operation = client.import_conversation_data(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.ImportConversationDataRequest, dict]): + The request object. The request message for + [ConversationDatasets.ImportConversationData][google.cloud.dialogflow.v2.ConversationDatasets.ImportConversationData]. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.api_core.operation_async.AsyncOperation: + An object representing a long-running operation. + + The result type for the operation will be :class:`google.cloud.dialogflow_v2.types.ImportConversationDataOperationResponse` Response used for [ConversationDatasets.ImportConversationData][google.cloud.dialogflow.v2.ConversationDatasets.ImportConversationData] long + running operation. + + """ + # Create or coerce a protobuf request object. + request = conversation_dataset.ImportConversationDataRequest(request) + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = gapic_v1.method_async.wrap_method( + self._client._transport.import_conversation_data, + default_timeout=None, + client_info=DEFAULT_CLIENT_INFO, + ) + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request.name),)), + ) + + # Send the request. + response = await rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # Wrap the response in an operation future. + response = operation_async.from_gapic( + response, + self._client._transport.operations_client, + conversation_dataset.ImportConversationDataOperationResponse, + metadata_type=conversation_dataset.ImportConversationDataOperationMetadata, + ) + + # Done; return the response. + return response + + async def __aenter__(self): + return self + + async def __aexit__(self, exc_type, exc, tb): + await self.transport.close() + + +try: + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=pkg_resources.get_distribution( + "google-cloud-dialogflow", + ).version, + ) +except pkg_resources.DistributionNotFound: + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo() + + +__all__ = ("ConversationDatasetsAsyncClient",) diff --git a/google/cloud/dialogflow_v2/services/conversation_datasets/client.py b/google/cloud/dialogflow_v2/services/conversation_datasets/client.py new file mode 100644 index 000000000..afb008c3f --- /dev/null +++ b/google/cloud/dialogflow_v2/services/conversation_datasets/client.py @@ -0,0 +1,1017 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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 collections import OrderedDict +import os +import re +from typing import Dict, Optional, Sequence, Tuple, Type, Union +import pkg_resources + +from google.api_core import client_options as client_options_lib +from google.api_core import exceptions as core_exceptions +from google.api_core import gapic_v1 +from google.api_core import retry as retries +from google.auth import credentials as ga_credentials # type: ignore +from google.auth.transport import mtls # type: ignore +from google.auth.transport.grpc import SslCredentials # type: ignore +from google.auth.exceptions import MutualTLSChannelError # type: ignore +from google.oauth2 import service_account # type: ignore + +try: + OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault] +except AttributeError: # pragma: NO COVER + OptionalRetry = Union[retries.Retry, object] # type: ignore + +from google.api_core import operation # type: ignore +from google.api_core import operation_async # type: ignore +from google.cloud.dialogflow_v2.services.conversation_datasets import pagers +from google.cloud.dialogflow_v2.types import conversation_dataset +from google.cloud.dialogflow_v2.types import ( + conversation_dataset as gcd_conversation_dataset, +) +from google.protobuf import empty_pb2 # type: ignore +from google.protobuf import timestamp_pb2 # type: ignore +from .transports.base import ConversationDatasetsTransport, DEFAULT_CLIENT_INFO +from .transports.grpc import ConversationDatasetsGrpcTransport +from .transports.grpc_asyncio import ConversationDatasetsGrpcAsyncIOTransport + + +class ConversationDatasetsClientMeta(type): + """Metaclass for the ConversationDatasets client. + + This provides class-level methods for building and retrieving + support objects (e.g. transport) without polluting the client instance + objects. + """ + + _transport_registry = ( + OrderedDict() + ) # type: Dict[str, Type[ConversationDatasetsTransport]] + _transport_registry["grpc"] = ConversationDatasetsGrpcTransport + _transport_registry["grpc_asyncio"] = ConversationDatasetsGrpcAsyncIOTransport + + def get_transport_class( + cls, label: str = None, + ) -> Type[ConversationDatasetsTransport]: + """Returns an appropriate transport class. + + Args: + label: The name of the desired transport. If none is + provided, then the first transport in the registry is used. + + Returns: + The transport class to use. + """ + # If a specific transport is requested, return that one. + if label: + return cls._transport_registry[label] + + # No transport is requested; return the default (that is, the first one + # in the dictionary). + return next(iter(cls._transport_registry.values())) + + +class ConversationDatasetsClient(metaclass=ConversationDatasetsClientMeta): + """Conversation datasets. + Conversation datasets contain raw conversation files and their + customizable metadata that can be used for model training. + """ + + @staticmethod + def _get_default_mtls_endpoint(api_endpoint): + """Converts api endpoint to mTLS endpoint. + + Convert "*.sandbox.googleapis.com" and "*.googleapis.com" to + "*.mtls.sandbox.googleapis.com" and "*.mtls.googleapis.com" respectively. + Args: + api_endpoint (Optional[str]): the api endpoint to convert. + Returns: + str: converted mTLS api endpoint. + """ + if not api_endpoint: + return api_endpoint + + mtls_endpoint_re = re.compile( + r"(?P[^.]+)(?P\.mtls)?(?P\.sandbox)?(?P\.googleapis\.com)?" + ) + + m = mtls_endpoint_re.match(api_endpoint) + name, mtls, sandbox, googledomain = m.groups() + if mtls or not googledomain: + return api_endpoint + + if sandbox: + return api_endpoint.replace( + "sandbox.googleapis.com", "mtls.sandbox.googleapis.com" + ) + + return api_endpoint.replace(".googleapis.com", ".mtls.googleapis.com") + + DEFAULT_ENDPOINT = "dialogflow.googleapis.com" + DEFAULT_MTLS_ENDPOINT = _get_default_mtls_endpoint.__func__( # type: ignore + DEFAULT_ENDPOINT + ) + + @classmethod + def from_service_account_info(cls, info: dict, *args, **kwargs): + """Creates an instance of this client using the provided credentials + info. + + Args: + info (dict): The service account private key info. + args: Additional arguments to pass to the constructor. + kwargs: Additional arguments to pass to the constructor. + + Returns: + ConversationDatasetsClient: The constructed client. + """ + credentials = service_account.Credentials.from_service_account_info(info) + kwargs["credentials"] = credentials + return cls(*args, **kwargs) + + @classmethod + def from_service_account_file(cls, filename: str, *args, **kwargs): + """Creates an instance of this client using the provided credentials + file. + + Args: + filename (str): The path to the service account private key json + file. + args: Additional arguments to pass to the constructor. + kwargs: Additional arguments to pass to the constructor. + + Returns: + ConversationDatasetsClient: The constructed client. + """ + credentials = service_account.Credentials.from_service_account_file(filename) + kwargs["credentials"] = credentials + return cls(*args, **kwargs) + + from_service_account_json = from_service_account_file + + @property + def transport(self) -> ConversationDatasetsTransport: + """Returns the transport used by the client instance. + + Returns: + ConversationDatasetsTransport: The transport used by the client + instance. + """ + return self._transport + + @staticmethod + def conversation_dataset_path( + project: str, location: str, conversation_dataset: str, + ) -> str: + """Returns a fully-qualified conversation_dataset string.""" + return "projects/{project}/locations/{location}/conversationDatasets/{conversation_dataset}".format( + project=project, + location=location, + conversation_dataset=conversation_dataset, + ) + + @staticmethod + def parse_conversation_dataset_path(path: str) -> Dict[str, str]: + """Parses a conversation_dataset path into its component segments.""" + m = re.match( + r"^projects/(?P.+?)/locations/(?P.+?)/conversationDatasets/(?P.+?)$", + path, + ) + return m.groupdict() if m else {} + + @staticmethod + def common_billing_account_path(billing_account: str,) -> str: + """Returns a fully-qualified billing_account string.""" + return "billingAccounts/{billing_account}".format( + billing_account=billing_account, + ) + + @staticmethod + def parse_common_billing_account_path(path: str) -> Dict[str, str]: + """Parse a billing_account path into its component segments.""" + m = re.match(r"^billingAccounts/(?P.+?)$", path) + return m.groupdict() if m else {} + + @staticmethod + def common_folder_path(folder: str,) -> str: + """Returns a fully-qualified folder string.""" + return "folders/{folder}".format(folder=folder,) + + @staticmethod + def parse_common_folder_path(path: str) -> Dict[str, str]: + """Parse a folder path into its component segments.""" + m = re.match(r"^folders/(?P.+?)$", path) + return m.groupdict() if m else {} + + @staticmethod + def common_organization_path(organization: str,) -> str: + """Returns a fully-qualified organization string.""" + return "organizations/{organization}".format(organization=organization,) + + @staticmethod + def parse_common_organization_path(path: str) -> Dict[str, str]: + """Parse a organization path into its component segments.""" + m = re.match(r"^organizations/(?P.+?)$", path) + return m.groupdict() if m else {} + + @staticmethod + def common_project_path(project: str,) -> str: + """Returns a fully-qualified project string.""" + return "projects/{project}".format(project=project,) + + @staticmethod + def parse_common_project_path(path: str) -> Dict[str, str]: + """Parse a project path into its component segments.""" + m = re.match(r"^projects/(?P.+?)$", path) + return m.groupdict() if m else {} + + @staticmethod + def common_location_path(project: str, location: str,) -> str: + """Returns a fully-qualified location string.""" + return "projects/{project}/locations/{location}".format( + project=project, location=location, + ) + + @staticmethod + def parse_common_location_path(path: str) -> Dict[str, str]: + """Parse a location path into its component segments.""" + m = re.match(r"^projects/(?P.+?)/locations/(?P.+?)$", path) + return m.groupdict() if m else {} + + @classmethod + def get_mtls_endpoint_and_cert_source( + cls, client_options: Optional[client_options_lib.ClientOptions] = None + ): + """Return the API endpoint and client cert source for mutual TLS. + + The client cert source is determined in the following order: + (1) if `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable is not "true", the + client cert source is None. + (2) if `client_options.client_cert_source` is provided, use the provided one; if the + default client cert source exists, use the default one; otherwise the client cert + source is None. + + The API endpoint is determined in the following order: + (1) if `client_options.api_endpoint` if provided, use the provided one. + (2) if `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable is "always", use the + default mTLS endpoint; if the environment variabel is "never", use the default API + endpoint; otherwise if client cert source exists, use the default mTLS endpoint, otherwise + use the default API endpoint. + + More details can be found at https://google.aip.dev/auth/4114. + + Args: + client_options (google.api_core.client_options.ClientOptions): Custom options for the + client. Only the `api_endpoint` and `client_cert_source` properties may be used + in this method. + + Returns: + Tuple[str, Callable[[], Tuple[bytes, bytes]]]: returns the API endpoint and the + client cert source to use. + + Raises: + google.auth.exceptions.MutualTLSChannelError: If any errors happen. + """ + if client_options is None: + client_options = client_options_lib.ClientOptions() + use_client_cert = os.getenv("GOOGLE_API_USE_CLIENT_CERTIFICATE", "false") + use_mtls_endpoint = os.getenv("GOOGLE_API_USE_MTLS_ENDPOINT", "auto") + if use_client_cert not in ("true", "false"): + raise ValueError( + "Environment variable `GOOGLE_API_USE_CLIENT_CERTIFICATE` must be either `true` or `false`" + ) + if use_mtls_endpoint not in ("auto", "never", "always"): + raise MutualTLSChannelError( + "Environment variable `GOOGLE_API_USE_MTLS_ENDPOINT` must be `never`, `auto` or `always`" + ) + + # Figure out the client cert source to use. + client_cert_source = None + if use_client_cert == "true": + if client_options.client_cert_source: + client_cert_source = client_options.client_cert_source + elif mtls.has_default_client_cert_source(): + client_cert_source = mtls.default_client_cert_source() + + # Figure out which api endpoint to use. + if client_options.api_endpoint is not None: + api_endpoint = client_options.api_endpoint + elif use_mtls_endpoint == "always" or ( + use_mtls_endpoint == "auto" and client_cert_source + ): + api_endpoint = cls.DEFAULT_MTLS_ENDPOINT + else: + api_endpoint = cls.DEFAULT_ENDPOINT + + return api_endpoint, client_cert_source + + def __init__( + self, + *, + credentials: Optional[ga_credentials.Credentials] = None, + transport: Union[str, ConversationDatasetsTransport, None] = None, + client_options: Optional[client_options_lib.ClientOptions] = None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + ) -> None: + """Instantiates the conversation datasets client. + + Args: + credentials (Optional[google.auth.credentials.Credentials]): The + authorization credentials to attach to requests. These + credentials identify the application to the service; if none + are specified, the client will attempt to ascertain the + credentials from the environment. + transport (Union[str, ConversationDatasetsTransport]): The + transport to use. If set to None, a transport is chosen + automatically. + client_options (google.api_core.client_options.ClientOptions): Custom options for the + client. It won't take effect if a ``transport`` instance is provided. + (1) The ``api_endpoint`` property can be used to override the + default endpoint provided by the client. GOOGLE_API_USE_MTLS_ENDPOINT + environment variable can also be used to override the endpoint: + "always" (always use the default mTLS endpoint), "never" (always + use the default regular endpoint) and "auto" (auto switch to the + default mTLS endpoint if client certificate is present, this is + the default value). However, the ``api_endpoint`` property takes + precedence if provided. + (2) If GOOGLE_API_USE_CLIENT_CERTIFICATE environment variable + is "true", then the ``client_cert_source`` property can be used + to provide client certificate for mutual TLS transport. If + not provided, the default SSL client certificate will be used if + present. If GOOGLE_API_USE_CLIENT_CERTIFICATE is "false" or not + set, no client certificate will be used. + client_info (google.api_core.gapic_v1.client_info.ClientInfo): + The client info used to send a user-agent string along with + API requests. If ``None``, then default info will be used. + Generally, you only need to set this if you're developing + your own client library. + + Raises: + google.auth.exceptions.MutualTLSChannelError: If mutual TLS transport + creation failed for any reason. + """ + if isinstance(client_options, dict): + client_options = client_options_lib.from_dict(client_options) + if client_options is None: + client_options = client_options_lib.ClientOptions() + + api_endpoint, client_cert_source_func = self.get_mtls_endpoint_and_cert_source( + client_options + ) + + api_key_value = getattr(client_options, "api_key", None) + if api_key_value and credentials: + raise ValueError( + "client_options.api_key and credentials are mutually exclusive" + ) + + # Save or instantiate the transport. + # Ordinarily, we provide the transport, but allowing a custom transport + # instance provides an extensibility point for unusual situations. + if isinstance(transport, ConversationDatasetsTransport): + # transport is a ConversationDatasetsTransport instance. + if credentials or client_options.credentials_file or api_key_value: + raise ValueError( + "When providing a transport instance, " + "provide its credentials directly." + ) + if client_options.scopes: + raise ValueError( + "When providing a transport instance, provide its scopes " + "directly." + ) + self._transport = transport + else: + import google.auth._default # type: ignore + + if api_key_value and hasattr( + google.auth._default, "get_api_key_credentials" + ): + credentials = google.auth._default.get_api_key_credentials( + api_key_value + ) + + Transport = type(self).get_transport_class(transport) + self._transport = Transport( + credentials=credentials, + credentials_file=client_options.credentials_file, + host=api_endpoint, + scopes=client_options.scopes, + client_cert_source_for_mtls=client_cert_source_func, + quota_project_id=client_options.quota_project_id, + client_info=client_info, + always_use_jwt_access=True, + ) + + def create_conversation_dataset( + self, + request: Union[ + gcd_conversation_dataset.CreateConversationDatasetRequest, dict + ] = None, + *, + parent: str = None, + conversation_dataset: gcd_conversation_dataset.ConversationDataset = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> operation.Operation: + r"""Creates a new conversation dataset. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [CreateConversationDatasetOperationMetadata][google.cloud.dialogflow.v2.CreateConversationDatasetOperationMetadata] + - ``response``: + [ConversationDataset][google.cloud.dialogflow.v2.ConversationDataset] + + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_create_conversation_dataset(): + # Create a client + client = dialogflow_v2.ConversationDatasetsClient() + + # Initialize request argument(s) + conversation_dataset = dialogflow_v2.ConversationDataset() + conversation_dataset.display_name = "display_name_value" + + request = dialogflow_v2.CreateConversationDatasetRequest( + parent="parent_value", + conversation_dataset=conversation_dataset, + ) + + # Make the request + operation = client.create_conversation_dataset(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.CreateConversationDatasetRequest, dict]): + The request object. The request message for + [ConversationDatasets.CreateConversationDataset][google.cloud.dialogflow.v2.ConversationDatasets.CreateConversationDataset]. + parent (str): + Required. The project to create conversation dataset + for. Format: + ``projects//locations/`` + + This corresponds to the ``parent`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + conversation_dataset (google.cloud.dialogflow_v2.types.ConversationDataset): + Required. The conversation dataset to + create. + + This corresponds to the ``conversation_dataset`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.api_core.operation.Operation: + An object representing a long-running operation. + + The result type for the operation will be :class:`google.cloud.dialogflow_v2.types.ConversationDataset` Represents a conversation dataset that a user imports raw data into. + The data inside ConversationDataset can not be + changed after ImportConversationData finishes (and + calling ImportConversationData on a dataset that + already has data is not allowed). + + """ + # Create or coerce a protobuf request object. + # Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + has_flattened_params = any([parent, conversation_dataset]) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # Minor optimization to avoid making a copy if the user passes + # in a gcd_conversation_dataset.CreateConversationDatasetRequest. + # There's no risk of modifying the input as we've already verified + # there are no flattened fields. + if not isinstance( + request, gcd_conversation_dataset.CreateConversationDatasetRequest + ): + request = gcd_conversation_dataset.CreateConversationDatasetRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if parent is not None: + request.parent = parent + if conversation_dataset is not None: + request.conversation_dataset = conversation_dataset + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[ + self._transport.create_conversation_dataset + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", request.parent),)), + ) + + # Send the request. + response = rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # Wrap the response in an operation future. + response = operation.from_gapic( + response, + self._transport.operations_client, + gcd_conversation_dataset.ConversationDataset, + metadata_type=gcd_conversation_dataset.CreateConversationDatasetOperationMetadata, + ) + + # Done; return the response. + return response + + def get_conversation_dataset( + self, + request: Union[conversation_dataset.GetConversationDatasetRequest, dict] = None, + *, + name: str = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> conversation_dataset.ConversationDataset: + r"""Retrieves the specified conversation dataset. + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_get_conversation_dataset(): + # Create a client + client = dialogflow_v2.ConversationDatasetsClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetConversationDatasetRequest( + name="name_value", + ) + + # Make the request + response = client.get_conversation_dataset(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.GetConversationDatasetRequest, dict]): + The request object. The request message for + [ConversationDatasets.GetConversationDataset][google.cloud.dialogflow.v2.ConversationDatasets.GetConversationDataset]. + name (str): + Required. The conversation dataset to retrieve. Format: + ``projects//locations//conversationDatasets/`` + + This corresponds to the ``name`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.cloud.dialogflow_v2.types.ConversationDataset: + Represents a conversation dataset + that a user imports raw data into. The + data inside ConversationDataset can not + be changed after ImportConversationData + finishes (and calling + ImportConversationData on a dataset that + already has data is not allowed). + + """ + # Create or coerce a protobuf request object. + # Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + has_flattened_params = any([name]) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # Minor optimization to avoid making a copy if the user passes + # in a conversation_dataset.GetConversationDatasetRequest. + # There's no risk of modifying the input as we've already verified + # there are no flattened fields. + if not isinstance(request, conversation_dataset.GetConversationDatasetRequest): + request = conversation_dataset.GetConversationDatasetRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if name is not None: + request.name = name + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.get_conversation_dataset] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request.name),)), + ) + + # Send the request. + response = rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # Done; return the response. + return response + + def list_conversation_datasets( + self, + request: Union[ + conversation_dataset.ListConversationDatasetsRequest, dict + ] = None, + *, + parent: str = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> pagers.ListConversationDatasetsPager: + r"""Returns the list of all conversation datasets in the + specified project and location. + + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_list_conversation_datasets(): + # Create a client + client = dialogflow_v2.ConversationDatasetsClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListConversationDatasetsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_conversation_datasets(request=request) + + # Handle the response + for response in page_result: + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.ListConversationDatasetsRequest, dict]): + The request object. The request message for + [ConversationDatasets.ListConversationDatasets][google.cloud.dialogflow.v2.ConversationDatasets.ListConversationDatasets]. + parent (str): + Required. The project and location name to list all + conversation datasets for. Format: + ``projects//locations/`` + + This corresponds to the ``parent`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.cloud.dialogflow_v2.services.conversation_datasets.pagers.ListConversationDatasetsPager: + The response message for + [ConversationDatasets.ListConversationDatasets][google.cloud.dialogflow.v2.ConversationDatasets.ListConversationDatasets]. + + Iterating over this object will yield results and + resolve additional pages automatically. + + """ + # Create or coerce a protobuf request object. + # Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + has_flattened_params = any([parent]) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # Minor optimization to avoid making a copy if the user passes + # in a conversation_dataset.ListConversationDatasetsRequest. + # There's no risk of modifying the input as we've already verified + # there are no flattened fields. + if not isinstance( + request, conversation_dataset.ListConversationDatasetsRequest + ): + request = conversation_dataset.ListConversationDatasetsRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if parent is not None: + request.parent = parent + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[ + self._transport.list_conversation_datasets + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", request.parent),)), + ) + + # Send the request. + response = rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # This method is paged; wrap the response in a pager, which provides + # an `__iter__` convenience method. + response = pagers.ListConversationDatasetsPager( + method=rpc, request=request, response=response, metadata=metadata, + ) + + # Done; return the response. + return response + + def delete_conversation_dataset( + self, + request: Union[ + conversation_dataset.DeleteConversationDatasetRequest, dict + ] = None, + *, + name: str = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> operation.Operation: + r"""Deletes the specified conversation dataset. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [DeleteConversationDatasetOperationMetadata][google.cloud.dialogflow.v2.DeleteConversationDatasetOperationMetadata] + - ``response``: An `Empty + message `__ + + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_delete_conversation_dataset(): + # Create a client + client = dialogflow_v2.ConversationDatasetsClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteConversationDatasetRequest( + name="name_value", + ) + + # Make the request + operation = client.delete_conversation_dataset(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.DeleteConversationDatasetRequest, dict]): + The request object. The request message for + [ConversationDatasets.DeleteConversationDataset][google.cloud.dialogflow.v2.ConversationDatasets.DeleteConversationDataset]. + name (str): + Required. The conversation dataset to delete. Format: + ``projects//locations//conversationDatasets/`` + + This corresponds to the ``name`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.api_core.operation.Operation: + An object representing a long-running operation. + + The result type for the operation will be :class:`google.protobuf.empty_pb2.Empty` A generic empty message that you can re-use to avoid defining duplicated + empty messages in your APIs. A typical example is to + use it as the request or the response type of an API + method. For instance: + + service Foo { + rpc Bar(google.protobuf.Empty) returns + (google.protobuf.Empty); + + } + + The JSON representation for Empty is empty JSON + object {}. + + """ + # Create or coerce a protobuf request object. + # Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + has_flattened_params = any([name]) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # Minor optimization to avoid making a copy if the user passes + # in a conversation_dataset.DeleteConversationDatasetRequest. + # There's no risk of modifying the input as we've already verified + # there are no flattened fields. + if not isinstance( + request, conversation_dataset.DeleteConversationDatasetRequest + ): + request = conversation_dataset.DeleteConversationDatasetRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if name is not None: + request.name = name + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[ + self._transport.delete_conversation_dataset + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request.name),)), + ) + + # Send the request. + response = rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # Wrap the response in an operation future. + response = operation.from_gapic( + response, + self._transport.operations_client, + empty_pb2.Empty, + metadata_type=conversation_dataset.DeleteConversationDatasetOperationMetadata, + ) + + # Done; return the response. + return response + + def import_conversation_data( + self, + request: Union[conversation_dataset.ImportConversationDataRequest, dict] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> operation.Operation: + r"""Import data into the specified conversation dataset. Note that + it is not allowed to import data to a conversation dataset that + already has data in it. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [ImportConversationDataOperationMetadata][google.cloud.dialogflow.v2.ImportConversationDataOperationMetadata] + - ``response``: + [ImportConversationDataOperationResponse][google.cloud.dialogflow.v2.ImportConversationDataOperationResponse] + + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_import_conversation_data(): + # Create a client + client = dialogflow_v2.ConversationDatasetsClient() + + # Initialize request argument(s) + input_config = dialogflow_v2.InputConfig() + input_config.gcs_source.uris = ['uris_value_1', 'uris_value_2'] + + request = dialogflow_v2.ImportConversationDataRequest( + name="name_value", + input_config=input_config, + ) + + # Make the request + operation = client.import_conversation_data(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.ImportConversationDataRequest, dict]): + The request object. The request message for + [ConversationDatasets.ImportConversationData][google.cloud.dialogflow.v2.ConversationDatasets.ImportConversationData]. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.api_core.operation.Operation: + An object representing a long-running operation. + + The result type for the operation will be :class:`google.cloud.dialogflow_v2.types.ImportConversationDataOperationResponse` Response used for [ConversationDatasets.ImportConversationData][google.cloud.dialogflow.v2.ConversationDatasets.ImportConversationData] long + running operation. + + """ + # Create or coerce a protobuf request object. + # Minor optimization to avoid making a copy if the user passes + # in a conversation_dataset.ImportConversationDataRequest. + # There's no risk of modifying the input as we've already verified + # there are no flattened fields. + if not isinstance(request, conversation_dataset.ImportConversationDataRequest): + request = conversation_dataset.ImportConversationDataRequest(request) + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.import_conversation_data] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request.name),)), + ) + + # Send the request. + response = rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # Wrap the response in an operation future. + response = operation.from_gapic( + response, + self._transport.operations_client, + conversation_dataset.ImportConversationDataOperationResponse, + metadata_type=conversation_dataset.ImportConversationDataOperationMetadata, + ) + + # Done; return the response. + return response + + def __enter__(self): + return self + + def __exit__(self, type, value, traceback): + """Releases underlying transport's resources. + + .. warning:: + ONLY use as a context manager if the transport is NOT shared + with other clients! Exiting the with block will CLOSE the transport + and may cause errors in other clients! + """ + self.transport.close() + + +try: + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=pkg_resources.get_distribution( + "google-cloud-dialogflow", + ).version, + ) +except pkg_resources.DistributionNotFound: + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo() + + +__all__ = ("ConversationDatasetsClient",) diff --git a/google/cloud/dialogflow_v2/services/conversation_datasets/pagers.py b/google/cloud/dialogflow_v2/services/conversation_datasets/pagers.py new file mode 100644 index 000000000..e949eca2a --- /dev/null +++ b/google/cloud/dialogflow_v2/services/conversation_datasets/pagers.py @@ -0,0 +1,159 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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 typing import ( + Any, + AsyncIterator, + Awaitable, + Callable, + Sequence, + Tuple, + Optional, + Iterator, +) + +from google.cloud.dialogflow_v2.types import conversation_dataset + + +class ListConversationDatasetsPager: + """A pager for iterating through ``list_conversation_datasets`` requests. + + This class thinly wraps an initial + :class:`google.cloud.dialogflow_v2.types.ListConversationDatasetsResponse` object, and + provides an ``__iter__`` method to iterate through its + ``conversation_datasets`` field. + + If there are more pages, the ``__iter__`` method will make additional + ``ListConversationDatasets`` requests and continue to iterate + through the ``conversation_datasets`` field on the + corresponding responses. + + All the usual :class:`google.cloud.dialogflow_v2.types.ListConversationDatasetsResponse` + attributes are available on the pager. If multiple requests are made, only + the most recent response is retained, and thus used for attribute lookup. + """ + + def __init__( + self, + method: Callable[..., conversation_dataset.ListConversationDatasetsResponse], + request: conversation_dataset.ListConversationDatasetsRequest, + response: conversation_dataset.ListConversationDatasetsResponse, + *, + metadata: Sequence[Tuple[str, str]] = () + ): + """Instantiate the pager. + + Args: + method (Callable): The method that was originally called, and + which instantiated this pager. + request (google.cloud.dialogflow_v2.types.ListConversationDatasetsRequest): + The initial request object. + response (google.cloud.dialogflow_v2.types.ListConversationDatasetsResponse): + The initial response object. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + """ + self._method = method + self._request = conversation_dataset.ListConversationDatasetsRequest(request) + self._response = response + self._metadata = metadata + + def __getattr__(self, name: str) -> Any: + return getattr(self._response, name) + + @property + def pages(self) -> Iterator[conversation_dataset.ListConversationDatasetsResponse]: + yield self._response + while self._response.next_page_token: + self._request.page_token = self._response.next_page_token + self._response = self._method(self._request, metadata=self._metadata) + yield self._response + + def __iter__(self) -> Iterator[conversation_dataset.ConversationDataset]: + for page in self.pages: + yield from page.conversation_datasets + + def __repr__(self) -> str: + return "{0}<{1!r}>".format(self.__class__.__name__, self._response) + + +class ListConversationDatasetsAsyncPager: + """A pager for iterating through ``list_conversation_datasets`` requests. + + This class thinly wraps an initial + :class:`google.cloud.dialogflow_v2.types.ListConversationDatasetsResponse` object, and + provides an ``__aiter__`` method to iterate through its + ``conversation_datasets`` field. + + If there are more pages, the ``__aiter__`` method will make additional + ``ListConversationDatasets`` requests and continue to iterate + through the ``conversation_datasets`` field on the + corresponding responses. + + All the usual :class:`google.cloud.dialogflow_v2.types.ListConversationDatasetsResponse` + attributes are available on the pager. If multiple requests are made, only + the most recent response is retained, and thus used for attribute lookup. + """ + + def __init__( + self, + method: Callable[ + ..., Awaitable[conversation_dataset.ListConversationDatasetsResponse] + ], + request: conversation_dataset.ListConversationDatasetsRequest, + response: conversation_dataset.ListConversationDatasetsResponse, + *, + metadata: Sequence[Tuple[str, str]] = () + ): + """Instantiates the pager. + + Args: + method (Callable): The method that was originally called, and + which instantiated this pager. + request (google.cloud.dialogflow_v2.types.ListConversationDatasetsRequest): + The initial request object. + response (google.cloud.dialogflow_v2.types.ListConversationDatasetsResponse): + The initial response object. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + """ + self._method = method + self._request = conversation_dataset.ListConversationDatasetsRequest(request) + self._response = response + self._metadata = metadata + + def __getattr__(self, name: str) -> Any: + return getattr(self._response, name) + + @property + async def pages( + self, + ) -> AsyncIterator[conversation_dataset.ListConversationDatasetsResponse]: + yield self._response + while self._response.next_page_token: + self._request.page_token = self._response.next_page_token + self._response = await self._method(self._request, metadata=self._metadata) + yield self._response + + def __aiter__(self) -> AsyncIterator[conversation_dataset.ConversationDataset]: + async def async_generator(): + async for page in self.pages: + for response in page.conversation_datasets: + yield response + + return async_generator() + + def __repr__(self) -> str: + return "{0}<{1!r}>".format(self.__class__.__name__, self._response) diff --git a/google/cloud/dialogflow_v2/services/conversation_datasets/transports/__init__.py b/google/cloud/dialogflow_v2/services/conversation_datasets/transports/__init__.py new file mode 100644 index 000000000..19a859357 --- /dev/null +++ b/google/cloud/dialogflow_v2/services/conversation_datasets/transports/__init__.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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 collections import OrderedDict +from typing import Dict, Type + +from .base import ConversationDatasetsTransport +from .grpc import ConversationDatasetsGrpcTransport +from .grpc_asyncio import ConversationDatasetsGrpcAsyncIOTransport + + +# Compile a registry of transports. +_transport_registry = ( + OrderedDict() +) # type: Dict[str, Type[ConversationDatasetsTransport]] +_transport_registry["grpc"] = ConversationDatasetsGrpcTransport +_transport_registry["grpc_asyncio"] = ConversationDatasetsGrpcAsyncIOTransport + +__all__ = ( + "ConversationDatasetsTransport", + "ConversationDatasetsGrpcTransport", + "ConversationDatasetsGrpcAsyncIOTransport", +) diff --git a/google/cloud/dialogflow_v2/services/conversation_datasets/transports/base.py b/google/cloud/dialogflow_v2/services/conversation_datasets/transports/base.py new file mode 100644 index 000000000..d4bb742f8 --- /dev/null +++ b/google/cloud/dialogflow_v2/services/conversation_datasets/transports/base.py @@ -0,0 +1,224 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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 abc +from typing import Awaitable, Callable, Dict, Optional, Sequence, Union +import pkg_resources + +import google.auth # type: ignore +import google.api_core +from google.api_core import exceptions as core_exceptions +from google.api_core import gapic_v1 +from google.api_core import retry as retries +from google.api_core import operations_v1 +from google.auth import credentials as ga_credentials # type: ignore +from google.oauth2 import service_account # type: ignore + +from google.cloud.dialogflow_v2.types import conversation_dataset +from google.cloud.dialogflow_v2.types import ( + conversation_dataset as gcd_conversation_dataset, +) +from google.longrunning import operations_pb2 # type: ignore + +try: + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=pkg_resources.get_distribution( + "google-cloud-dialogflow", + ).version, + ) +except pkg_resources.DistributionNotFound: + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo() + + +class ConversationDatasetsTransport(abc.ABC): + """Abstract transport class for ConversationDatasets.""" + + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/dialogflow", + ) + + DEFAULT_HOST: str = "dialogflow.googleapis.com" + + def __init__( + self, + *, + host: str = DEFAULT_HOST, + credentials: ga_credentials.Credentials = None, + credentials_file: Optional[str] = None, + scopes: Optional[Sequence[str]] = None, + quota_project_id: Optional[str] = None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + always_use_jwt_access: Optional[bool] = False, + **kwargs, + ) -> None: + """Instantiate the transport. + + Args: + host (Optional[str]): + The hostname to connect to. + credentials (Optional[google.auth.credentials.Credentials]): The + authorization credentials to attach to requests. These + credentials identify the application to the service; if none + are specified, the client will attempt to ascertain the + credentials from the environment. + credentials_file (Optional[str]): A file with credentials that can + be loaded with :func:`google.auth.load_credentials_from_file`. + This argument is mutually exclusive with credentials. + scopes (Optional[Sequence[str]]): A list of scopes. + quota_project_id (Optional[str]): An optional project to use for billing + and quota. + client_info (google.api_core.gapic_v1.client_info.ClientInfo): + The client info used to send a user-agent string along with + API requests. If ``None``, then default info will be used. + Generally, you only need to set this if you're developing + your own client library. + always_use_jwt_access (Optional[bool]): Whether self signed JWT should + be used for service account credentials. + """ + # Save the hostname. Default to port 443 (HTTPS) if none is specified. + if ":" not in host: + host += ":443" + self._host = host + + scopes_kwargs = {"scopes": scopes, "default_scopes": self.AUTH_SCOPES} + + # Save the scopes. + self._scopes = scopes + + # If no credentials are provided, then determine the appropriate + # defaults. + if credentials and credentials_file: + raise core_exceptions.DuplicateCredentialArgs( + "'credentials_file' and 'credentials' are mutually exclusive" + ) + + if credentials_file is not None: + credentials, _ = google.auth.load_credentials_from_file( + credentials_file, **scopes_kwargs, quota_project_id=quota_project_id + ) + elif credentials is None: + credentials, _ = google.auth.default( + **scopes_kwargs, quota_project_id=quota_project_id + ) + + # If the credentials are service account credentials, then always try to use self signed JWT. + if ( + always_use_jwt_access + and isinstance(credentials, service_account.Credentials) + and hasattr(service_account.Credentials, "with_always_use_jwt_access") + ): + credentials = credentials.with_always_use_jwt_access(True) + + # Save the credentials. + self._credentials = credentials + + def _prep_wrapped_messages(self, client_info): + # Precompute the wrapped methods. + self._wrapped_methods = { + self.create_conversation_dataset: gapic_v1.method.wrap_method( + self.create_conversation_dataset, + default_timeout=None, + client_info=client_info, + ), + self.get_conversation_dataset: gapic_v1.method.wrap_method( + self.get_conversation_dataset, + default_timeout=None, + client_info=client_info, + ), + self.list_conversation_datasets: gapic_v1.method.wrap_method( + self.list_conversation_datasets, + default_timeout=None, + client_info=client_info, + ), + self.delete_conversation_dataset: gapic_v1.method.wrap_method( + self.delete_conversation_dataset, + default_timeout=None, + client_info=client_info, + ), + self.import_conversation_data: gapic_v1.method.wrap_method( + self.import_conversation_data, + default_timeout=None, + client_info=client_info, + ), + } + + def close(self): + """Closes resources associated with the transport. + + .. warning:: + Only call this method if the transport is NOT shared + with other clients - this may cause errors in other clients! + """ + raise NotImplementedError() + + @property + def operations_client(self): + """Return the client designed to process long-running operations.""" + raise NotImplementedError() + + @property + def create_conversation_dataset( + self, + ) -> Callable[ + [gcd_conversation_dataset.CreateConversationDatasetRequest], + Union[operations_pb2.Operation, Awaitable[operations_pb2.Operation]], + ]: + raise NotImplementedError() + + @property + def get_conversation_dataset( + self, + ) -> Callable[ + [conversation_dataset.GetConversationDatasetRequest], + Union[ + conversation_dataset.ConversationDataset, + Awaitable[conversation_dataset.ConversationDataset], + ], + ]: + raise NotImplementedError() + + @property + def list_conversation_datasets( + self, + ) -> Callable[ + [conversation_dataset.ListConversationDatasetsRequest], + Union[ + conversation_dataset.ListConversationDatasetsResponse, + Awaitable[conversation_dataset.ListConversationDatasetsResponse], + ], + ]: + raise NotImplementedError() + + @property + def delete_conversation_dataset( + self, + ) -> Callable[ + [conversation_dataset.DeleteConversationDatasetRequest], + Union[operations_pb2.Operation, Awaitable[operations_pb2.Operation]], + ]: + raise NotImplementedError() + + @property + def import_conversation_data( + self, + ) -> Callable[ + [conversation_dataset.ImportConversationDataRequest], + Union[operations_pb2.Operation, Awaitable[operations_pb2.Operation]], + ]: + raise NotImplementedError() + + +__all__ = ("ConversationDatasetsTransport",) diff --git a/google/cloud/dialogflow_v2/services/conversation_datasets/transports/grpc.py b/google/cloud/dialogflow_v2/services/conversation_datasets/transports/grpc.py new file mode 100644 index 000000000..fa18f3e7d --- /dev/null +++ b/google/cloud/dialogflow_v2/services/conversation_datasets/transports/grpc.py @@ -0,0 +1,434 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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 warnings +from typing import Callable, Dict, Optional, Sequence, Tuple, Union + +from google.api_core import grpc_helpers +from google.api_core import operations_v1 +from google.api_core import gapic_v1 +import google.auth # type: ignore +from google.auth import credentials as ga_credentials # type: ignore +from google.auth.transport.grpc import SslCredentials # type: ignore + +import grpc # type: ignore + +from google.cloud.dialogflow_v2.types import conversation_dataset +from google.cloud.dialogflow_v2.types import ( + conversation_dataset as gcd_conversation_dataset, +) +from google.longrunning import operations_pb2 # type: ignore +from .base import ConversationDatasetsTransport, DEFAULT_CLIENT_INFO + + +class ConversationDatasetsGrpcTransport(ConversationDatasetsTransport): + """gRPC backend transport for ConversationDatasets. + + Conversation datasets. + Conversation datasets contain raw conversation files and their + customizable metadata that can be used for model training. + + This class defines the same methods as the primary client, so the + primary client can load the underlying transport implementation + and call it. + + It sends protocol buffers over the wire using gRPC (which is built on + top of HTTP/2); the ``grpcio`` package must be installed. + """ + + _stubs: Dict[str, Callable] + + def __init__( + self, + *, + host: str = "dialogflow.googleapis.com", + credentials: ga_credentials.Credentials = None, + credentials_file: str = None, + scopes: Sequence[str] = None, + channel: grpc.Channel = None, + api_mtls_endpoint: str = None, + client_cert_source: Callable[[], Tuple[bytes, bytes]] = None, + ssl_channel_credentials: grpc.ChannelCredentials = None, + client_cert_source_for_mtls: Callable[[], Tuple[bytes, bytes]] = None, + quota_project_id: Optional[str] = None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + always_use_jwt_access: Optional[bool] = False, + ) -> None: + """Instantiate the transport. + + Args: + host (Optional[str]): + The hostname to connect to. + credentials (Optional[google.auth.credentials.Credentials]): The + authorization credentials to attach to requests. These + credentials identify the application to the service; if none + are specified, the client will attempt to ascertain the + credentials from the environment. + This argument is ignored if ``channel`` is provided. + credentials_file (Optional[str]): A file with credentials that can + be loaded with :func:`google.auth.load_credentials_from_file`. + This argument is ignored if ``channel`` is provided. + scopes (Optional(Sequence[str])): A list of scopes. This argument is + ignored if ``channel`` is provided. + channel (Optional[grpc.Channel]): A ``Channel`` instance through + which to make calls. + api_mtls_endpoint (Optional[str]): Deprecated. The mutual TLS endpoint. + If provided, it overrides the ``host`` argument and tries to create + a mutual TLS channel with client SSL credentials from + ``client_cert_source`` or application default SSL credentials. + client_cert_source (Optional[Callable[[], Tuple[bytes, bytes]]]): + Deprecated. A callback to provide client SSL certificate bytes and + private key bytes, both in PEM format. It is ignored if + ``api_mtls_endpoint`` is None. + ssl_channel_credentials (grpc.ChannelCredentials): SSL credentials + for the grpc channel. It is ignored if ``channel`` is provided. + client_cert_source_for_mtls (Optional[Callable[[], Tuple[bytes, bytes]]]): + A callback to provide client certificate bytes and private key bytes, + both in PEM format. It is used to configure a mutual TLS channel. It is + ignored if ``channel`` or ``ssl_channel_credentials`` is provided. + quota_project_id (Optional[str]): An optional project to use for billing + and quota. + client_info (google.api_core.gapic_v1.client_info.ClientInfo): + The client info used to send a user-agent string along with + API requests. If ``None``, then default info will be used. + Generally, you only need to set this if you're developing + your own client library. + always_use_jwt_access (Optional[bool]): Whether self signed JWT should + be used for service account credentials. + + Raises: + google.auth.exceptions.MutualTLSChannelError: If mutual TLS transport + creation failed for any reason. + google.api_core.exceptions.DuplicateCredentialArgs: If both ``credentials`` + and ``credentials_file`` are passed. + """ + self._grpc_channel = None + self._ssl_channel_credentials = ssl_channel_credentials + self._stubs: Dict[str, Callable] = {} + self._operations_client: Optional[operations_v1.OperationsClient] = None + + if api_mtls_endpoint: + warnings.warn("api_mtls_endpoint is deprecated", DeprecationWarning) + if client_cert_source: + warnings.warn("client_cert_source is deprecated", DeprecationWarning) + + if channel: + # Ignore credentials if a channel was passed. + credentials = False + # If a channel was explicitly provided, set it. + self._grpc_channel = channel + self._ssl_channel_credentials = None + + else: + if api_mtls_endpoint: + host = api_mtls_endpoint + + # Create SSL credentials with client_cert_source or application + # default SSL credentials. + if client_cert_source: + cert, key = client_cert_source() + self._ssl_channel_credentials = grpc.ssl_channel_credentials( + certificate_chain=cert, private_key=key + ) + else: + self._ssl_channel_credentials = SslCredentials().ssl_credentials + + else: + if client_cert_source_for_mtls and not ssl_channel_credentials: + cert, key = client_cert_source_for_mtls() + self._ssl_channel_credentials = grpc.ssl_channel_credentials( + certificate_chain=cert, private_key=key + ) + + # The base transport sets the host, credentials and scopes + super().__init__( + host=host, + credentials=credentials, + credentials_file=credentials_file, + scopes=scopes, + quota_project_id=quota_project_id, + client_info=client_info, + always_use_jwt_access=always_use_jwt_access, + ) + + if not self._grpc_channel: + self._grpc_channel = type(self).create_channel( + self._host, + # use the credentials which are saved + credentials=self._credentials, + # Set ``credentials_file`` to ``None`` here as + # the credentials that we saved earlier should be used. + credentials_file=None, + scopes=self._scopes, + ssl_credentials=self._ssl_channel_credentials, + quota_project_id=quota_project_id, + options=[ + ("grpc.max_send_message_length", -1), + ("grpc.max_receive_message_length", -1), + ], + ) + + # Wrap messages. This must be done after self._grpc_channel exists + self._prep_wrapped_messages(client_info) + + @classmethod + def create_channel( + cls, + host: str = "dialogflow.googleapis.com", + credentials: ga_credentials.Credentials = None, + credentials_file: str = None, + scopes: Optional[Sequence[str]] = None, + quota_project_id: Optional[str] = None, + **kwargs, + ) -> grpc.Channel: + """Create and return a gRPC channel object. + Args: + host (Optional[str]): The host for the channel to use. + credentials (Optional[~.Credentials]): The + authorization credentials to attach to requests. These + credentials identify this application to the service. If + none are specified, the client will attempt to ascertain + the credentials from the environment. + credentials_file (Optional[str]): A file with credentials that can + be loaded with :func:`google.auth.load_credentials_from_file`. + This argument is mutually exclusive with credentials. + scopes (Optional[Sequence[str]]): A optional list of scopes needed for this + service. These are only used when credentials are not specified and + are passed to :func:`google.auth.default`. + quota_project_id (Optional[str]): An optional project to use for billing + and quota. + kwargs (Optional[dict]): Keyword arguments, which are passed to the + channel creation. + Returns: + grpc.Channel: A gRPC channel object. + + Raises: + google.api_core.exceptions.DuplicateCredentialArgs: If both ``credentials`` + and ``credentials_file`` are passed. + """ + + return grpc_helpers.create_channel( + host, + credentials=credentials, + credentials_file=credentials_file, + quota_project_id=quota_project_id, + default_scopes=cls.AUTH_SCOPES, + scopes=scopes, + default_host=cls.DEFAULT_HOST, + **kwargs, + ) + + @property + def grpc_channel(self) -> grpc.Channel: + """Return the channel designed to connect to this service. + """ + return self._grpc_channel + + @property + def operations_client(self) -> operations_v1.OperationsClient: + """Create the client designed to process long-running operations. + + This property caches on the instance; repeated calls return the same + client. + """ + # Quick check: Only create a new client if we do not already have one. + if self._operations_client is None: + self._operations_client = operations_v1.OperationsClient(self.grpc_channel) + + # Return the client from cache. + return self._operations_client + + @property + def create_conversation_dataset( + self, + ) -> Callable[ + [gcd_conversation_dataset.CreateConversationDatasetRequest], + operations_pb2.Operation, + ]: + r"""Return a callable for the create conversation dataset method over gRPC. + + Creates a new conversation dataset. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [CreateConversationDatasetOperationMetadata][google.cloud.dialogflow.v2.CreateConversationDatasetOperationMetadata] + - ``response``: + [ConversationDataset][google.cloud.dialogflow.v2.ConversationDataset] + + Returns: + Callable[[~.CreateConversationDatasetRequest], + ~.Operation]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "create_conversation_dataset" not in self._stubs: + self._stubs["create_conversation_dataset"] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationDatasets/CreateConversationDataset", + request_serializer=gcd_conversation_dataset.CreateConversationDatasetRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["create_conversation_dataset"] + + @property + def get_conversation_dataset( + self, + ) -> Callable[ + [conversation_dataset.GetConversationDatasetRequest], + conversation_dataset.ConversationDataset, + ]: + r"""Return a callable for the get conversation dataset method over gRPC. + + Retrieves the specified conversation dataset. + + Returns: + Callable[[~.GetConversationDatasetRequest], + ~.ConversationDataset]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "get_conversation_dataset" not in self._stubs: + self._stubs["get_conversation_dataset"] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationDatasets/GetConversationDataset", + request_serializer=conversation_dataset.GetConversationDatasetRequest.serialize, + response_deserializer=conversation_dataset.ConversationDataset.deserialize, + ) + return self._stubs["get_conversation_dataset"] + + @property + def list_conversation_datasets( + self, + ) -> Callable[ + [conversation_dataset.ListConversationDatasetsRequest], + conversation_dataset.ListConversationDatasetsResponse, + ]: + r"""Return a callable for the list conversation datasets method over gRPC. + + Returns the list of all conversation datasets in the + specified project and location. + + Returns: + Callable[[~.ListConversationDatasetsRequest], + ~.ListConversationDatasetsResponse]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "list_conversation_datasets" not in self._stubs: + self._stubs["list_conversation_datasets"] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationDatasets/ListConversationDatasets", + request_serializer=conversation_dataset.ListConversationDatasetsRequest.serialize, + response_deserializer=conversation_dataset.ListConversationDatasetsResponse.deserialize, + ) + return self._stubs["list_conversation_datasets"] + + @property + def delete_conversation_dataset( + self, + ) -> Callable[ + [conversation_dataset.DeleteConversationDatasetRequest], + operations_pb2.Operation, + ]: + r"""Return a callable for the delete conversation dataset method over gRPC. + + Deletes the specified conversation dataset. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [DeleteConversationDatasetOperationMetadata][google.cloud.dialogflow.v2.DeleteConversationDatasetOperationMetadata] + - ``response``: An `Empty + message `__ + + Returns: + Callable[[~.DeleteConversationDatasetRequest], + ~.Operation]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "delete_conversation_dataset" not in self._stubs: + self._stubs["delete_conversation_dataset"] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationDatasets/DeleteConversationDataset", + request_serializer=conversation_dataset.DeleteConversationDatasetRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["delete_conversation_dataset"] + + @property + def import_conversation_data( + self, + ) -> Callable[ + [conversation_dataset.ImportConversationDataRequest], operations_pb2.Operation + ]: + r"""Return a callable for the import conversation data method over gRPC. + + Import data into the specified conversation dataset. Note that + it is not allowed to import data to a conversation dataset that + already has data in it. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [ImportConversationDataOperationMetadata][google.cloud.dialogflow.v2.ImportConversationDataOperationMetadata] + - ``response``: + [ImportConversationDataOperationResponse][google.cloud.dialogflow.v2.ImportConversationDataOperationResponse] + + Returns: + Callable[[~.ImportConversationDataRequest], + ~.Operation]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "import_conversation_data" not in self._stubs: + self._stubs["import_conversation_data"] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationDatasets/ImportConversationData", + request_serializer=conversation_dataset.ImportConversationDataRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["import_conversation_data"] + + def close(self): + self.grpc_channel.close() + + +__all__ = ("ConversationDatasetsGrpcTransport",) diff --git a/google/cloud/dialogflow_v2/services/conversation_datasets/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2/services/conversation_datasets/transports/grpc_asyncio.py new file mode 100644 index 000000000..c5c5e0979 --- /dev/null +++ b/google/cloud/dialogflow_v2/services/conversation_datasets/transports/grpc_asyncio.py @@ -0,0 +1,439 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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 warnings +from typing import Awaitable, Callable, Dict, Optional, Sequence, Tuple, Union + +from google.api_core import gapic_v1 +from google.api_core import grpc_helpers_async +from google.api_core import operations_v1 +from google.auth import credentials as ga_credentials # type: ignore +from google.auth.transport.grpc import SslCredentials # type: ignore + +import grpc # type: ignore +from grpc.experimental import aio # type: ignore + +from google.cloud.dialogflow_v2.types import conversation_dataset +from google.cloud.dialogflow_v2.types import ( + conversation_dataset as gcd_conversation_dataset, +) +from google.longrunning import operations_pb2 # type: ignore +from .base import ConversationDatasetsTransport, DEFAULT_CLIENT_INFO +from .grpc import ConversationDatasetsGrpcTransport + + +class ConversationDatasetsGrpcAsyncIOTransport(ConversationDatasetsTransport): + """gRPC AsyncIO backend transport for ConversationDatasets. + + Conversation datasets. + Conversation datasets contain raw conversation files and their + customizable metadata that can be used for model training. + + This class defines the same methods as the primary client, so the + primary client can load the underlying transport implementation + and call it. + + It sends protocol buffers over the wire using gRPC (which is built on + top of HTTP/2); the ``grpcio`` package must be installed. + """ + + _grpc_channel: aio.Channel + _stubs: Dict[str, Callable] = {} + + @classmethod + def create_channel( + cls, + host: str = "dialogflow.googleapis.com", + credentials: ga_credentials.Credentials = None, + credentials_file: Optional[str] = None, + scopes: Optional[Sequence[str]] = None, + quota_project_id: Optional[str] = None, + **kwargs, + ) -> aio.Channel: + """Create and return a gRPC AsyncIO channel object. + Args: + host (Optional[str]): The host for the channel to use. + credentials (Optional[~.Credentials]): The + authorization credentials to attach to requests. These + credentials identify this application to the service. If + none are specified, the client will attempt to ascertain + the credentials from the environment. + credentials_file (Optional[str]): A file with credentials that can + be loaded with :func:`google.auth.load_credentials_from_file`. + This argument is ignored if ``channel`` is provided. + scopes (Optional[Sequence[str]]): A optional list of scopes needed for this + service. These are only used when credentials are not specified and + are passed to :func:`google.auth.default`. + quota_project_id (Optional[str]): An optional project to use for billing + and quota. + kwargs (Optional[dict]): Keyword arguments, which are passed to the + channel creation. + Returns: + aio.Channel: A gRPC AsyncIO channel object. + """ + + return grpc_helpers_async.create_channel( + host, + credentials=credentials, + credentials_file=credentials_file, + quota_project_id=quota_project_id, + default_scopes=cls.AUTH_SCOPES, + scopes=scopes, + default_host=cls.DEFAULT_HOST, + **kwargs, + ) + + def __init__( + self, + *, + host: str = "dialogflow.googleapis.com", + credentials: ga_credentials.Credentials = None, + credentials_file: Optional[str] = None, + scopes: Optional[Sequence[str]] = None, + channel: aio.Channel = None, + api_mtls_endpoint: str = None, + client_cert_source: Callable[[], Tuple[bytes, bytes]] = None, + ssl_channel_credentials: grpc.ChannelCredentials = None, + client_cert_source_for_mtls: Callable[[], Tuple[bytes, bytes]] = None, + quota_project_id=None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + always_use_jwt_access: Optional[bool] = False, + ) -> None: + """Instantiate the transport. + + Args: + host (Optional[str]): + The hostname to connect to. + credentials (Optional[google.auth.credentials.Credentials]): The + authorization credentials to attach to requests. These + credentials identify the application to the service; if none + are specified, the client will attempt to ascertain the + credentials from the environment. + This argument is ignored if ``channel`` is provided. + credentials_file (Optional[str]): A file with credentials that can + be loaded with :func:`google.auth.load_credentials_from_file`. + This argument is ignored if ``channel`` is provided. + scopes (Optional[Sequence[str]]): A optional list of scopes needed for this + service. These are only used when credentials are not specified and + are passed to :func:`google.auth.default`. + channel (Optional[aio.Channel]): A ``Channel`` instance through + which to make calls. + api_mtls_endpoint (Optional[str]): Deprecated. The mutual TLS endpoint. + If provided, it overrides the ``host`` argument and tries to create + a mutual TLS channel with client SSL credentials from + ``client_cert_source`` or application default SSL credentials. + client_cert_source (Optional[Callable[[], Tuple[bytes, bytes]]]): + Deprecated. A callback to provide client SSL certificate bytes and + private key bytes, both in PEM format. It is ignored if + ``api_mtls_endpoint`` is None. + ssl_channel_credentials (grpc.ChannelCredentials): SSL credentials + for the grpc channel. It is ignored if ``channel`` is provided. + client_cert_source_for_mtls (Optional[Callable[[], Tuple[bytes, bytes]]]): + A callback to provide client certificate bytes and private key bytes, + both in PEM format. It is used to configure a mutual TLS channel. It is + ignored if ``channel`` or ``ssl_channel_credentials`` is provided. + quota_project_id (Optional[str]): An optional project to use for billing + and quota. + client_info (google.api_core.gapic_v1.client_info.ClientInfo): + The client info used to send a user-agent string along with + API requests. If ``None``, then default info will be used. + Generally, you only need to set this if you're developing + your own client library. + always_use_jwt_access (Optional[bool]): Whether self signed JWT should + be used for service account credentials. + + Raises: + google.auth.exceptions.MutualTlsChannelError: If mutual TLS transport + creation failed for any reason. + google.api_core.exceptions.DuplicateCredentialArgs: If both ``credentials`` + and ``credentials_file`` are passed. + """ + self._grpc_channel = None + self._ssl_channel_credentials = ssl_channel_credentials + self._stubs: Dict[str, Callable] = {} + self._operations_client: Optional[operations_v1.OperationsAsyncClient] = None + + if api_mtls_endpoint: + warnings.warn("api_mtls_endpoint is deprecated", DeprecationWarning) + if client_cert_source: + warnings.warn("client_cert_source is deprecated", DeprecationWarning) + + if channel: + # Ignore credentials if a channel was passed. + credentials = False + # If a channel was explicitly provided, set it. + self._grpc_channel = channel + self._ssl_channel_credentials = None + else: + if api_mtls_endpoint: + host = api_mtls_endpoint + + # Create SSL credentials with client_cert_source or application + # default SSL credentials. + if client_cert_source: + cert, key = client_cert_source() + self._ssl_channel_credentials = grpc.ssl_channel_credentials( + certificate_chain=cert, private_key=key + ) + else: + self._ssl_channel_credentials = SslCredentials().ssl_credentials + + else: + if client_cert_source_for_mtls and not ssl_channel_credentials: + cert, key = client_cert_source_for_mtls() + self._ssl_channel_credentials = grpc.ssl_channel_credentials( + certificate_chain=cert, private_key=key + ) + + # The base transport sets the host, credentials and scopes + super().__init__( + host=host, + credentials=credentials, + credentials_file=credentials_file, + scopes=scopes, + quota_project_id=quota_project_id, + client_info=client_info, + always_use_jwt_access=always_use_jwt_access, + ) + + if not self._grpc_channel: + self._grpc_channel = type(self).create_channel( + self._host, + # use the credentials which are saved + credentials=self._credentials, + # Set ``credentials_file`` to ``None`` here as + # the credentials that we saved earlier should be used. + credentials_file=None, + scopes=self._scopes, + ssl_credentials=self._ssl_channel_credentials, + quota_project_id=quota_project_id, + options=[ + ("grpc.max_send_message_length", -1), + ("grpc.max_receive_message_length", -1), + ], + ) + + # Wrap messages. This must be done after self._grpc_channel exists + self._prep_wrapped_messages(client_info) + + @property + def grpc_channel(self) -> aio.Channel: + """Create the channel designed to connect to this service. + + This property caches on the instance; repeated calls return + the same channel. + """ + # Return the channel from cache. + return self._grpc_channel + + @property + def operations_client(self) -> operations_v1.OperationsAsyncClient: + """Create the client designed to process long-running operations. + + This property caches on the instance; repeated calls return the same + client. + """ + # Quick check: Only create a new client if we do not already have one. + if self._operations_client is None: + self._operations_client = operations_v1.OperationsAsyncClient( + self.grpc_channel + ) + + # Return the client from cache. + return self._operations_client + + @property + def create_conversation_dataset( + self, + ) -> Callable[ + [gcd_conversation_dataset.CreateConversationDatasetRequest], + Awaitable[operations_pb2.Operation], + ]: + r"""Return a callable for the create conversation dataset method over gRPC. + + Creates a new conversation dataset. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [CreateConversationDatasetOperationMetadata][google.cloud.dialogflow.v2.CreateConversationDatasetOperationMetadata] + - ``response``: + [ConversationDataset][google.cloud.dialogflow.v2.ConversationDataset] + + Returns: + Callable[[~.CreateConversationDatasetRequest], + Awaitable[~.Operation]]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "create_conversation_dataset" not in self._stubs: + self._stubs["create_conversation_dataset"] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationDatasets/CreateConversationDataset", + request_serializer=gcd_conversation_dataset.CreateConversationDatasetRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["create_conversation_dataset"] + + @property + def get_conversation_dataset( + self, + ) -> Callable[ + [conversation_dataset.GetConversationDatasetRequest], + Awaitable[conversation_dataset.ConversationDataset], + ]: + r"""Return a callable for the get conversation dataset method over gRPC. + + Retrieves the specified conversation dataset. + + Returns: + Callable[[~.GetConversationDatasetRequest], + Awaitable[~.ConversationDataset]]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "get_conversation_dataset" not in self._stubs: + self._stubs["get_conversation_dataset"] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationDatasets/GetConversationDataset", + request_serializer=conversation_dataset.GetConversationDatasetRequest.serialize, + response_deserializer=conversation_dataset.ConversationDataset.deserialize, + ) + return self._stubs["get_conversation_dataset"] + + @property + def list_conversation_datasets( + self, + ) -> Callable[ + [conversation_dataset.ListConversationDatasetsRequest], + Awaitable[conversation_dataset.ListConversationDatasetsResponse], + ]: + r"""Return a callable for the list conversation datasets method over gRPC. + + Returns the list of all conversation datasets in the + specified project and location. + + Returns: + Callable[[~.ListConversationDatasetsRequest], + Awaitable[~.ListConversationDatasetsResponse]]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "list_conversation_datasets" not in self._stubs: + self._stubs["list_conversation_datasets"] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationDatasets/ListConversationDatasets", + request_serializer=conversation_dataset.ListConversationDatasetsRequest.serialize, + response_deserializer=conversation_dataset.ListConversationDatasetsResponse.deserialize, + ) + return self._stubs["list_conversation_datasets"] + + @property + def delete_conversation_dataset( + self, + ) -> Callable[ + [conversation_dataset.DeleteConversationDatasetRequest], + Awaitable[operations_pb2.Operation], + ]: + r"""Return a callable for the delete conversation dataset method over gRPC. + + Deletes the specified conversation dataset. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [DeleteConversationDatasetOperationMetadata][google.cloud.dialogflow.v2.DeleteConversationDatasetOperationMetadata] + - ``response``: An `Empty + message `__ + + Returns: + Callable[[~.DeleteConversationDatasetRequest], + Awaitable[~.Operation]]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "delete_conversation_dataset" not in self._stubs: + self._stubs["delete_conversation_dataset"] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationDatasets/DeleteConversationDataset", + request_serializer=conversation_dataset.DeleteConversationDatasetRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["delete_conversation_dataset"] + + @property + def import_conversation_data( + self, + ) -> Callable[ + [conversation_dataset.ImportConversationDataRequest], + Awaitable[operations_pb2.Operation], + ]: + r"""Return a callable for the import conversation data method over gRPC. + + Import data into the specified conversation dataset. Note that + it is not allowed to import data to a conversation dataset that + already has data in it. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [ImportConversationDataOperationMetadata][google.cloud.dialogflow.v2.ImportConversationDataOperationMetadata] + - ``response``: + [ImportConversationDataOperationResponse][google.cloud.dialogflow.v2.ImportConversationDataOperationResponse] + + Returns: + Callable[[~.ImportConversationDataRequest], + Awaitable[~.Operation]]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "import_conversation_data" not in self._stubs: + self._stubs["import_conversation_data"] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationDatasets/ImportConversationData", + request_serializer=conversation_dataset.ImportConversationDataRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["import_conversation_data"] + + def close(self): + return self.grpc_channel.close() + + +__all__ = ("ConversationDatasetsGrpcAsyncIOTransport",) diff --git a/google/cloud/dialogflow_v2/services/conversation_models/__init__.py b/google/cloud/dialogflow_v2/services/conversation_models/__init__.py new file mode 100644 index 000000000..477b58b0d --- /dev/null +++ b/google/cloud/dialogflow_v2/services/conversation_models/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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 .client import ConversationModelsClient +from .async_client import ConversationModelsAsyncClient + +__all__ = ( + "ConversationModelsClient", + "ConversationModelsAsyncClient", +) diff --git a/google/cloud/dialogflow_v2/services/conversation_models/async_client.py b/google/cloud/dialogflow_v2/services/conversation_models/async_client.py new file mode 100644 index 000000000..e93b32f5e --- /dev/null +++ b/google/cloud/dialogflow_v2/services/conversation_models/async_client.py @@ -0,0 +1,1223 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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 collections import OrderedDict +import functools +import re +from typing import Dict, Optional, Sequence, Tuple, Type, Union +import pkg_resources + +from google.api_core.client_options import ClientOptions +from google.api_core import exceptions as core_exceptions +from google.api_core import gapic_v1 +from google.api_core import retry as retries +from google.auth import credentials as ga_credentials # type: ignore +from google.oauth2 import service_account # type: ignore + +try: + OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault] +except AttributeError: # pragma: NO COVER + OptionalRetry = Union[retries.Retry, object] # type: ignore + +from google.api_core import operation # type: ignore +from google.api_core import operation_async # type: ignore +from google.cloud.dialogflow_v2.services.conversation_models import pagers +from google.cloud.dialogflow_v2.types import conversation_model +from google.cloud.dialogflow_v2.types import ( + conversation_model as gcd_conversation_model, +) +from google.protobuf import empty_pb2 # type: ignore +from google.protobuf import timestamp_pb2 # type: ignore +from .transports.base import ConversationModelsTransport, DEFAULT_CLIENT_INFO +from .transports.grpc_asyncio import ConversationModelsGrpcAsyncIOTransport +from .client import ConversationModelsClient + + +class ConversationModelsAsyncClient: + """Manages a collection of models for human agent assistant.""" + + _client: ConversationModelsClient + + DEFAULT_ENDPOINT = ConversationModelsClient.DEFAULT_ENDPOINT + DEFAULT_MTLS_ENDPOINT = ConversationModelsClient.DEFAULT_MTLS_ENDPOINT + + conversation_dataset_path = staticmethod( + ConversationModelsClient.conversation_dataset_path + ) + parse_conversation_dataset_path = staticmethod( + ConversationModelsClient.parse_conversation_dataset_path + ) + conversation_model_path = staticmethod( + ConversationModelsClient.conversation_model_path + ) + parse_conversation_model_path = staticmethod( + ConversationModelsClient.parse_conversation_model_path + ) + conversation_model_evaluation_path = staticmethod( + ConversationModelsClient.conversation_model_evaluation_path + ) + parse_conversation_model_evaluation_path = staticmethod( + ConversationModelsClient.parse_conversation_model_evaluation_path + ) + document_path = staticmethod(ConversationModelsClient.document_path) + parse_document_path = staticmethod(ConversationModelsClient.parse_document_path) + common_billing_account_path = staticmethod( + ConversationModelsClient.common_billing_account_path + ) + parse_common_billing_account_path = staticmethod( + ConversationModelsClient.parse_common_billing_account_path + ) + common_folder_path = staticmethod(ConversationModelsClient.common_folder_path) + parse_common_folder_path = staticmethod( + ConversationModelsClient.parse_common_folder_path + ) + common_organization_path = staticmethod( + ConversationModelsClient.common_organization_path + ) + parse_common_organization_path = staticmethod( + ConversationModelsClient.parse_common_organization_path + ) + common_project_path = staticmethod(ConversationModelsClient.common_project_path) + parse_common_project_path = staticmethod( + ConversationModelsClient.parse_common_project_path + ) + common_location_path = staticmethod(ConversationModelsClient.common_location_path) + parse_common_location_path = staticmethod( + ConversationModelsClient.parse_common_location_path + ) + + @classmethod + def from_service_account_info(cls, info: dict, *args, **kwargs): + """Creates an instance of this client using the provided credentials + info. + + Args: + info (dict): The service account private key info. + args: Additional arguments to pass to the constructor. + kwargs: Additional arguments to pass to the constructor. + + Returns: + ConversationModelsAsyncClient: The constructed client. + """ + return ConversationModelsClient.from_service_account_info.__func__(ConversationModelsAsyncClient, info, *args, **kwargs) # type: ignore + + @classmethod + def from_service_account_file(cls, filename: str, *args, **kwargs): + """Creates an instance of this client using the provided credentials + file. + + Args: + filename (str): The path to the service account private key json + file. + args: Additional arguments to pass to the constructor. + kwargs: Additional arguments to pass to the constructor. + + Returns: + ConversationModelsAsyncClient: The constructed client. + """ + return ConversationModelsClient.from_service_account_file.__func__(ConversationModelsAsyncClient, filename, *args, **kwargs) # type: ignore + + from_service_account_json = from_service_account_file + + @classmethod + def get_mtls_endpoint_and_cert_source( + cls, client_options: Optional[ClientOptions] = None + ): + """Return the API endpoint and client cert source for mutual TLS. + + The client cert source is determined in the following order: + (1) if `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable is not "true", the + client cert source is None. + (2) if `client_options.client_cert_source` is provided, use the provided one; if the + default client cert source exists, use the default one; otherwise the client cert + source is None. + + The API endpoint is determined in the following order: + (1) if `client_options.api_endpoint` if provided, use the provided one. + (2) if `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable is "always", use the + default mTLS endpoint; if the environment variabel is "never", use the default API + endpoint; otherwise if client cert source exists, use the default mTLS endpoint, otherwise + use the default API endpoint. + + More details can be found at https://google.aip.dev/auth/4114. + + Args: + client_options (google.api_core.client_options.ClientOptions): Custom options for the + client. Only the `api_endpoint` and `client_cert_source` properties may be used + in this method. + + Returns: + Tuple[str, Callable[[], Tuple[bytes, bytes]]]: returns the API endpoint and the + client cert source to use. + + Raises: + google.auth.exceptions.MutualTLSChannelError: If any errors happen. + """ + return ConversationModelsClient.get_mtls_endpoint_and_cert_source(client_options) # type: ignore + + @property + def transport(self) -> ConversationModelsTransport: + """Returns the transport used by the client instance. + + Returns: + ConversationModelsTransport: The transport used by the client instance. + """ + return self._client.transport + + get_transport_class = functools.partial( + type(ConversationModelsClient).get_transport_class, + type(ConversationModelsClient), + ) + + def __init__( + self, + *, + credentials: ga_credentials.Credentials = None, + transport: Union[str, ConversationModelsTransport] = "grpc_asyncio", + client_options: ClientOptions = None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + ) -> None: + """Instantiates the conversation models client. + + Args: + credentials (Optional[google.auth.credentials.Credentials]): The + authorization credentials to attach to requests. These + credentials identify the application to the service; if none + are specified, the client will attempt to ascertain the + credentials from the environment. + transport (Union[str, ~.ConversationModelsTransport]): The + transport to use. If set to None, a transport is chosen + automatically. + client_options (ClientOptions): Custom options for the client. It + won't take effect if a ``transport`` instance is provided. + (1) The ``api_endpoint`` property can be used to override the + default endpoint provided by the client. GOOGLE_API_USE_MTLS_ENDPOINT + environment variable can also be used to override the endpoint: + "always" (always use the default mTLS endpoint), "never" (always + use the default regular endpoint) and "auto" (auto switch to the + default mTLS endpoint if client certificate is present, this is + the default value). However, the ``api_endpoint`` property takes + precedence if provided. + (2) If GOOGLE_API_USE_CLIENT_CERTIFICATE environment variable + is "true", then the ``client_cert_source`` property can be used + to provide client certificate for mutual TLS transport. If + not provided, the default SSL client certificate will be used if + present. If GOOGLE_API_USE_CLIENT_CERTIFICATE is "false" or not + set, no client certificate will be used. + + Raises: + google.auth.exceptions.MutualTlsChannelError: If mutual TLS transport + creation failed for any reason. + """ + self._client = ConversationModelsClient( + credentials=credentials, + transport=transport, + client_options=client_options, + client_info=client_info, + ) + + async def create_conversation_model( + self, + request: Union[ + gcd_conversation_model.CreateConversationModelRequest, dict + ] = None, + *, + parent: str = None, + conversation_model: gcd_conversation_model.ConversationModel = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> operation_async.AsyncOperation: + r"""Creates a model. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [CreateConversationModelOperationMetadata][google.cloud.dialogflow.v2.CreateConversationModelOperationMetadata] + - ``response``: + [ConversationModel][google.cloud.dialogflow.v2.ConversationModel] + + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_create_conversation_model(): + # Create a client + client = dialogflow_v2.ConversationModelsClient() + + # Initialize request argument(s) + conversation_model = dialogflow_v2.ConversationModel() + conversation_model.display_name = "display_name_value" + conversation_model.datasets.dataset = "dataset_value" + + request = dialogflow_v2.CreateConversationModelRequest( + conversation_model=conversation_model, + ) + + # Make the request + operation = client.create_conversation_model(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.CreateConversationModelRequest, dict]): + The request object. The request message for + [ConversationModels.CreateConversationModel][google.cloud.dialogflow.v2.ConversationModels.CreateConversationModel] + parent (:class:`str`): + The project to create conversation model for. Format: + ``projects/`` + + This corresponds to the ``parent`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + conversation_model (:class:`google.cloud.dialogflow_v2.types.ConversationModel`): + Required. The conversation model to + create. + + This corresponds to the ``conversation_model`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.api_core.operation_async.AsyncOperation: + An object representing a long-running operation. + + The result type for the operation will be + :class:`google.cloud.dialogflow_v2.types.ConversationModel` + Represents a conversation model. + + """ + # Create or coerce a protobuf request object. + # Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + has_flattened_params = any([parent, conversation_model]) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + request = gcd_conversation_model.CreateConversationModelRequest(request) + + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if parent is not None: + request.parent = parent + if conversation_model is not None: + request.conversation_model = conversation_model + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = gapic_v1.method_async.wrap_method( + self._client._transport.create_conversation_model, + default_timeout=None, + client_info=DEFAULT_CLIENT_INFO, + ) + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", request.parent),)), + ) + + # Send the request. + response = await rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # Wrap the response in an operation future. + response = operation_async.from_gapic( + response, + self._client._transport.operations_client, + gcd_conversation_model.ConversationModel, + metadata_type=gcd_conversation_model.CreateConversationModelOperationMetadata, + ) + + # Done; return the response. + return response + + async def get_conversation_model( + self, + request: Union[conversation_model.GetConversationModelRequest, dict] = None, + *, + name: str = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> conversation_model.ConversationModel: + r"""Gets conversation model. + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_get_conversation_model(): + # Create a client + client = dialogflow_v2.ConversationModelsClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetConversationModelRequest( + name="name_value", + ) + + # Make the request + response = client.get_conversation_model(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.GetConversationModelRequest, dict]): + The request object. The request message for + [ConversationModels.GetConversationModel][google.cloud.dialogflow.v2.ConversationModels.GetConversationModel] + name (:class:`str`): + Required. The conversation model to retrieve. Format: + ``projects//conversationModels/`` + + This corresponds to the ``name`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.cloud.dialogflow_v2.types.ConversationModel: + Represents a conversation model. + """ + # Create or coerce a protobuf request object. + # Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + has_flattened_params = any([name]) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + request = conversation_model.GetConversationModelRequest(request) + + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if name is not None: + request.name = name + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = gapic_v1.method_async.wrap_method( + self._client._transport.get_conversation_model, + default_timeout=None, + client_info=DEFAULT_CLIENT_INFO, + ) + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request.name),)), + ) + + # Send the request. + response = await rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # Done; return the response. + return response + + async def list_conversation_models( + self, + request: Union[conversation_model.ListConversationModelsRequest, dict] = None, + *, + parent: str = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> pagers.ListConversationModelsAsyncPager: + r"""Lists conversation models. + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_list_conversation_models(): + # Create a client + client = dialogflow_v2.ConversationModelsClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListConversationModelsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_conversation_models(request=request) + + # Handle the response + for response in page_result: + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.ListConversationModelsRequest, dict]): + The request object. The request message for + [ConversationModels.ListConversationModels][google.cloud.dialogflow.v2.ConversationModels.ListConversationModels] + parent (:class:`str`): + Required. The project to list all conversation models + for. Format: ``projects/`` + + This corresponds to the ``parent`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.cloud.dialogflow_v2.services.conversation_models.pagers.ListConversationModelsAsyncPager: + The response message for + [ConversationModels.ListConversationModels][google.cloud.dialogflow.v2.ConversationModels.ListConversationModels] + + Iterating over this object will yield results and + resolve additional pages automatically. + + """ + # Create or coerce a protobuf request object. + # Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + has_flattened_params = any([parent]) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + request = conversation_model.ListConversationModelsRequest(request) + + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if parent is not None: + request.parent = parent + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = gapic_v1.method_async.wrap_method( + self._client._transport.list_conversation_models, + default_timeout=None, + client_info=DEFAULT_CLIENT_INFO, + ) + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", request.parent),)), + ) + + # Send the request. + response = await rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # This method is paged; wrap the response in a pager, which provides + # an `__aiter__` convenience method. + response = pagers.ListConversationModelsAsyncPager( + method=rpc, request=request, response=response, metadata=metadata, + ) + + # Done; return the response. + return response + + async def delete_conversation_model( + self, + request: Union[conversation_model.DeleteConversationModelRequest, dict] = None, + *, + name: str = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> operation_async.AsyncOperation: + r"""Deletes a model. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [DeleteConversationModelOperationMetadata][google.cloud.dialogflow.v2.DeleteConversationModelOperationMetadata] + - ``response``: An `Empty + message `__ + + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_delete_conversation_model(): + # Create a client + client = dialogflow_v2.ConversationModelsClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteConversationModelRequest( + name="name_value", + ) + + # Make the request + operation = client.delete_conversation_model(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.DeleteConversationModelRequest, dict]): + The request object. The request message for + [ConversationModels.DeleteConversationModel][google.cloud.dialogflow.v2.ConversationModels.DeleteConversationModel] + name (:class:`str`): + Required. The conversation model to delete. Format: + ``projects//conversationModels/`` + + This corresponds to the ``name`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.api_core.operation_async.AsyncOperation: + An object representing a long-running operation. + + The result type for the operation will be :class:`google.protobuf.empty_pb2.Empty` A generic empty message that you can re-use to avoid defining duplicated + empty messages in your APIs. A typical example is to + use it as the request or the response type of an API + method. For instance: + + service Foo { + rpc Bar(google.protobuf.Empty) returns + (google.protobuf.Empty); + + } + + The JSON representation for Empty is empty JSON + object {}. + + """ + # Create or coerce a protobuf request object. + # Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + has_flattened_params = any([name]) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + request = conversation_model.DeleteConversationModelRequest(request) + + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if name is not None: + request.name = name + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = gapic_v1.method_async.wrap_method( + self._client._transport.delete_conversation_model, + default_timeout=None, + client_info=DEFAULT_CLIENT_INFO, + ) + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request.name),)), + ) + + # Send the request. + response = await rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # Wrap the response in an operation future. + response = operation_async.from_gapic( + response, + self._client._transport.operations_client, + empty_pb2.Empty, + metadata_type=conversation_model.DeleteConversationModelOperationMetadata, + ) + + # Done; return the response. + return response + + async def deploy_conversation_model( + self, + request: Union[conversation_model.DeployConversationModelRequest, dict] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> operation_async.AsyncOperation: + r"""Deploys a model. If a model is already deployed, deploying it + has no effect. A model can only serve prediction requests after + it gets deployed. For article suggestion, custom model will not + be used unless it is deployed. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [DeployConversationModelOperationMetadata][google.cloud.dialogflow.v2.DeployConversationModelOperationMetadata] + - ``response``: An `Empty + message `__ + + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_deploy_conversation_model(): + # Create a client + client = dialogflow_v2.ConversationModelsClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeployConversationModelRequest( + name="name_value", + ) + + # Make the request + operation = client.deploy_conversation_model(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.DeployConversationModelRequest, dict]): + The request object. The request message for + [ConversationModels.DeployConversationModel][google.cloud.dialogflow.v2.ConversationModels.DeployConversationModel] + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.api_core.operation_async.AsyncOperation: + An object representing a long-running operation. + + The result type for the operation will be :class:`google.protobuf.empty_pb2.Empty` A generic empty message that you can re-use to avoid defining duplicated + empty messages in your APIs. A typical example is to + use it as the request or the response type of an API + method. For instance: + + service Foo { + rpc Bar(google.protobuf.Empty) returns + (google.protobuf.Empty); + + } + + The JSON representation for Empty is empty JSON + object {}. + + """ + # Create or coerce a protobuf request object. + request = conversation_model.DeployConversationModelRequest(request) + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = gapic_v1.method_async.wrap_method( + self._client._transport.deploy_conversation_model, + default_timeout=None, + client_info=DEFAULT_CLIENT_INFO, + ) + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request.name),)), + ) + + # Send the request. + response = await rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # Wrap the response in an operation future. + response = operation_async.from_gapic( + response, + self._client._transport.operations_client, + empty_pb2.Empty, + metadata_type=conversation_model.DeployConversationModelOperationMetadata, + ) + + # Done; return the response. + return response + + async def undeploy_conversation_model( + self, + request: Union[ + conversation_model.UndeployConversationModelRequest, dict + ] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> operation_async.AsyncOperation: + r"""Undeploys a model. If the model is not deployed this method has + no effect. If the model is currently being used: + + - For article suggestion, article suggestion will fallback to + the default model if model is undeployed. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [UndeployConversationModelOperationMetadata][google.cloud.dialogflow.v2.UndeployConversationModelOperationMetadata] + - ``response``: An `Empty + message `__ + + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_undeploy_conversation_model(): + # Create a client + client = dialogflow_v2.ConversationModelsClient() + + # Initialize request argument(s) + request = dialogflow_v2.UndeployConversationModelRequest( + name="name_value", + ) + + # Make the request + operation = client.undeploy_conversation_model(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.UndeployConversationModelRequest, dict]): + The request object. The request message for + [ConversationModels.UndeployConversationModel][google.cloud.dialogflow.v2.ConversationModels.UndeployConversationModel] + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.api_core.operation_async.AsyncOperation: + An object representing a long-running operation. + + The result type for the operation will be :class:`google.protobuf.empty_pb2.Empty` A generic empty message that you can re-use to avoid defining duplicated + empty messages in your APIs. A typical example is to + use it as the request or the response type of an API + method. For instance: + + service Foo { + rpc Bar(google.protobuf.Empty) returns + (google.protobuf.Empty); + + } + + The JSON representation for Empty is empty JSON + object {}. + + """ + # Create or coerce a protobuf request object. + request = conversation_model.UndeployConversationModelRequest(request) + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = gapic_v1.method_async.wrap_method( + self._client._transport.undeploy_conversation_model, + default_timeout=None, + client_info=DEFAULT_CLIENT_INFO, + ) + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request.name),)), + ) + + # Send the request. + response = await rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # Wrap the response in an operation future. + response = operation_async.from_gapic( + response, + self._client._transport.operations_client, + empty_pb2.Empty, + metadata_type=conversation_model.UndeployConversationModelOperationMetadata, + ) + + # Done; return the response. + return response + + async def get_conversation_model_evaluation( + self, + request: Union[ + conversation_model.GetConversationModelEvaluationRequest, dict + ] = None, + *, + name: str = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> conversation_model.ConversationModelEvaluation: + r"""Gets an evaluation of conversation model. + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_get_conversation_model_evaluation(): + # Create a client + client = dialogflow_v2.ConversationModelsClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetConversationModelEvaluationRequest( + name="name_value", + ) + + # Make the request + response = client.get_conversation_model_evaluation(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.GetConversationModelEvaluationRequest, dict]): + The request object. The request message for + [ConversationModels.GetConversationModelEvaluation][google.cloud.dialogflow.v2.ConversationModels.GetConversationModelEvaluation] + name (:class:`str`): + Required. The conversation model evaluation resource + name. Format: + ``projects//conversationModels//evaluations/`` + + This corresponds to the ``name`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.cloud.dialogflow_v2.types.ConversationModelEvaluation: + Represents evaluation result of a + conversation model. + + """ + # Create or coerce a protobuf request object. + # Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + has_flattened_params = any([name]) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + request = conversation_model.GetConversationModelEvaluationRequest(request) + + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if name is not None: + request.name = name + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = gapic_v1.method_async.wrap_method( + self._client._transport.get_conversation_model_evaluation, + default_timeout=None, + client_info=DEFAULT_CLIENT_INFO, + ) + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request.name),)), + ) + + # Send the request. + response = await rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # Done; return the response. + return response + + async def list_conversation_model_evaluations( + self, + request: Union[ + conversation_model.ListConversationModelEvaluationsRequest, dict + ] = None, + *, + parent: str = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> pagers.ListConversationModelEvaluationsAsyncPager: + r"""Lists evaluations of a conversation model. + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_list_conversation_model_evaluations(): + # Create a client + client = dialogflow_v2.ConversationModelsClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListConversationModelEvaluationsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_conversation_model_evaluations(request=request) + + # Handle the response + for response in page_result: + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.ListConversationModelEvaluationsRequest, dict]): + The request object. The request message for + [ConversationModels.ListConversationModelEvaluations][google.cloud.dialogflow.v2.ConversationModels.ListConversationModelEvaluations] + parent (:class:`str`): + Required. The conversation model resource name. Format: + ``projects//conversationModels/`` + + This corresponds to the ``parent`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.cloud.dialogflow_v2.services.conversation_models.pagers.ListConversationModelEvaluationsAsyncPager: + The response message for + [ConversationModels.ListConversationModelEvaluations][google.cloud.dialogflow.v2.ConversationModels.ListConversationModelEvaluations] + + Iterating over this object will yield results and + resolve additional pages automatically. + + """ + # Create or coerce a protobuf request object. + # Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + has_flattened_params = any([parent]) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + request = conversation_model.ListConversationModelEvaluationsRequest(request) + + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if parent is not None: + request.parent = parent + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = gapic_v1.method_async.wrap_method( + self._client._transport.list_conversation_model_evaluations, + default_timeout=None, + client_info=DEFAULT_CLIENT_INFO, + ) + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", request.parent),)), + ) + + # Send the request. + response = await rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # This method is paged; wrap the response in a pager, which provides + # an `__aiter__` convenience method. + response = pagers.ListConversationModelEvaluationsAsyncPager( + method=rpc, request=request, response=response, metadata=metadata, + ) + + # Done; return the response. + return response + + async def create_conversation_model_evaluation( + self, + request: Union[ + conversation_model.CreateConversationModelEvaluationRequest, dict + ] = None, + *, + parent: str = None, + conversation_model_evaluation: conversation_model.ConversationModelEvaluation = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> operation_async.AsyncOperation: + r"""Creates evaluation of a conversation model. + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_create_conversation_model_evaluation(): + # Create a client + client = dialogflow_v2.ConversationModelsClient() + + # Initialize request argument(s) + request = dialogflow_v2.CreateConversationModelEvaluationRequest( + parent="parent_value", + ) + + # Make the request + operation = client.create_conversation_model_evaluation(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.CreateConversationModelEvaluationRequest, dict]): + The request object. The request message for + [ConversationModels.CreateConversationModelEvaluation][google.cloud.dialogflow.v2.ConversationModels.CreateConversationModelEvaluation] + parent (:class:`str`): + Required. The conversation model resource name. Format: + ``projects//locations//conversationModels/`` + + This corresponds to the ``parent`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + conversation_model_evaluation (:class:`google.cloud.dialogflow_v2.types.ConversationModelEvaluation`): + Required. The conversation model + evaluation to be created. + + This corresponds to the ``conversation_model_evaluation`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.api_core.operation_async.AsyncOperation: + An object representing a long-running operation. + + The result type for the operation will be + :class:`google.cloud.dialogflow_v2.types.ConversationModelEvaluation` + Represents evaluation result of a conversation model. + + """ + # Create or coerce a protobuf request object. + # Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + has_flattened_params = any([parent, conversation_model_evaluation]) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + request = conversation_model.CreateConversationModelEvaluationRequest(request) + + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if parent is not None: + request.parent = parent + if conversation_model_evaluation is not None: + request.conversation_model_evaluation = conversation_model_evaluation + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = gapic_v1.method_async.wrap_method( + self._client._transport.create_conversation_model_evaluation, + default_timeout=None, + client_info=DEFAULT_CLIENT_INFO, + ) + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", request.parent),)), + ) + + # Send the request. + response = await rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # Wrap the response in an operation future. + response = operation_async.from_gapic( + response, + self._client._transport.operations_client, + conversation_model.ConversationModelEvaluation, + metadata_type=conversation_model.CreateConversationModelEvaluationOperationMetadata, + ) + + # Done; return the response. + return response + + async def __aenter__(self): + return self + + async def __aexit__(self, exc_type, exc, tb): + await self.transport.close() + + +try: + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=pkg_resources.get_distribution( + "google-cloud-dialogflow", + ).version, + ) +except pkg_resources.DistributionNotFound: + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo() + + +__all__ = ("ConversationModelsAsyncClient",) diff --git a/google/cloud/dialogflow_v2/services/conversation_models/client.py b/google/cloud/dialogflow_v2/services/conversation_models/client.py new file mode 100644 index 000000000..ead70deaf --- /dev/null +++ b/google/cloud/dialogflow_v2/services/conversation_models/client.py @@ -0,0 +1,1494 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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 collections import OrderedDict +import os +import re +from typing import Dict, Optional, Sequence, Tuple, Type, Union +import pkg_resources + +from google.api_core import client_options as client_options_lib +from google.api_core import exceptions as core_exceptions +from google.api_core import gapic_v1 +from google.api_core import retry as retries +from google.auth import credentials as ga_credentials # type: ignore +from google.auth.transport import mtls # type: ignore +from google.auth.transport.grpc import SslCredentials # type: ignore +from google.auth.exceptions import MutualTLSChannelError # type: ignore +from google.oauth2 import service_account # type: ignore + +try: + OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault] +except AttributeError: # pragma: NO COVER + OptionalRetry = Union[retries.Retry, object] # type: ignore + +from google.api_core import operation # type: ignore +from google.api_core import operation_async # type: ignore +from google.cloud.dialogflow_v2.services.conversation_models import pagers +from google.cloud.dialogflow_v2.types import conversation_model +from google.cloud.dialogflow_v2.types import ( + conversation_model as gcd_conversation_model, +) +from google.protobuf import empty_pb2 # type: ignore +from google.protobuf import timestamp_pb2 # type: ignore +from .transports.base import ConversationModelsTransport, DEFAULT_CLIENT_INFO +from .transports.grpc import ConversationModelsGrpcTransport +from .transports.grpc_asyncio import ConversationModelsGrpcAsyncIOTransport + + +class ConversationModelsClientMeta(type): + """Metaclass for the ConversationModels client. + + This provides class-level methods for building and retrieving + support objects (e.g. transport) without polluting the client instance + objects. + """ + + _transport_registry = ( + OrderedDict() + ) # type: Dict[str, Type[ConversationModelsTransport]] + _transport_registry["grpc"] = ConversationModelsGrpcTransport + _transport_registry["grpc_asyncio"] = ConversationModelsGrpcAsyncIOTransport + + def get_transport_class( + cls, label: str = None, + ) -> Type[ConversationModelsTransport]: + """Returns an appropriate transport class. + + Args: + label: The name of the desired transport. If none is + provided, then the first transport in the registry is used. + + Returns: + The transport class to use. + """ + # If a specific transport is requested, return that one. + if label: + return cls._transport_registry[label] + + # No transport is requested; return the default (that is, the first one + # in the dictionary). + return next(iter(cls._transport_registry.values())) + + +class ConversationModelsClient(metaclass=ConversationModelsClientMeta): + """Manages a collection of models for human agent assistant.""" + + @staticmethod + def _get_default_mtls_endpoint(api_endpoint): + """Converts api endpoint to mTLS endpoint. + + Convert "*.sandbox.googleapis.com" and "*.googleapis.com" to + "*.mtls.sandbox.googleapis.com" and "*.mtls.googleapis.com" respectively. + Args: + api_endpoint (Optional[str]): the api endpoint to convert. + Returns: + str: converted mTLS api endpoint. + """ + if not api_endpoint: + return api_endpoint + + mtls_endpoint_re = re.compile( + r"(?P[^.]+)(?P\.mtls)?(?P\.sandbox)?(?P\.googleapis\.com)?" + ) + + m = mtls_endpoint_re.match(api_endpoint) + name, mtls, sandbox, googledomain = m.groups() + if mtls or not googledomain: + return api_endpoint + + if sandbox: + return api_endpoint.replace( + "sandbox.googleapis.com", "mtls.sandbox.googleapis.com" + ) + + return api_endpoint.replace(".googleapis.com", ".mtls.googleapis.com") + + DEFAULT_ENDPOINT = "dialogflow.googleapis.com" + DEFAULT_MTLS_ENDPOINT = _get_default_mtls_endpoint.__func__( # type: ignore + DEFAULT_ENDPOINT + ) + + @classmethod + def from_service_account_info(cls, info: dict, *args, **kwargs): + """Creates an instance of this client using the provided credentials + info. + + Args: + info (dict): The service account private key info. + args: Additional arguments to pass to the constructor. + kwargs: Additional arguments to pass to the constructor. + + Returns: + ConversationModelsClient: The constructed client. + """ + credentials = service_account.Credentials.from_service_account_info(info) + kwargs["credentials"] = credentials + return cls(*args, **kwargs) + + @classmethod + def from_service_account_file(cls, filename: str, *args, **kwargs): + """Creates an instance of this client using the provided credentials + file. + + Args: + filename (str): The path to the service account private key json + file. + args: Additional arguments to pass to the constructor. + kwargs: Additional arguments to pass to the constructor. + + Returns: + ConversationModelsClient: The constructed client. + """ + credentials = service_account.Credentials.from_service_account_file(filename) + kwargs["credentials"] = credentials + return cls(*args, **kwargs) + + from_service_account_json = from_service_account_file + + @property + def transport(self) -> ConversationModelsTransport: + """Returns the transport used by the client instance. + + Returns: + ConversationModelsTransport: The transport used by the client + instance. + """ + return self._transport + + @staticmethod + def conversation_dataset_path( + project: str, location: str, conversation_dataset: str, + ) -> str: + """Returns a fully-qualified conversation_dataset string.""" + return "projects/{project}/locations/{location}/conversationDatasets/{conversation_dataset}".format( + project=project, + location=location, + conversation_dataset=conversation_dataset, + ) + + @staticmethod + def parse_conversation_dataset_path(path: str) -> Dict[str, str]: + """Parses a conversation_dataset path into its component segments.""" + m = re.match( + r"^projects/(?P.+?)/locations/(?P.+?)/conversationDatasets/(?P.+?)$", + path, + ) + return m.groupdict() if m else {} + + @staticmethod + def conversation_model_path( + project: str, location: str, conversation_model: str, + ) -> str: + """Returns a fully-qualified conversation_model string.""" + return "projects/{project}/locations/{location}/conversationModels/{conversation_model}".format( + project=project, location=location, conversation_model=conversation_model, + ) + + @staticmethod + def parse_conversation_model_path(path: str) -> Dict[str, str]: + """Parses a conversation_model path into its component segments.""" + m = re.match( + r"^projects/(?P.+?)/locations/(?P.+?)/conversationModels/(?P.+?)$", + path, + ) + return m.groupdict() if m else {} + + @staticmethod + def conversation_model_evaluation_path( + project: str, conversation_model: str, + ) -> str: + """Returns a fully-qualified conversation_model_evaluation string.""" + return "projects/{project}/conversationModels/{conversation_model}/evaluations/evaluation".format( + project=project, conversation_model=conversation_model, + ) + + @staticmethod + def parse_conversation_model_evaluation_path(path: str) -> Dict[str, str]: + """Parses a conversation_model_evaluation path into its component segments.""" + m = re.match( + r"^projects/(?P.+?)/conversationModels/(?P.+?)/evaluations/evaluation$", + path, + ) + return m.groupdict() if m else {} + + @staticmethod + def document_path(project: str, knowledge_base: str, document: str,) -> str: + """Returns a fully-qualified document string.""" + return "projects/{project}/knowledgeBases/{knowledge_base}/documents/{document}".format( + project=project, knowledge_base=knowledge_base, document=document, + ) + + @staticmethod + def parse_document_path(path: str) -> Dict[str, str]: + """Parses a document path into its component segments.""" + m = re.match( + r"^projects/(?P.+?)/knowledgeBases/(?P.+?)/documents/(?P.+?)$", + path, + ) + return m.groupdict() if m else {} + + @staticmethod + def common_billing_account_path(billing_account: str,) -> str: + """Returns a fully-qualified billing_account string.""" + return "billingAccounts/{billing_account}".format( + billing_account=billing_account, + ) + + @staticmethod + def parse_common_billing_account_path(path: str) -> Dict[str, str]: + """Parse a billing_account path into its component segments.""" + m = re.match(r"^billingAccounts/(?P.+?)$", path) + return m.groupdict() if m else {} + + @staticmethod + def common_folder_path(folder: str,) -> str: + """Returns a fully-qualified folder string.""" + return "folders/{folder}".format(folder=folder,) + + @staticmethod + def parse_common_folder_path(path: str) -> Dict[str, str]: + """Parse a folder path into its component segments.""" + m = re.match(r"^folders/(?P.+?)$", path) + return m.groupdict() if m else {} + + @staticmethod + def common_organization_path(organization: str,) -> str: + """Returns a fully-qualified organization string.""" + return "organizations/{organization}".format(organization=organization,) + + @staticmethod + def parse_common_organization_path(path: str) -> Dict[str, str]: + """Parse a organization path into its component segments.""" + m = re.match(r"^organizations/(?P.+?)$", path) + return m.groupdict() if m else {} + + @staticmethod + def common_project_path(project: str,) -> str: + """Returns a fully-qualified project string.""" + return "projects/{project}".format(project=project,) + + @staticmethod + def parse_common_project_path(path: str) -> Dict[str, str]: + """Parse a project path into its component segments.""" + m = re.match(r"^projects/(?P.+?)$", path) + return m.groupdict() if m else {} + + @staticmethod + def common_location_path(project: str, location: str,) -> str: + """Returns a fully-qualified location string.""" + return "projects/{project}/locations/{location}".format( + project=project, location=location, + ) + + @staticmethod + def parse_common_location_path(path: str) -> Dict[str, str]: + """Parse a location path into its component segments.""" + m = re.match(r"^projects/(?P.+?)/locations/(?P.+?)$", path) + return m.groupdict() if m else {} + + @classmethod + def get_mtls_endpoint_and_cert_source( + cls, client_options: Optional[client_options_lib.ClientOptions] = None + ): + """Return the API endpoint and client cert source for mutual TLS. + + The client cert source is determined in the following order: + (1) if `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable is not "true", the + client cert source is None. + (2) if `client_options.client_cert_source` is provided, use the provided one; if the + default client cert source exists, use the default one; otherwise the client cert + source is None. + + The API endpoint is determined in the following order: + (1) if `client_options.api_endpoint` if provided, use the provided one. + (2) if `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable is "always", use the + default mTLS endpoint; if the environment variabel is "never", use the default API + endpoint; otherwise if client cert source exists, use the default mTLS endpoint, otherwise + use the default API endpoint. + + More details can be found at https://google.aip.dev/auth/4114. + + Args: + client_options (google.api_core.client_options.ClientOptions): Custom options for the + client. Only the `api_endpoint` and `client_cert_source` properties may be used + in this method. + + Returns: + Tuple[str, Callable[[], Tuple[bytes, bytes]]]: returns the API endpoint and the + client cert source to use. + + Raises: + google.auth.exceptions.MutualTLSChannelError: If any errors happen. + """ + if client_options is None: + client_options = client_options_lib.ClientOptions() + use_client_cert = os.getenv("GOOGLE_API_USE_CLIENT_CERTIFICATE", "false") + use_mtls_endpoint = os.getenv("GOOGLE_API_USE_MTLS_ENDPOINT", "auto") + if use_client_cert not in ("true", "false"): + raise ValueError( + "Environment variable `GOOGLE_API_USE_CLIENT_CERTIFICATE` must be either `true` or `false`" + ) + if use_mtls_endpoint not in ("auto", "never", "always"): + raise MutualTLSChannelError( + "Environment variable `GOOGLE_API_USE_MTLS_ENDPOINT` must be `never`, `auto` or `always`" + ) + + # Figure out the client cert source to use. + client_cert_source = None + if use_client_cert == "true": + if client_options.client_cert_source: + client_cert_source = client_options.client_cert_source + elif mtls.has_default_client_cert_source(): + client_cert_source = mtls.default_client_cert_source() + + # Figure out which api endpoint to use. + if client_options.api_endpoint is not None: + api_endpoint = client_options.api_endpoint + elif use_mtls_endpoint == "always" or ( + use_mtls_endpoint == "auto" and client_cert_source + ): + api_endpoint = cls.DEFAULT_MTLS_ENDPOINT + else: + api_endpoint = cls.DEFAULT_ENDPOINT + + return api_endpoint, client_cert_source + + def __init__( + self, + *, + credentials: Optional[ga_credentials.Credentials] = None, + transport: Union[str, ConversationModelsTransport, None] = None, + client_options: Optional[client_options_lib.ClientOptions] = None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + ) -> None: + """Instantiates the conversation models client. + + Args: + credentials (Optional[google.auth.credentials.Credentials]): The + authorization credentials to attach to requests. These + credentials identify the application to the service; if none + are specified, the client will attempt to ascertain the + credentials from the environment. + transport (Union[str, ConversationModelsTransport]): The + transport to use. If set to None, a transport is chosen + automatically. + client_options (google.api_core.client_options.ClientOptions): Custom options for the + client. It won't take effect if a ``transport`` instance is provided. + (1) The ``api_endpoint`` property can be used to override the + default endpoint provided by the client. GOOGLE_API_USE_MTLS_ENDPOINT + environment variable can also be used to override the endpoint: + "always" (always use the default mTLS endpoint), "never" (always + use the default regular endpoint) and "auto" (auto switch to the + default mTLS endpoint if client certificate is present, this is + the default value). However, the ``api_endpoint`` property takes + precedence if provided. + (2) If GOOGLE_API_USE_CLIENT_CERTIFICATE environment variable + is "true", then the ``client_cert_source`` property can be used + to provide client certificate for mutual TLS transport. If + not provided, the default SSL client certificate will be used if + present. If GOOGLE_API_USE_CLIENT_CERTIFICATE is "false" or not + set, no client certificate will be used. + client_info (google.api_core.gapic_v1.client_info.ClientInfo): + The client info used to send a user-agent string along with + API requests. If ``None``, then default info will be used. + Generally, you only need to set this if you're developing + your own client library. + + Raises: + google.auth.exceptions.MutualTLSChannelError: If mutual TLS transport + creation failed for any reason. + """ + if isinstance(client_options, dict): + client_options = client_options_lib.from_dict(client_options) + if client_options is None: + client_options = client_options_lib.ClientOptions() + + api_endpoint, client_cert_source_func = self.get_mtls_endpoint_and_cert_source( + client_options + ) + + api_key_value = getattr(client_options, "api_key", None) + if api_key_value and credentials: + raise ValueError( + "client_options.api_key and credentials are mutually exclusive" + ) + + # Save or instantiate the transport. + # Ordinarily, we provide the transport, but allowing a custom transport + # instance provides an extensibility point for unusual situations. + if isinstance(transport, ConversationModelsTransport): + # transport is a ConversationModelsTransport instance. + if credentials or client_options.credentials_file or api_key_value: + raise ValueError( + "When providing a transport instance, " + "provide its credentials directly." + ) + if client_options.scopes: + raise ValueError( + "When providing a transport instance, provide its scopes " + "directly." + ) + self._transport = transport + else: + import google.auth._default # type: ignore + + if api_key_value and hasattr( + google.auth._default, "get_api_key_credentials" + ): + credentials = google.auth._default.get_api_key_credentials( + api_key_value + ) + + Transport = type(self).get_transport_class(transport) + self._transport = Transport( + credentials=credentials, + credentials_file=client_options.credentials_file, + host=api_endpoint, + scopes=client_options.scopes, + client_cert_source_for_mtls=client_cert_source_func, + quota_project_id=client_options.quota_project_id, + client_info=client_info, + always_use_jwt_access=True, + ) + + def create_conversation_model( + self, + request: Union[ + gcd_conversation_model.CreateConversationModelRequest, dict + ] = None, + *, + parent: str = None, + conversation_model: gcd_conversation_model.ConversationModel = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> operation.Operation: + r"""Creates a model. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [CreateConversationModelOperationMetadata][google.cloud.dialogflow.v2.CreateConversationModelOperationMetadata] + - ``response``: + [ConversationModel][google.cloud.dialogflow.v2.ConversationModel] + + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_create_conversation_model(): + # Create a client + client = dialogflow_v2.ConversationModelsClient() + + # Initialize request argument(s) + conversation_model = dialogflow_v2.ConversationModel() + conversation_model.display_name = "display_name_value" + conversation_model.datasets.dataset = "dataset_value" + + request = dialogflow_v2.CreateConversationModelRequest( + conversation_model=conversation_model, + ) + + # Make the request + operation = client.create_conversation_model(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.CreateConversationModelRequest, dict]): + The request object. The request message for + [ConversationModels.CreateConversationModel][google.cloud.dialogflow.v2.ConversationModels.CreateConversationModel] + parent (str): + The project to create conversation model for. Format: + ``projects/`` + + This corresponds to the ``parent`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + conversation_model (google.cloud.dialogflow_v2.types.ConversationModel): + Required. The conversation model to + create. + + This corresponds to the ``conversation_model`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.api_core.operation.Operation: + An object representing a long-running operation. + + The result type for the operation will be + :class:`google.cloud.dialogflow_v2.types.ConversationModel` + Represents a conversation model. + + """ + # Create or coerce a protobuf request object. + # Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + has_flattened_params = any([parent, conversation_model]) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # Minor optimization to avoid making a copy if the user passes + # in a gcd_conversation_model.CreateConversationModelRequest. + # There's no risk of modifying the input as we've already verified + # there are no flattened fields. + if not isinstance( + request, gcd_conversation_model.CreateConversationModelRequest + ): + request = gcd_conversation_model.CreateConversationModelRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if parent is not None: + request.parent = parent + if conversation_model is not None: + request.conversation_model = conversation_model + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[ + self._transport.create_conversation_model + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", request.parent),)), + ) + + # Send the request. + response = rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # Wrap the response in an operation future. + response = operation.from_gapic( + response, + self._transport.operations_client, + gcd_conversation_model.ConversationModel, + metadata_type=gcd_conversation_model.CreateConversationModelOperationMetadata, + ) + + # Done; return the response. + return response + + def get_conversation_model( + self, + request: Union[conversation_model.GetConversationModelRequest, dict] = None, + *, + name: str = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> conversation_model.ConversationModel: + r"""Gets conversation model. + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_get_conversation_model(): + # Create a client + client = dialogflow_v2.ConversationModelsClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetConversationModelRequest( + name="name_value", + ) + + # Make the request + response = client.get_conversation_model(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.GetConversationModelRequest, dict]): + The request object. The request message for + [ConversationModels.GetConversationModel][google.cloud.dialogflow.v2.ConversationModels.GetConversationModel] + name (str): + Required. The conversation model to retrieve. Format: + ``projects//conversationModels/`` + + This corresponds to the ``name`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.cloud.dialogflow_v2.types.ConversationModel: + Represents a conversation model. + """ + # Create or coerce a protobuf request object. + # Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + has_flattened_params = any([name]) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # Minor optimization to avoid making a copy if the user passes + # in a conversation_model.GetConversationModelRequest. + # There's no risk of modifying the input as we've already verified + # there are no flattened fields. + if not isinstance(request, conversation_model.GetConversationModelRequest): + request = conversation_model.GetConversationModelRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if name is not None: + request.name = name + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.get_conversation_model] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request.name),)), + ) + + # Send the request. + response = rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # Done; return the response. + return response + + def list_conversation_models( + self, + request: Union[conversation_model.ListConversationModelsRequest, dict] = None, + *, + parent: str = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> pagers.ListConversationModelsPager: + r"""Lists conversation models. + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_list_conversation_models(): + # Create a client + client = dialogflow_v2.ConversationModelsClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListConversationModelsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_conversation_models(request=request) + + # Handle the response + for response in page_result: + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.ListConversationModelsRequest, dict]): + The request object. The request message for + [ConversationModels.ListConversationModels][google.cloud.dialogflow.v2.ConversationModels.ListConversationModels] + parent (str): + Required. The project to list all conversation models + for. Format: ``projects/`` + + This corresponds to the ``parent`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.cloud.dialogflow_v2.services.conversation_models.pagers.ListConversationModelsPager: + The response message for + [ConversationModels.ListConversationModels][google.cloud.dialogflow.v2.ConversationModels.ListConversationModels] + + Iterating over this object will yield results and + resolve additional pages automatically. + + """ + # Create or coerce a protobuf request object. + # Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + has_flattened_params = any([parent]) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # Minor optimization to avoid making a copy if the user passes + # in a conversation_model.ListConversationModelsRequest. + # There's no risk of modifying the input as we've already verified + # there are no flattened fields. + if not isinstance(request, conversation_model.ListConversationModelsRequest): + request = conversation_model.ListConversationModelsRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if parent is not None: + request.parent = parent + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.list_conversation_models] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", request.parent),)), + ) + + # Send the request. + response = rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # This method is paged; wrap the response in a pager, which provides + # an `__iter__` convenience method. + response = pagers.ListConversationModelsPager( + method=rpc, request=request, response=response, metadata=metadata, + ) + + # Done; return the response. + return response + + def delete_conversation_model( + self, + request: Union[conversation_model.DeleteConversationModelRequest, dict] = None, + *, + name: str = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> operation.Operation: + r"""Deletes a model. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [DeleteConversationModelOperationMetadata][google.cloud.dialogflow.v2.DeleteConversationModelOperationMetadata] + - ``response``: An `Empty + message `__ + + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_delete_conversation_model(): + # Create a client + client = dialogflow_v2.ConversationModelsClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteConversationModelRequest( + name="name_value", + ) + + # Make the request + operation = client.delete_conversation_model(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.DeleteConversationModelRequest, dict]): + The request object. The request message for + [ConversationModels.DeleteConversationModel][google.cloud.dialogflow.v2.ConversationModels.DeleteConversationModel] + name (str): + Required. The conversation model to delete. Format: + ``projects//conversationModels/`` + + This corresponds to the ``name`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.api_core.operation.Operation: + An object representing a long-running operation. + + The result type for the operation will be :class:`google.protobuf.empty_pb2.Empty` A generic empty message that you can re-use to avoid defining duplicated + empty messages in your APIs. A typical example is to + use it as the request or the response type of an API + method. For instance: + + service Foo { + rpc Bar(google.protobuf.Empty) returns + (google.protobuf.Empty); + + } + + The JSON representation for Empty is empty JSON + object {}. + + """ + # Create or coerce a protobuf request object. + # Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + has_flattened_params = any([name]) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # Minor optimization to avoid making a copy if the user passes + # in a conversation_model.DeleteConversationModelRequest. + # There's no risk of modifying the input as we've already verified + # there are no flattened fields. + if not isinstance(request, conversation_model.DeleteConversationModelRequest): + request = conversation_model.DeleteConversationModelRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if name is not None: + request.name = name + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[ + self._transport.delete_conversation_model + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request.name),)), + ) + + # Send the request. + response = rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # Wrap the response in an operation future. + response = operation.from_gapic( + response, + self._transport.operations_client, + empty_pb2.Empty, + metadata_type=conversation_model.DeleteConversationModelOperationMetadata, + ) + + # Done; return the response. + return response + + def deploy_conversation_model( + self, + request: Union[conversation_model.DeployConversationModelRequest, dict] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> operation.Operation: + r"""Deploys a model. If a model is already deployed, deploying it + has no effect. A model can only serve prediction requests after + it gets deployed. For article suggestion, custom model will not + be used unless it is deployed. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [DeployConversationModelOperationMetadata][google.cloud.dialogflow.v2.DeployConversationModelOperationMetadata] + - ``response``: An `Empty + message `__ + + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_deploy_conversation_model(): + # Create a client + client = dialogflow_v2.ConversationModelsClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeployConversationModelRequest( + name="name_value", + ) + + # Make the request + operation = client.deploy_conversation_model(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.DeployConversationModelRequest, dict]): + The request object. The request message for + [ConversationModels.DeployConversationModel][google.cloud.dialogflow.v2.ConversationModels.DeployConversationModel] + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.api_core.operation.Operation: + An object representing a long-running operation. + + The result type for the operation will be :class:`google.protobuf.empty_pb2.Empty` A generic empty message that you can re-use to avoid defining duplicated + empty messages in your APIs. A typical example is to + use it as the request or the response type of an API + method. For instance: + + service Foo { + rpc Bar(google.protobuf.Empty) returns + (google.protobuf.Empty); + + } + + The JSON representation for Empty is empty JSON + object {}. + + """ + # Create or coerce a protobuf request object. + # Minor optimization to avoid making a copy if the user passes + # in a conversation_model.DeployConversationModelRequest. + # There's no risk of modifying the input as we've already verified + # there are no flattened fields. + if not isinstance(request, conversation_model.DeployConversationModelRequest): + request = conversation_model.DeployConversationModelRequest(request) + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[ + self._transport.deploy_conversation_model + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request.name),)), + ) + + # Send the request. + response = rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # Wrap the response in an operation future. + response = operation.from_gapic( + response, + self._transport.operations_client, + empty_pb2.Empty, + metadata_type=conversation_model.DeployConversationModelOperationMetadata, + ) + + # Done; return the response. + return response + + def undeploy_conversation_model( + self, + request: Union[ + conversation_model.UndeployConversationModelRequest, dict + ] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> operation.Operation: + r"""Undeploys a model. If the model is not deployed this method has + no effect. If the model is currently being used: + + - For article suggestion, article suggestion will fallback to + the default model if model is undeployed. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [UndeployConversationModelOperationMetadata][google.cloud.dialogflow.v2.UndeployConversationModelOperationMetadata] + - ``response``: An `Empty + message `__ + + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_undeploy_conversation_model(): + # Create a client + client = dialogflow_v2.ConversationModelsClient() + + # Initialize request argument(s) + request = dialogflow_v2.UndeployConversationModelRequest( + name="name_value", + ) + + # Make the request + operation = client.undeploy_conversation_model(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.UndeployConversationModelRequest, dict]): + The request object. The request message for + [ConversationModels.UndeployConversationModel][google.cloud.dialogflow.v2.ConversationModels.UndeployConversationModel] + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.api_core.operation.Operation: + An object representing a long-running operation. + + The result type for the operation will be :class:`google.protobuf.empty_pb2.Empty` A generic empty message that you can re-use to avoid defining duplicated + empty messages in your APIs. A typical example is to + use it as the request or the response type of an API + method. For instance: + + service Foo { + rpc Bar(google.protobuf.Empty) returns + (google.protobuf.Empty); + + } + + The JSON representation for Empty is empty JSON + object {}. + + """ + # Create or coerce a protobuf request object. + # Minor optimization to avoid making a copy if the user passes + # in a conversation_model.UndeployConversationModelRequest. + # There's no risk of modifying the input as we've already verified + # there are no flattened fields. + if not isinstance(request, conversation_model.UndeployConversationModelRequest): + request = conversation_model.UndeployConversationModelRequest(request) + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[ + self._transport.undeploy_conversation_model + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request.name),)), + ) + + # Send the request. + response = rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # Wrap the response in an operation future. + response = operation.from_gapic( + response, + self._transport.operations_client, + empty_pb2.Empty, + metadata_type=conversation_model.UndeployConversationModelOperationMetadata, + ) + + # Done; return the response. + return response + + def get_conversation_model_evaluation( + self, + request: Union[ + conversation_model.GetConversationModelEvaluationRequest, dict + ] = None, + *, + name: str = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> conversation_model.ConversationModelEvaluation: + r"""Gets an evaluation of conversation model. + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_get_conversation_model_evaluation(): + # Create a client + client = dialogflow_v2.ConversationModelsClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetConversationModelEvaluationRequest( + name="name_value", + ) + + # Make the request + response = client.get_conversation_model_evaluation(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.GetConversationModelEvaluationRequest, dict]): + The request object. The request message for + [ConversationModels.GetConversationModelEvaluation][google.cloud.dialogflow.v2.ConversationModels.GetConversationModelEvaluation] + name (str): + Required. The conversation model evaluation resource + name. Format: + ``projects//conversationModels//evaluations/`` + + This corresponds to the ``name`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.cloud.dialogflow_v2.types.ConversationModelEvaluation: + Represents evaluation result of a + conversation model. + + """ + # Create or coerce a protobuf request object. + # Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + has_flattened_params = any([name]) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # Minor optimization to avoid making a copy if the user passes + # in a conversation_model.GetConversationModelEvaluationRequest. + # There's no risk of modifying the input as we've already verified + # there are no flattened fields. + if not isinstance( + request, conversation_model.GetConversationModelEvaluationRequest + ): + request = conversation_model.GetConversationModelEvaluationRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if name is not None: + request.name = name + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[ + self._transport.get_conversation_model_evaluation + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request.name),)), + ) + + # Send the request. + response = rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # Done; return the response. + return response + + def list_conversation_model_evaluations( + self, + request: Union[ + conversation_model.ListConversationModelEvaluationsRequest, dict + ] = None, + *, + parent: str = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> pagers.ListConversationModelEvaluationsPager: + r"""Lists evaluations of a conversation model. + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_list_conversation_model_evaluations(): + # Create a client + client = dialogflow_v2.ConversationModelsClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListConversationModelEvaluationsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_conversation_model_evaluations(request=request) + + # Handle the response + for response in page_result: + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.ListConversationModelEvaluationsRequest, dict]): + The request object. The request message for + [ConversationModels.ListConversationModelEvaluations][google.cloud.dialogflow.v2.ConversationModels.ListConversationModelEvaluations] + parent (str): + Required. The conversation model resource name. Format: + ``projects//conversationModels/`` + + This corresponds to the ``parent`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.cloud.dialogflow_v2.services.conversation_models.pagers.ListConversationModelEvaluationsPager: + The response message for + [ConversationModels.ListConversationModelEvaluations][google.cloud.dialogflow.v2.ConversationModels.ListConversationModelEvaluations] + + Iterating over this object will yield results and + resolve additional pages automatically. + + """ + # Create or coerce a protobuf request object. + # Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + has_flattened_params = any([parent]) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # Minor optimization to avoid making a copy if the user passes + # in a conversation_model.ListConversationModelEvaluationsRequest. + # There's no risk of modifying the input as we've already verified + # there are no flattened fields. + if not isinstance( + request, conversation_model.ListConversationModelEvaluationsRequest + ): + request = conversation_model.ListConversationModelEvaluationsRequest( + request + ) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if parent is not None: + request.parent = parent + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[ + self._transport.list_conversation_model_evaluations + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", request.parent),)), + ) + + # Send the request. + response = rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # This method is paged; wrap the response in a pager, which provides + # an `__iter__` convenience method. + response = pagers.ListConversationModelEvaluationsPager( + method=rpc, request=request, response=response, metadata=metadata, + ) + + # Done; return the response. + return response + + def create_conversation_model_evaluation( + self, + request: Union[ + conversation_model.CreateConversationModelEvaluationRequest, dict + ] = None, + *, + parent: str = None, + conversation_model_evaluation: conversation_model.ConversationModelEvaluation = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> operation.Operation: + r"""Creates evaluation of a conversation model. + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_create_conversation_model_evaluation(): + # Create a client + client = dialogflow_v2.ConversationModelsClient() + + # Initialize request argument(s) + request = dialogflow_v2.CreateConversationModelEvaluationRequest( + parent="parent_value", + ) + + # Make the request + operation = client.create_conversation_model_evaluation(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.CreateConversationModelEvaluationRequest, dict]): + The request object. The request message for + [ConversationModels.CreateConversationModelEvaluation][google.cloud.dialogflow.v2.ConversationModels.CreateConversationModelEvaluation] + parent (str): + Required. The conversation model resource name. Format: + ``projects//locations//conversationModels/`` + + This corresponds to the ``parent`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + conversation_model_evaluation (google.cloud.dialogflow_v2.types.ConversationModelEvaluation): + Required. The conversation model + evaluation to be created. + + This corresponds to the ``conversation_model_evaluation`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.api_core.operation.Operation: + An object representing a long-running operation. + + The result type for the operation will be + :class:`google.cloud.dialogflow_v2.types.ConversationModelEvaluation` + Represents evaluation result of a conversation model. + + """ + # Create or coerce a protobuf request object. + # Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + has_flattened_params = any([parent, conversation_model_evaluation]) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # Minor optimization to avoid making a copy if the user passes + # in a conversation_model.CreateConversationModelEvaluationRequest. + # There's no risk of modifying the input as we've already verified + # there are no flattened fields. + if not isinstance( + request, conversation_model.CreateConversationModelEvaluationRequest + ): + request = conversation_model.CreateConversationModelEvaluationRequest( + request + ) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if parent is not None: + request.parent = parent + if conversation_model_evaluation is not None: + request.conversation_model_evaluation = conversation_model_evaluation + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[ + self._transport.create_conversation_model_evaluation + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", request.parent),)), + ) + + # Send the request. + response = rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # Wrap the response in an operation future. + response = operation.from_gapic( + response, + self._transport.operations_client, + conversation_model.ConversationModelEvaluation, + metadata_type=conversation_model.CreateConversationModelEvaluationOperationMetadata, + ) + + # Done; return the response. + return response + + def __enter__(self): + return self + + def __exit__(self, type, value, traceback): + """Releases underlying transport's resources. + + .. warning:: + ONLY use as a context manager if the transport is NOT shared + with other clients! Exiting the with block will CLOSE the transport + and may cause errors in other clients! + """ + self.transport.close() + + +try: + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=pkg_resources.get_distribution( + "google-cloud-dialogflow", + ).version, + ) +except pkg_resources.DistributionNotFound: + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo() + + +__all__ = ("ConversationModelsClient",) diff --git a/google/cloud/dialogflow_v2/services/conversation_models/pagers.py b/google/cloud/dialogflow_v2/services/conversation_models/pagers.py new file mode 100644 index 000000000..eb45a8812 --- /dev/null +++ b/google/cloud/dialogflow_v2/services/conversation_models/pagers.py @@ -0,0 +1,301 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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 typing import ( + Any, + AsyncIterator, + Awaitable, + Callable, + Sequence, + Tuple, + Optional, + Iterator, +) + +from google.cloud.dialogflow_v2.types import conversation_model + + +class ListConversationModelsPager: + """A pager for iterating through ``list_conversation_models`` requests. + + This class thinly wraps an initial + :class:`google.cloud.dialogflow_v2.types.ListConversationModelsResponse` object, and + provides an ``__iter__`` method to iterate through its + ``conversation_models`` field. + + If there are more pages, the ``__iter__`` method will make additional + ``ListConversationModels`` requests and continue to iterate + through the ``conversation_models`` field on the + corresponding responses. + + All the usual :class:`google.cloud.dialogflow_v2.types.ListConversationModelsResponse` + attributes are available on the pager. If multiple requests are made, only + the most recent response is retained, and thus used for attribute lookup. + """ + + def __init__( + self, + method: Callable[..., conversation_model.ListConversationModelsResponse], + request: conversation_model.ListConversationModelsRequest, + response: conversation_model.ListConversationModelsResponse, + *, + metadata: Sequence[Tuple[str, str]] = () + ): + """Instantiate the pager. + + Args: + method (Callable): The method that was originally called, and + which instantiated this pager. + request (google.cloud.dialogflow_v2.types.ListConversationModelsRequest): + The initial request object. + response (google.cloud.dialogflow_v2.types.ListConversationModelsResponse): + The initial response object. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + """ + self._method = method + self._request = conversation_model.ListConversationModelsRequest(request) + self._response = response + self._metadata = metadata + + def __getattr__(self, name: str) -> Any: + return getattr(self._response, name) + + @property + def pages(self) -> Iterator[conversation_model.ListConversationModelsResponse]: + yield self._response + while self._response.next_page_token: + self._request.page_token = self._response.next_page_token + self._response = self._method(self._request, metadata=self._metadata) + yield self._response + + def __iter__(self) -> Iterator[conversation_model.ConversationModel]: + for page in self.pages: + yield from page.conversation_models + + def __repr__(self) -> str: + return "{0}<{1!r}>".format(self.__class__.__name__, self._response) + + +class ListConversationModelsAsyncPager: + """A pager for iterating through ``list_conversation_models`` requests. + + This class thinly wraps an initial + :class:`google.cloud.dialogflow_v2.types.ListConversationModelsResponse` object, and + provides an ``__aiter__`` method to iterate through its + ``conversation_models`` field. + + If there are more pages, the ``__aiter__`` method will make additional + ``ListConversationModels`` requests and continue to iterate + through the ``conversation_models`` field on the + corresponding responses. + + All the usual :class:`google.cloud.dialogflow_v2.types.ListConversationModelsResponse` + attributes are available on the pager. If multiple requests are made, only + the most recent response is retained, and thus used for attribute lookup. + """ + + def __init__( + self, + method: Callable[ + ..., Awaitable[conversation_model.ListConversationModelsResponse] + ], + request: conversation_model.ListConversationModelsRequest, + response: conversation_model.ListConversationModelsResponse, + *, + metadata: Sequence[Tuple[str, str]] = () + ): + """Instantiates the pager. + + Args: + method (Callable): The method that was originally called, and + which instantiated this pager. + request (google.cloud.dialogflow_v2.types.ListConversationModelsRequest): + The initial request object. + response (google.cloud.dialogflow_v2.types.ListConversationModelsResponse): + The initial response object. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + """ + self._method = method + self._request = conversation_model.ListConversationModelsRequest(request) + self._response = response + self._metadata = metadata + + def __getattr__(self, name: str) -> Any: + return getattr(self._response, name) + + @property + async def pages( + self, + ) -> AsyncIterator[conversation_model.ListConversationModelsResponse]: + yield self._response + while self._response.next_page_token: + self._request.page_token = self._response.next_page_token + self._response = await self._method(self._request, metadata=self._metadata) + yield self._response + + def __aiter__(self) -> AsyncIterator[conversation_model.ConversationModel]: + async def async_generator(): + async for page in self.pages: + for response in page.conversation_models: + yield response + + return async_generator() + + def __repr__(self) -> str: + return "{0}<{1!r}>".format(self.__class__.__name__, self._response) + + +class ListConversationModelEvaluationsPager: + """A pager for iterating through ``list_conversation_model_evaluations`` requests. + + This class thinly wraps an initial + :class:`google.cloud.dialogflow_v2.types.ListConversationModelEvaluationsResponse` object, and + provides an ``__iter__`` method to iterate through its + ``conversation_model_evaluations`` field. + + If there are more pages, the ``__iter__`` method will make additional + ``ListConversationModelEvaluations`` requests and continue to iterate + through the ``conversation_model_evaluations`` field on the + corresponding responses. + + All the usual :class:`google.cloud.dialogflow_v2.types.ListConversationModelEvaluationsResponse` + attributes are available on the pager. If multiple requests are made, only + the most recent response is retained, and thus used for attribute lookup. + """ + + def __init__( + self, + method: Callable[ + ..., conversation_model.ListConversationModelEvaluationsResponse + ], + request: conversation_model.ListConversationModelEvaluationsRequest, + response: conversation_model.ListConversationModelEvaluationsResponse, + *, + metadata: Sequence[Tuple[str, str]] = () + ): + """Instantiate the pager. + + Args: + method (Callable): The method that was originally called, and + which instantiated this pager. + request (google.cloud.dialogflow_v2.types.ListConversationModelEvaluationsRequest): + The initial request object. + response (google.cloud.dialogflow_v2.types.ListConversationModelEvaluationsResponse): + The initial response object. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + """ + self._method = method + self._request = conversation_model.ListConversationModelEvaluationsRequest( + request + ) + self._response = response + self._metadata = metadata + + def __getattr__(self, name: str) -> Any: + return getattr(self._response, name) + + @property + def pages( + self, + ) -> Iterator[conversation_model.ListConversationModelEvaluationsResponse]: + yield self._response + while self._response.next_page_token: + self._request.page_token = self._response.next_page_token + self._response = self._method(self._request, metadata=self._metadata) + yield self._response + + def __iter__(self) -> Iterator[conversation_model.ConversationModelEvaluation]: + for page in self.pages: + yield from page.conversation_model_evaluations + + def __repr__(self) -> str: + return "{0}<{1!r}>".format(self.__class__.__name__, self._response) + + +class ListConversationModelEvaluationsAsyncPager: + """A pager for iterating through ``list_conversation_model_evaluations`` requests. + + This class thinly wraps an initial + :class:`google.cloud.dialogflow_v2.types.ListConversationModelEvaluationsResponse` object, and + provides an ``__aiter__`` method to iterate through its + ``conversation_model_evaluations`` field. + + If there are more pages, the ``__aiter__`` method will make additional + ``ListConversationModelEvaluations`` requests and continue to iterate + through the ``conversation_model_evaluations`` field on the + corresponding responses. + + All the usual :class:`google.cloud.dialogflow_v2.types.ListConversationModelEvaluationsResponse` + attributes are available on the pager. If multiple requests are made, only + the most recent response is retained, and thus used for attribute lookup. + """ + + def __init__( + self, + method: Callable[ + ..., Awaitable[conversation_model.ListConversationModelEvaluationsResponse] + ], + request: conversation_model.ListConversationModelEvaluationsRequest, + response: conversation_model.ListConversationModelEvaluationsResponse, + *, + metadata: Sequence[Tuple[str, str]] = () + ): + """Instantiates the pager. + + Args: + method (Callable): The method that was originally called, and + which instantiated this pager. + request (google.cloud.dialogflow_v2.types.ListConversationModelEvaluationsRequest): + The initial request object. + response (google.cloud.dialogflow_v2.types.ListConversationModelEvaluationsResponse): + The initial response object. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + """ + self._method = method + self._request = conversation_model.ListConversationModelEvaluationsRequest( + request + ) + self._response = response + self._metadata = metadata + + def __getattr__(self, name: str) -> Any: + return getattr(self._response, name) + + @property + async def pages( + self, + ) -> AsyncIterator[conversation_model.ListConversationModelEvaluationsResponse]: + yield self._response + while self._response.next_page_token: + self._request.page_token = self._response.next_page_token + self._response = await self._method(self._request, metadata=self._metadata) + yield self._response + + def __aiter__( + self, + ) -> AsyncIterator[conversation_model.ConversationModelEvaluation]: + async def async_generator(): + async for page in self.pages: + for response in page.conversation_model_evaluations: + yield response + + return async_generator() + + def __repr__(self) -> str: + return "{0}<{1!r}>".format(self.__class__.__name__, self._response) diff --git a/google/cloud/dialogflow_v2/services/conversation_models/transports/__init__.py b/google/cloud/dialogflow_v2/services/conversation_models/transports/__init__.py new file mode 100644 index 000000000..86586e130 --- /dev/null +++ b/google/cloud/dialogflow_v2/services/conversation_models/transports/__init__.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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 collections import OrderedDict +from typing import Dict, Type + +from .base import ConversationModelsTransport +from .grpc import ConversationModelsGrpcTransport +from .grpc_asyncio import ConversationModelsGrpcAsyncIOTransport + + +# Compile a registry of transports. +_transport_registry = ( + OrderedDict() +) # type: Dict[str, Type[ConversationModelsTransport]] +_transport_registry["grpc"] = ConversationModelsGrpcTransport +_transport_registry["grpc_asyncio"] = ConversationModelsGrpcAsyncIOTransport + +__all__ = ( + "ConversationModelsTransport", + "ConversationModelsGrpcTransport", + "ConversationModelsGrpcAsyncIOTransport", +) diff --git a/google/cloud/dialogflow_v2/services/conversation_models/transports/base.py b/google/cloud/dialogflow_v2/services/conversation_models/transports/base.py new file mode 100644 index 000000000..1ecb27b30 --- /dev/null +++ b/google/cloud/dialogflow_v2/services/conversation_models/transports/base.py @@ -0,0 +1,286 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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 abc +from typing import Awaitable, Callable, Dict, Optional, Sequence, Union +import pkg_resources + +import google.auth # type: ignore +import google.api_core +from google.api_core import exceptions as core_exceptions +from google.api_core import gapic_v1 +from google.api_core import retry as retries +from google.api_core import operations_v1 +from google.auth import credentials as ga_credentials # type: ignore +from google.oauth2 import service_account # type: ignore + +from google.cloud.dialogflow_v2.types import conversation_model +from google.cloud.dialogflow_v2.types import ( + conversation_model as gcd_conversation_model, +) +from google.longrunning import operations_pb2 # type: ignore + +try: + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=pkg_resources.get_distribution( + "google-cloud-dialogflow", + ).version, + ) +except pkg_resources.DistributionNotFound: + DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo() + + +class ConversationModelsTransport(abc.ABC): + """Abstract transport class for ConversationModels.""" + + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/dialogflow", + ) + + DEFAULT_HOST: str = "dialogflow.googleapis.com" + + def __init__( + self, + *, + host: str = DEFAULT_HOST, + credentials: ga_credentials.Credentials = None, + credentials_file: Optional[str] = None, + scopes: Optional[Sequence[str]] = None, + quota_project_id: Optional[str] = None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + always_use_jwt_access: Optional[bool] = False, + **kwargs, + ) -> None: + """Instantiate the transport. + + Args: + host (Optional[str]): + The hostname to connect to. + credentials (Optional[google.auth.credentials.Credentials]): The + authorization credentials to attach to requests. These + credentials identify the application to the service; if none + are specified, the client will attempt to ascertain the + credentials from the environment. + credentials_file (Optional[str]): A file with credentials that can + be loaded with :func:`google.auth.load_credentials_from_file`. + This argument is mutually exclusive with credentials. + scopes (Optional[Sequence[str]]): A list of scopes. + quota_project_id (Optional[str]): An optional project to use for billing + and quota. + client_info (google.api_core.gapic_v1.client_info.ClientInfo): + The client info used to send a user-agent string along with + API requests. If ``None``, then default info will be used. + Generally, you only need to set this if you're developing + your own client library. + always_use_jwt_access (Optional[bool]): Whether self signed JWT should + be used for service account credentials. + """ + # Save the hostname. Default to port 443 (HTTPS) if none is specified. + if ":" not in host: + host += ":443" + self._host = host + + scopes_kwargs = {"scopes": scopes, "default_scopes": self.AUTH_SCOPES} + + # Save the scopes. + self._scopes = scopes + + # If no credentials are provided, then determine the appropriate + # defaults. + if credentials and credentials_file: + raise core_exceptions.DuplicateCredentialArgs( + "'credentials_file' and 'credentials' are mutually exclusive" + ) + + if credentials_file is not None: + credentials, _ = google.auth.load_credentials_from_file( + credentials_file, **scopes_kwargs, quota_project_id=quota_project_id + ) + elif credentials is None: + credentials, _ = google.auth.default( + **scopes_kwargs, quota_project_id=quota_project_id + ) + + # If the credentials are service account credentials, then always try to use self signed JWT. + if ( + always_use_jwt_access + and isinstance(credentials, service_account.Credentials) + and hasattr(service_account.Credentials, "with_always_use_jwt_access") + ): + credentials = credentials.with_always_use_jwt_access(True) + + # Save the credentials. + self._credentials = credentials + + def _prep_wrapped_messages(self, client_info): + # Precompute the wrapped methods. + self._wrapped_methods = { + self.create_conversation_model: gapic_v1.method.wrap_method( + self.create_conversation_model, + default_timeout=None, + client_info=client_info, + ), + self.get_conversation_model: gapic_v1.method.wrap_method( + self.get_conversation_model, + default_timeout=None, + client_info=client_info, + ), + self.list_conversation_models: gapic_v1.method.wrap_method( + self.list_conversation_models, + default_timeout=None, + client_info=client_info, + ), + self.delete_conversation_model: gapic_v1.method.wrap_method( + self.delete_conversation_model, + default_timeout=None, + client_info=client_info, + ), + self.deploy_conversation_model: gapic_v1.method.wrap_method( + self.deploy_conversation_model, + default_timeout=None, + client_info=client_info, + ), + self.undeploy_conversation_model: gapic_v1.method.wrap_method( + self.undeploy_conversation_model, + default_timeout=None, + client_info=client_info, + ), + self.get_conversation_model_evaluation: gapic_v1.method.wrap_method( + self.get_conversation_model_evaluation, + default_timeout=None, + client_info=client_info, + ), + self.list_conversation_model_evaluations: gapic_v1.method.wrap_method( + self.list_conversation_model_evaluations, + default_timeout=None, + client_info=client_info, + ), + self.create_conversation_model_evaluation: gapic_v1.method.wrap_method( + self.create_conversation_model_evaluation, + default_timeout=None, + client_info=client_info, + ), + } + + def close(self): + """Closes resources associated with the transport. + + .. warning:: + Only call this method if the transport is NOT shared + with other clients - this may cause errors in other clients! + """ + raise NotImplementedError() + + @property + def operations_client(self): + """Return the client designed to process long-running operations.""" + raise NotImplementedError() + + @property + def create_conversation_model( + self, + ) -> Callable[ + [gcd_conversation_model.CreateConversationModelRequest], + Union[operations_pb2.Operation, Awaitable[operations_pb2.Operation]], + ]: + raise NotImplementedError() + + @property + def get_conversation_model( + self, + ) -> Callable[ + [conversation_model.GetConversationModelRequest], + Union[ + conversation_model.ConversationModel, + Awaitable[conversation_model.ConversationModel], + ], + ]: + raise NotImplementedError() + + @property + def list_conversation_models( + self, + ) -> Callable[ + [conversation_model.ListConversationModelsRequest], + Union[ + conversation_model.ListConversationModelsResponse, + Awaitable[conversation_model.ListConversationModelsResponse], + ], + ]: + raise NotImplementedError() + + @property + def delete_conversation_model( + self, + ) -> Callable[ + [conversation_model.DeleteConversationModelRequest], + Union[operations_pb2.Operation, Awaitable[operations_pb2.Operation]], + ]: + raise NotImplementedError() + + @property + def deploy_conversation_model( + self, + ) -> Callable[ + [conversation_model.DeployConversationModelRequest], + Union[operations_pb2.Operation, Awaitable[operations_pb2.Operation]], + ]: + raise NotImplementedError() + + @property + def undeploy_conversation_model( + self, + ) -> Callable[ + [conversation_model.UndeployConversationModelRequest], + Union[operations_pb2.Operation, Awaitable[operations_pb2.Operation]], + ]: + raise NotImplementedError() + + @property + def get_conversation_model_evaluation( + self, + ) -> Callable[ + [conversation_model.GetConversationModelEvaluationRequest], + Union[ + conversation_model.ConversationModelEvaluation, + Awaitable[conversation_model.ConversationModelEvaluation], + ], + ]: + raise NotImplementedError() + + @property + def list_conversation_model_evaluations( + self, + ) -> Callable[ + [conversation_model.ListConversationModelEvaluationsRequest], + Union[ + conversation_model.ListConversationModelEvaluationsResponse, + Awaitable[conversation_model.ListConversationModelEvaluationsResponse], + ], + ]: + raise NotImplementedError() + + @property + def create_conversation_model_evaluation( + self, + ) -> Callable[ + [conversation_model.CreateConversationModelEvaluationRequest], + Union[operations_pb2.Operation, Awaitable[operations_pb2.Operation]], + ]: + raise NotImplementedError() + + +__all__ = ("ConversationModelsTransport",) diff --git a/google/cloud/dialogflow_v2/services/conversation_models/transports/grpc.py b/google/cloud/dialogflow_v2/services/conversation_models/transports/grpc.py new file mode 100644 index 000000000..ac2e4fca4 --- /dev/null +++ b/google/cloud/dialogflow_v2/services/conversation_models/transports/grpc.py @@ -0,0 +1,569 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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 warnings +from typing import Callable, Dict, Optional, Sequence, Tuple, Union + +from google.api_core import grpc_helpers +from google.api_core import operations_v1 +from google.api_core import gapic_v1 +import google.auth # type: ignore +from google.auth import credentials as ga_credentials # type: ignore +from google.auth.transport.grpc import SslCredentials # type: ignore + +import grpc # type: ignore + +from google.cloud.dialogflow_v2.types import conversation_model +from google.cloud.dialogflow_v2.types import ( + conversation_model as gcd_conversation_model, +) +from google.longrunning import operations_pb2 # type: ignore +from .base import ConversationModelsTransport, DEFAULT_CLIENT_INFO + + +class ConversationModelsGrpcTransport(ConversationModelsTransport): + """gRPC backend transport for ConversationModels. + + Manages a collection of models for human agent assistant. + + This class defines the same methods as the primary client, so the + primary client can load the underlying transport implementation + and call it. + + It sends protocol buffers over the wire using gRPC (which is built on + top of HTTP/2); the ``grpcio`` package must be installed. + """ + + _stubs: Dict[str, Callable] + + def __init__( + self, + *, + host: str = "dialogflow.googleapis.com", + credentials: ga_credentials.Credentials = None, + credentials_file: str = None, + scopes: Sequence[str] = None, + channel: grpc.Channel = None, + api_mtls_endpoint: str = None, + client_cert_source: Callable[[], Tuple[bytes, bytes]] = None, + ssl_channel_credentials: grpc.ChannelCredentials = None, + client_cert_source_for_mtls: Callable[[], Tuple[bytes, bytes]] = None, + quota_project_id: Optional[str] = None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + always_use_jwt_access: Optional[bool] = False, + ) -> None: + """Instantiate the transport. + + Args: + host (Optional[str]): + The hostname to connect to. + credentials (Optional[google.auth.credentials.Credentials]): The + authorization credentials to attach to requests. These + credentials identify the application to the service; if none + are specified, the client will attempt to ascertain the + credentials from the environment. + This argument is ignored if ``channel`` is provided. + credentials_file (Optional[str]): A file with credentials that can + be loaded with :func:`google.auth.load_credentials_from_file`. + This argument is ignored if ``channel`` is provided. + scopes (Optional(Sequence[str])): A list of scopes. This argument is + ignored if ``channel`` is provided. + channel (Optional[grpc.Channel]): A ``Channel`` instance through + which to make calls. + api_mtls_endpoint (Optional[str]): Deprecated. The mutual TLS endpoint. + If provided, it overrides the ``host`` argument and tries to create + a mutual TLS channel with client SSL credentials from + ``client_cert_source`` or application default SSL credentials. + client_cert_source (Optional[Callable[[], Tuple[bytes, bytes]]]): + Deprecated. A callback to provide client SSL certificate bytes and + private key bytes, both in PEM format. It is ignored if + ``api_mtls_endpoint`` is None. + ssl_channel_credentials (grpc.ChannelCredentials): SSL credentials + for the grpc channel. It is ignored if ``channel`` is provided. + client_cert_source_for_mtls (Optional[Callable[[], Tuple[bytes, bytes]]]): + A callback to provide client certificate bytes and private key bytes, + both in PEM format. It is used to configure a mutual TLS channel. It is + ignored if ``channel`` or ``ssl_channel_credentials`` is provided. + quota_project_id (Optional[str]): An optional project to use for billing + and quota. + client_info (google.api_core.gapic_v1.client_info.ClientInfo): + The client info used to send a user-agent string along with + API requests. If ``None``, then default info will be used. + Generally, you only need to set this if you're developing + your own client library. + always_use_jwt_access (Optional[bool]): Whether self signed JWT should + be used for service account credentials. + + Raises: + google.auth.exceptions.MutualTLSChannelError: If mutual TLS transport + creation failed for any reason. + google.api_core.exceptions.DuplicateCredentialArgs: If both ``credentials`` + and ``credentials_file`` are passed. + """ + self._grpc_channel = None + self._ssl_channel_credentials = ssl_channel_credentials + self._stubs: Dict[str, Callable] = {} + self._operations_client: Optional[operations_v1.OperationsClient] = None + + if api_mtls_endpoint: + warnings.warn("api_mtls_endpoint is deprecated", DeprecationWarning) + if client_cert_source: + warnings.warn("client_cert_source is deprecated", DeprecationWarning) + + if channel: + # Ignore credentials if a channel was passed. + credentials = False + # If a channel was explicitly provided, set it. + self._grpc_channel = channel + self._ssl_channel_credentials = None + + else: + if api_mtls_endpoint: + host = api_mtls_endpoint + + # Create SSL credentials with client_cert_source or application + # default SSL credentials. + if client_cert_source: + cert, key = client_cert_source() + self._ssl_channel_credentials = grpc.ssl_channel_credentials( + certificate_chain=cert, private_key=key + ) + else: + self._ssl_channel_credentials = SslCredentials().ssl_credentials + + else: + if client_cert_source_for_mtls and not ssl_channel_credentials: + cert, key = client_cert_source_for_mtls() + self._ssl_channel_credentials = grpc.ssl_channel_credentials( + certificate_chain=cert, private_key=key + ) + + # The base transport sets the host, credentials and scopes + super().__init__( + host=host, + credentials=credentials, + credentials_file=credentials_file, + scopes=scopes, + quota_project_id=quota_project_id, + client_info=client_info, + always_use_jwt_access=always_use_jwt_access, + ) + + if not self._grpc_channel: + self._grpc_channel = type(self).create_channel( + self._host, + # use the credentials which are saved + credentials=self._credentials, + # Set ``credentials_file`` to ``None`` here as + # the credentials that we saved earlier should be used. + credentials_file=None, + scopes=self._scopes, + ssl_credentials=self._ssl_channel_credentials, + quota_project_id=quota_project_id, + options=[ + ("grpc.max_send_message_length", -1), + ("grpc.max_receive_message_length", -1), + ], + ) + + # Wrap messages. This must be done after self._grpc_channel exists + self._prep_wrapped_messages(client_info) + + @classmethod + def create_channel( + cls, + host: str = "dialogflow.googleapis.com", + credentials: ga_credentials.Credentials = None, + credentials_file: str = None, + scopes: Optional[Sequence[str]] = None, + quota_project_id: Optional[str] = None, + **kwargs, + ) -> grpc.Channel: + """Create and return a gRPC channel object. + Args: + host (Optional[str]): The host for the channel to use. + credentials (Optional[~.Credentials]): The + authorization credentials to attach to requests. These + credentials identify this application to the service. If + none are specified, the client will attempt to ascertain + the credentials from the environment. + credentials_file (Optional[str]): A file with credentials that can + be loaded with :func:`google.auth.load_credentials_from_file`. + This argument is mutually exclusive with credentials. + scopes (Optional[Sequence[str]]): A optional list of scopes needed for this + service. These are only used when credentials are not specified and + are passed to :func:`google.auth.default`. + quota_project_id (Optional[str]): An optional project to use for billing + and quota. + kwargs (Optional[dict]): Keyword arguments, which are passed to the + channel creation. + Returns: + grpc.Channel: A gRPC channel object. + + Raises: + google.api_core.exceptions.DuplicateCredentialArgs: If both ``credentials`` + and ``credentials_file`` are passed. + """ + + return grpc_helpers.create_channel( + host, + credentials=credentials, + credentials_file=credentials_file, + quota_project_id=quota_project_id, + default_scopes=cls.AUTH_SCOPES, + scopes=scopes, + default_host=cls.DEFAULT_HOST, + **kwargs, + ) + + @property + def grpc_channel(self) -> grpc.Channel: + """Return the channel designed to connect to this service. + """ + return self._grpc_channel + + @property + def operations_client(self) -> operations_v1.OperationsClient: + """Create the client designed to process long-running operations. + + This property caches on the instance; repeated calls return the same + client. + """ + # Quick check: Only create a new client if we do not already have one. + if self._operations_client is None: + self._operations_client = operations_v1.OperationsClient(self.grpc_channel) + + # Return the client from cache. + return self._operations_client + + @property + def create_conversation_model( + self, + ) -> Callable[ + [gcd_conversation_model.CreateConversationModelRequest], + operations_pb2.Operation, + ]: + r"""Return a callable for the create conversation model method over gRPC. + + Creates a model. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [CreateConversationModelOperationMetadata][google.cloud.dialogflow.v2.CreateConversationModelOperationMetadata] + - ``response``: + [ConversationModel][google.cloud.dialogflow.v2.ConversationModel] + + Returns: + Callable[[~.CreateConversationModelRequest], + ~.Operation]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "create_conversation_model" not in self._stubs: + self._stubs["create_conversation_model"] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationModels/CreateConversationModel", + request_serializer=gcd_conversation_model.CreateConversationModelRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["create_conversation_model"] + + @property + def get_conversation_model( + self, + ) -> Callable[ + [conversation_model.GetConversationModelRequest], + conversation_model.ConversationModel, + ]: + r"""Return a callable for the get conversation model method over gRPC. + + Gets conversation model. + + Returns: + Callable[[~.GetConversationModelRequest], + ~.ConversationModel]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "get_conversation_model" not in self._stubs: + self._stubs["get_conversation_model"] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationModels/GetConversationModel", + request_serializer=conversation_model.GetConversationModelRequest.serialize, + response_deserializer=conversation_model.ConversationModel.deserialize, + ) + return self._stubs["get_conversation_model"] + + @property + def list_conversation_models( + self, + ) -> Callable[ + [conversation_model.ListConversationModelsRequest], + conversation_model.ListConversationModelsResponse, + ]: + r"""Return a callable for the list conversation models method over gRPC. + + Lists conversation models. + + Returns: + Callable[[~.ListConversationModelsRequest], + ~.ListConversationModelsResponse]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "list_conversation_models" not in self._stubs: + self._stubs["list_conversation_models"] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationModels/ListConversationModels", + request_serializer=conversation_model.ListConversationModelsRequest.serialize, + response_deserializer=conversation_model.ListConversationModelsResponse.deserialize, + ) + return self._stubs["list_conversation_models"] + + @property + def delete_conversation_model( + self, + ) -> Callable[ + [conversation_model.DeleteConversationModelRequest], operations_pb2.Operation + ]: + r"""Return a callable for the delete conversation model method over gRPC. + + Deletes a model. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [DeleteConversationModelOperationMetadata][google.cloud.dialogflow.v2.DeleteConversationModelOperationMetadata] + - ``response``: An `Empty + message `__ + + Returns: + Callable[[~.DeleteConversationModelRequest], + ~.Operation]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "delete_conversation_model" not in self._stubs: + self._stubs["delete_conversation_model"] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationModels/DeleteConversationModel", + request_serializer=conversation_model.DeleteConversationModelRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["delete_conversation_model"] + + @property + def deploy_conversation_model( + self, + ) -> Callable[ + [conversation_model.DeployConversationModelRequest], operations_pb2.Operation + ]: + r"""Return a callable for the deploy conversation model method over gRPC. + + Deploys a model. If a model is already deployed, deploying it + has no effect. A model can only serve prediction requests after + it gets deployed. For article suggestion, custom model will not + be used unless it is deployed. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [DeployConversationModelOperationMetadata][google.cloud.dialogflow.v2.DeployConversationModelOperationMetadata] + - ``response``: An `Empty + message `__ + + Returns: + Callable[[~.DeployConversationModelRequest], + ~.Operation]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "deploy_conversation_model" not in self._stubs: + self._stubs["deploy_conversation_model"] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationModels/DeployConversationModel", + request_serializer=conversation_model.DeployConversationModelRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["deploy_conversation_model"] + + @property + def undeploy_conversation_model( + self, + ) -> Callable[ + [conversation_model.UndeployConversationModelRequest], operations_pb2.Operation + ]: + r"""Return a callable for the undeploy conversation model method over gRPC. + + Undeploys a model. If the model is not deployed this method has + no effect. If the model is currently being used: + + - For article suggestion, article suggestion will fallback to + the default model if model is undeployed. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [UndeployConversationModelOperationMetadata][google.cloud.dialogflow.v2.UndeployConversationModelOperationMetadata] + - ``response``: An `Empty + message `__ + + Returns: + Callable[[~.UndeployConversationModelRequest], + ~.Operation]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "undeploy_conversation_model" not in self._stubs: + self._stubs["undeploy_conversation_model"] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationModels/UndeployConversationModel", + request_serializer=conversation_model.UndeployConversationModelRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["undeploy_conversation_model"] + + @property + def get_conversation_model_evaluation( + self, + ) -> Callable[ + [conversation_model.GetConversationModelEvaluationRequest], + conversation_model.ConversationModelEvaluation, + ]: + r"""Return a callable for the get conversation model + evaluation method over gRPC. + + Gets an evaluation of conversation model. + + Returns: + Callable[[~.GetConversationModelEvaluationRequest], + ~.ConversationModelEvaluation]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "get_conversation_model_evaluation" not in self._stubs: + self._stubs[ + "get_conversation_model_evaluation" + ] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationModels/GetConversationModelEvaluation", + request_serializer=conversation_model.GetConversationModelEvaluationRequest.serialize, + response_deserializer=conversation_model.ConversationModelEvaluation.deserialize, + ) + return self._stubs["get_conversation_model_evaluation"] + + @property + def list_conversation_model_evaluations( + self, + ) -> Callable[ + [conversation_model.ListConversationModelEvaluationsRequest], + conversation_model.ListConversationModelEvaluationsResponse, + ]: + r"""Return a callable for the list conversation model + evaluations method over gRPC. + + Lists evaluations of a conversation model. + + Returns: + Callable[[~.ListConversationModelEvaluationsRequest], + ~.ListConversationModelEvaluationsResponse]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "list_conversation_model_evaluations" not in self._stubs: + self._stubs[ + "list_conversation_model_evaluations" + ] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationModels/ListConversationModelEvaluations", + request_serializer=conversation_model.ListConversationModelEvaluationsRequest.serialize, + response_deserializer=conversation_model.ListConversationModelEvaluationsResponse.deserialize, + ) + return self._stubs["list_conversation_model_evaluations"] + + @property + def create_conversation_model_evaluation( + self, + ) -> Callable[ + [conversation_model.CreateConversationModelEvaluationRequest], + operations_pb2.Operation, + ]: + r"""Return a callable for the create conversation model + evaluation method over gRPC. + + Creates evaluation of a conversation model. + + Returns: + Callable[[~.CreateConversationModelEvaluationRequest], + ~.Operation]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "create_conversation_model_evaluation" not in self._stubs: + self._stubs[ + "create_conversation_model_evaluation" + ] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationModels/CreateConversationModelEvaluation", + request_serializer=conversation_model.CreateConversationModelEvaluationRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["create_conversation_model_evaluation"] + + def close(self): + self.grpc_channel.close() + + +__all__ = ("ConversationModelsGrpcTransport",) diff --git a/google/cloud/dialogflow_v2/services/conversation_models/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2/services/conversation_models/transports/grpc_asyncio.py new file mode 100644 index 000000000..28c8ddc8c --- /dev/null +++ b/google/cloud/dialogflow_v2/services/conversation_models/transports/grpc_asyncio.py @@ -0,0 +1,576 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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 warnings +from typing import Awaitable, Callable, Dict, Optional, Sequence, Tuple, Union + +from google.api_core import gapic_v1 +from google.api_core import grpc_helpers_async +from google.api_core import operations_v1 +from google.auth import credentials as ga_credentials # type: ignore +from google.auth.transport.grpc import SslCredentials # type: ignore + +import grpc # type: ignore +from grpc.experimental import aio # type: ignore + +from google.cloud.dialogflow_v2.types import conversation_model +from google.cloud.dialogflow_v2.types import ( + conversation_model as gcd_conversation_model, +) +from google.longrunning import operations_pb2 # type: ignore +from .base import ConversationModelsTransport, DEFAULT_CLIENT_INFO +from .grpc import ConversationModelsGrpcTransport + + +class ConversationModelsGrpcAsyncIOTransport(ConversationModelsTransport): + """gRPC AsyncIO backend transport for ConversationModels. + + Manages a collection of models for human agent assistant. + + This class defines the same methods as the primary client, so the + primary client can load the underlying transport implementation + and call it. + + It sends protocol buffers over the wire using gRPC (which is built on + top of HTTP/2); the ``grpcio`` package must be installed. + """ + + _grpc_channel: aio.Channel + _stubs: Dict[str, Callable] = {} + + @classmethod + def create_channel( + cls, + host: str = "dialogflow.googleapis.com", + credentials: ga_credentials.Credentials = None, + credentials_file: Optional[str] = None, + scopes: Optional[Sequence[str]] = None, + quota_project_id: Optional[str] = None, + **kwargs, + ) -> aio.Channel: + """Create and return a gRPC AsyncIO channel object. + Args: + host (Optional[str]): The host for the channel to use. + credentials (Optional[~.Credentials]): The + authorization credentials to attach to requests. These + credentials identify this application to the service. If + none are specified, the client will attempt to ascertain + the credentials from the environment. + credentials_file (Optional[str]): A file with credentials that can + be loaded with :func:`google.auth.load_credentials_from_file`. + This argument is ignored if ``channel`` is provided. + scopes (Optional[Sequence[str]]): A optional list of scopes needed for this + service. These are only used when credentials are not specified and + are passed to :func:`google.auth.default`. + quota_project_id (Optional[str]): An optional project to use for billing + and quota. + kwargs (Optional[dict]): Keyword arguments, which are passed to the + channel creation. + Returns: + aio.Channel: A gRPC AsyncIO channel object. + """ + + return grpc_helpers_async.create_channel( + host, + credentials=credentials, + credentials_file=credentials_file, + quota_project_id=quota_project_id, + default_scopes=cls.AUTH_SCOPES, + scopes=scopes, + default_host=cls.DEFAULT_HOST, + **kwargs, + ) + + def __init__( + self, + *, + host: str = "dialogflow.googleapis.com", + credentials: ga_credentials.Credentials = None, + credentials_file: Optional[str] = None, + scopes: Optional[Sequence[str]] = None, + channel: aio.Channel = None, + api_mtls_endpoint: str = None, + client_cert_source: Callable[[], Tuple[bytes, bytes]] = None, + ssl_channel_credentials: grpc.ChannelCredentials = None, + client_cert_source_for_mtls: Callable[[], Tuple[bytes, bytes]] = None, + quota_project_id=None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + always_use_jwt_access: Optional[bool] = False, + ) -> None: + """Instantiate the transport. + + Args: + host (Optional[str]): + The hostname to connect to. + credentials (Optional[google.auth.credentials.Credentials]): The + authorization credentials to attach to requests. These + credentials identify the application to the service; if none + are specified, the client will attempt to ascertain the + credentials from the environment. + This argument is ignored if ``channel`` is provided. + credentials_file (Optional[str]): A file with credentials that can + be loaded with :func:`google.auth.load_credentials_from_file`. + This argument is ignored if ``channel`` is provided. + scopes (Optional[Sequence[str]]): A optional list of scopes needed for this + service. These are only used when credentials are not specified and + are passed to :func:`google.auth.default`. + channel (Optional[aio.Channel]): A ``Channel`` instance through + which to make calls. + api_mtls_endpoint (Optional[str]): Deprecated. The mutual TLS endpoint. + If provided, it overrides the ``host`` argument and tries to create + a mutual TLS channel with client SSL credentials from + ``client_cert_source`` or application default SSL credentials. + client_cert_source (Optional[Callable[[], Tuple[bytes, bytes]]]): + Deprecated. A callback to provide client SSL certificate bytes and + private key bytes, both in PEM format. It is ignored if + ``api_mtls_endpoint`` is None. + ssl_channel_credentials (grpc.ChannelCredentials): SSL credentials + for the grpc channel. It is ignored if ``channel`` is provided. + client_cert_source_for_mtls (Optional[Callable[[], Tuple[bytes, bytes]]]): + A callback to provide client certificate bytes and private key bytes, + both in PEM format. It is used to configure a mutual TLS channel. It is + ignored if ``channel`` or ``ssl_channel_credentials`` is provided. + quota_project_id (Optional[str]): An optional project to use for billing + and quota. + client_info (google.api_core.gapic_v1.client_info.ClientInfo): + The client info used to send a user-agent string along with + API requests. If ``None``, then default info will be used. + Generally, you only need to set this if you're developing + your own client library. + always_use_jwt_access (Optional[bool]): Whether self signed JWT should + be used for service account credentials. + + Raises: + google.auth.exceptions.MutualTlsChannelError: If mutual TLS transport + creation failed for any reason. + google.api_core.exceptions.DuplicateCredentialArgs: If both ``credentials`` + and ``credentials_file`` are passed. + """ + self._grpc_channel = None + self._ssl_channel_credentials = ssl_channel_credentials + self._stubs: Dict[str, Callable] = {} + self._operations_client: Optional[operations_v1.OperationsAsyncClient] = None + + if api_mtls_endpoint: + warnings.warn("api_mtls_endpoint is deprecated", DeprecationWarning) + if client_cert_source: + warnings.warn("client_cert_source is deprecated", DeprecationWarning) + + if channel: + # Ignore credentials if a channel was passed. + credentials = False + # If a channel was explicitly provided, set it. + self._grpc_channel = channel + self._ssl_channel_credentials = None + else: + if api_mtls_endpoint: + host = api_mtls_endpoint + + # Create SSL credentials with client_cert_source or application + # default SSL credentials. + if client_cert_source: + cert, key = client_cert_source() + self._ssl_channel_credentials = grpc.ssl_channel_credentials( + certificate_chain=cert, private_key=key + ) + else: + self._ssl_channel_credentials = SslCredentials().ssl_credentials + + else: + if client_cert_source_for_mtls and not ssl_channel_credentials: + cert, key = client_cert_source_for_mtls() + self._ssl_channel_credentials = grpc.ssl_channel_credentials( + certificate_chain=cert, private_key=key + ) + + # The base transport sets the host, credentials and scopes + super().__init__( + host=host, + credentials=credentials, + credentials_file=credentials_file, + scopes=scopes, + quota_project_id=quota_project_id, + client_info=client_info, + always_use_jwt_access=always_use_jwt_access, + ) + + if not self._grpc_channel: + self._grpc_channel = type(self).create_channel( + self._host, + # use the credentials which are saved + credentials=self._credentials, + # Set ``credentials_file`` to ``None`` here as + # the credentials that we saved earlier should be used. + credentials_file=None, + scopes=self._scopes, + ssl_credentials=self._ssl_channel_credentials, + quota_project_id=quota_project_id, + options=[ + ("grpc.max_send_message_length", -1), + ("grpc.max_receive_message_length", -1), + ], + ) + + # Wrap messages. This must be done after self._grpc_channel exists + self._prep_wrapped_messages(client_info) + + @property + def grpc_channel(self) -> aio.Channel: + """Create the channel designed to connect to this service. + + This property caches on the instance; repeated calls return + the same channel. + """ + # Return the channel from cache. + return self._grpc_channel + + @property + def operations_client(self) -> operations_v1.OperationsAsyncClient: + """Create the client designed to process long-running operations. + + This property caches on the instance; repeated calls return the same + client. + """ + # Quick check: Only create a new client if we do not already have one. + if self._operations_client is None: + self._operations_client = operations_v1.OperationsAsyncClient( + self.grpc_channel + ) + + # Return the client from cache. + return self._operations_client + + @property + def create_conversation_model( + self, + ) -> Callable[ + [gcd_conversation_model.CreateConversationModelRequest], + Awaitable[operations_pb2.Operation], + ]: + r"""Return a callable for the create conversation model method over gRPC. + + Creates a model. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [CreateConversationModelOperationMetadata][google.cloud.dialogflow.v2.CreateConversationModelOperationMetadata] + - ``response``: + [ConversationModel][google.cloud.dialogflow.v2.ConversationModel] + + Returns: + Callable[[~.CreateConversationModelRequest], + Awaitable[~.Operation]]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "create_conversation_model" not in self._stubs: + self._stubs["create_conversation_model"] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationModels/CreateConversationModel", + request_serializer=gcd_conversation_model.CreateConversationModelRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["create_conversation_model"] + + @property + def get_conversation_model( + self, + ) -> Callable[ + [conversation_model.GetConversationModelRequest], + Awaitable[conversation_model.ConversationModel], + ]: + r"""Return a callable for the get conversation model method over gRPC. + + Gets conversation model. + + Returns: + Callable[[~.GetConversationModelRequest], + Awaitable[~.ConversationModel]]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "get_conversation_model" not in self._stubs: + self._stubs["get_conversation_model"] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationModels/GetConversationModel", + request_serializer=conversation_model.GetConversationModelRequest.serialize, + response_deserializer=conversation_model.ConversationModel.deserialize, + ) + return self._stubs["get_conversation_model"] + + @property + def list_conversation_models( + self, + ) -> Callable[ + [conversation_model.ListConversationModelsRequest], + Awaitable[conversation_model.ListConversationModelsResponse], + ]: + r"""Return a callable for the list conversation models method over gRPC. + + Lists conversation models. + + Returns: + Callable[[~.ListConversationModelsRequest], + Awaitable[~.ListConversationModelsResponse]]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "list_conversation_models" not in self._stubs: + self._stubs["list_conversation_models"] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationModels/ListConversationModels", + request_serializer=conversation_model.ListConversationModelsRequest.serialize, + response_deserializer=conversation_model.ListConversationModelsResponse.deserialize, + ) + return self._stubs["list_conversation_models"] + + @property + def delete_conversation_model( + self, + ) -> Callable[ + [conversation_model.DeleteConversationModelRequest], + Awaitable[operations_pb2.Operation], + ]: + r"""Return a callable for the delete conversation model method over gRPC. + + Deletes a model. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [DeleteConversationModelOperationMetadata][google.cloud.dialogflow.v2.DeleteConversationModelOperationMetadata] + - ``response``: An `Empty + message `__ + + Returns: + Callable[[~.DeleteConversationModelRequest], + Awaitable[~.Operation]]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "delete_conversation_model" not in self._stubs: + self._stubs["delete_conversation_model"] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationModels/DeleteConversationModel", + request_serializer=conversation_model.DeleteConversationModelRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["delete_conversation_model"] + + @property + def deploy_conversation_model( + self, + ) -> Callable[ + [conversation_model.DeployConversationModelRequest], + Awaitable[operations_pb2.Operation], + ]: + r"""Return a callable for the deploy conversation model method over gRPC. + + Deploys a model. If a model is already deployed, deploying it + has no effect. A model can only serve prediction requests after + it gets deployed. For article suggestion, custom model will not + be used unless it is deployed. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [DeployConversationModelOperationMetadata][google.cloud.dialogflow.v2.DeployConversationModelOperationMetadata] + - ``response``: An `Empty + message `__ + + Returns: + Callable[[~.DeployConversationModelRequest], + Awaitable[~.Operation]]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "deploy_conversation_model" not in self._stubs: + self._stubs["deploy_conversation_model"] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationModels/DeployConversationModel", + request_serializer=conversation_model.DeployConversationModelRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["deploy_conversation_model"] + + @property + def undeploy_conversation_model( + self, + ) -> Callable[ + [conversation_model.UndeployConversationModelRequest], + Awaitable[operations_pb2.Operation], + ]: + r"""Return a callable for the undeploy conversation model method over gRPC. + + Undeploys a model. If the model is not deployed this method has + no effect. If the model is currently being used: + + - For article suggestion, article suggestion will fallback to + the default model if model is undeployed. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [UndeployConversationModelOperationMetadata][google.cloud.dialogflow.v2.UndeployConversationModelOperationMetadata] + - ``response``: An `Empty + message `__ + + Returns: + Callable[[~.UndeployConversationModelRequest], + Awaitable[~.Operation]]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "undeploy_conversation_model" not in self._stubs: + self._stubs["undeploy_conversation_model"] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationModels/UndeployConversationModel", + request_serializer=conversation_model.UndeployConversationModelRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["undeploy_conversation_model"] + + @property + def get_conversation_model_evaluation( + self, + ) -> Callable[ + [conversation_model.GetConversationModelEvaluationRequest], + Awaitable[conversation_model.ConversationModelEvaluation], + ]: + r"""Return a callable for the get conversation model + evaluation method over gRPC. + + Gets an evaluation of conversation model. + + Returns: + Callable[[~.GetConversationModelEvaluationRequest], + Awaitable[~.ConversationModelEvaluation]]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "get_conversation_model_evaluation" not in self._stubs: + self._stubs[ + "get_conversation_model_evaluation" + ] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationModels/GetConversationModelEvaluation", + request_serializer=conversation_model.GetConversationModelEvaluationRequest.serialize, + response_deserializer=conversation_model.ConversationModelEvaluation.deserialize, + ) + return self._stubs["get_conversation_model_evaluation"] + + @property + def list_conversation_model_evaluations( + self, + ) -> Callable[ + [conversation_model.ListConversationModelEvaluationsRequest], + Awaitable[conversation_model.ListConversationModelEvaluationsResponse], + ]: + r"""Return a callable for the list conversation model + evaluations method over gRPC. + + Lists evaluations of a conversation model. + + Returns: + Callable[[~.ListConversationModelEvaluationsRequest], + Awaitable[~.ListConversationModelEvaluationsResponse]]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "list_conversation_model_evaluations" not in self._stubs: + self._stubs[ + "list_conversation_model_evaluations" + ] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationModels/ListConversationModelEvaluations", + request_serializer=conversation_model.ListConversationModelEvaluationsRequest.serialize, + response_deserializer=conversation_model.ListConversationModelEvaluationsResponse.deserialize, + ) + return self._stubs["list_conversation_model_evaluations"] + + @property + def create_conversation_model_evaluation( + self, + ) -> Callable[ + [conversation_model.CreateConversationModelEvaluationRequest], + Awaitable[operations_pb2.Operation], + ]: + r"""Return a callable for the create conversation model + evaluation method over gRPC. + + Creates evaluation of a conversation model. + + Returns: + Callable[[~.CreateConversationModelEvaluationRequest], + Awaitable[~.Operation]]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "create_conversation_model_evaluation" not in self._stubs: + self._stubs[ + "create_conversation_model_evaluation" + ] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationModels/CreateConversationModelEvaluation", + request_serializer=conversation_model.CreateConversationModelEvaluationRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["create_conversation_model_evaluation"] + + def close(self): + return self.grpc_channel.close() + + +__all__ = ("ConversationModelsGrpcAsyncIOTransport",) diff --git a/google/cloud/dialogflow_v2/services/conversation_profiles/__init__.py b/google/cloud/dialogflow_v2/services/conversation_profiles/__init__.py index c0cb1cd03..ba1e4487d 100644 --- a/google/cloud/dialogflow_v2/services/conversation_profiles/__init__.py +++ b/google/cloud/dialogflow_v2/services/conversation_profiles/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/conversation_profiles/async_client.py b/google/cloud/dialogflow_v2/services/conversation_profiles/async_client.py index 55b3c3c18..b583a5d7f 100644 --- a/google/cloud/dialogflow_v2/services/conversation_profiles/async_client.py +++ b/google/cloud/dialogflow_v2/services/conversation_profiles/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -31,6 +31,8 @@ except AttributeError: # pragma: NO COVER OptionalRetry = Union[retries.Retry, object] # type: ignore +from google.api_core import operation # type: ignore +from google.api_core import operation_async # type: ignore from google.cloud.dialogflow_v2.services.conversation_profiles import pagers from google.cloud.dialogflow_v2.types import audio_config from google.cloud.dialogflow_v2.types import conversation_profile @@ -250,7 +252,7 @@ async def list_conversation_profiles( specified project. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -351,7 +353,7 @@ async def get_conversation_profile( ) -> conversation_profile.ConversationProfile: r"""Retrieves the specified conversation profile. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -452,7 +454,7 @@ async def create_conversation_profile( API. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -566,7 +568,7 @@ async def update_conversation_profile( API. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -672,7 +674,7 @@ async def delete_conversation_profile( ) -> None: r"""Deletes the specified conversation profile. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -744,6 +746,263 @@ def sample_delete_conversation_profile(): request, retry=retry, timeout=timeout, metadata=metadata, ) + async def set_suggestion_feature_config( + self, + request: Union[ + gcd_conversation_profile.SetSuggestionFeatureConfigRequest, dict + ] = None, + *, + conversation_profile: str = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> operation_async.AsyncOperation: + r"""Adds or updates a suggestion feature in a conversation profile. + If the conversation profile contains the type of suggestion + feature for the participant role, it will update it. Otherwise + it will insert the suggestion feature. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [SetSuggestionFeatureConfigOperationMetadata][google.cloud.dialogflow.v2.SetSuggestionFeatureConfigOperationMetadata] + - ``response``: + [ConversationProfile][google.cloud.dialogflow.v2.ConversationProfile] + + If a long running operation to add or update suggestion feature + config for the same conversation profile, participant role and + suggestion feature type exists, please cancel the existing long + running operation before sending such request, otherwise the + request will be rejected. + + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_set_suggestion_feature_config(): + # Create a client + client = dialogflow_v2.ConversationProfilesClient() + + # Initialize request argument(s) + request = dialogflow_v2.SetSuggestionFeatureConfigRequest( + conversation_profile="conversation_profile_value", + participant_role="END_USER", + ) + + # Make the request + operation = client.set_suggestion_feature_config(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.SetSuggestionFeatureConfigRequest, dict]): + The request object. The request message for + [ConversationProfiles.SetSuggestionFeature][]. + conversation_profile (:class:`str`): + Required. The Conversation Profile to add or update the + suggestion feature config. Format: + ``projects//locations//conversationProfiles/``. + + This corresponds to the ``conversation_profile`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.api_core.operation_async.AsyncOperation: + An object representing a long-running operation. + + The result type for the operation will be + :class:`google.cloud.dialogflow_v2.types.ConversationProfile` + Defines the services to connect to incoming Dialogflow + conversations. + + """ + # Create or coerce a protobuf request object. + # Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + has_flattened_params = any([conversation_profile]) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + request = gcd_conversation_profile.SetSuggestionFeatureConfigRequest(request) + + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if conversation_profile is not None: + request.conversation_profile = conversation_profile + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = gapic_v1.method_async.wrap_method( + self._client._transport.set_suggestion_feature_config, + default_timeout=None, + client_info=DEFAULT_CLIENT_INFO, + ) + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + (("conversation_profile", request.conversation_profile),) + ), + ) + + # Send the request. + response = await rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # Wrap the response in an operation future. + response = operation_async.from_gapic( + response, + self._client._transport.operations_client, + gcd_conversation_profile.ConversationProfile, + metadata_type=gcd_conversation_profile.SetSuggestionFeatureConfigOperationMetadata, + ) + + # Done; return the response. + return response + + async def clear_suggestion_feature_config( + self, + request: Union[ + gcd_conversation_profile.ClearSuggestionFeatureConfigRequest, dict + ] = None, + *, + conversation_profile: str = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> operation_async.AsyncOperation: + r"""Clears a suggestion feature from a conversation profile for the + given participant role. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [ClearSuggestionFeatureConfigOperationMetadata][google.cloud.dialogflow.v2.ClearSuggestionFeatureConfigOperationMetadata] + - ``response``: + [ConversationProfile][google.cloud.dialogflow.v2.ConversationProfile] + + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_clear_suggestion_feature_config(): + # Create a client + client = dialogflow_v2.ConversationProfilesClient() + + # Initialize request argument(s) + request = dialogflow_v2.ClearSuggestionFeatureConfigRequest( + conversation_profile="conversation_profile_value", + participant_role="END_USER", + suggestion_feature_type="SMART_REPLY", + ) + + # Make the request + operation = client.clear_suggestion_feature_config(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.ClearSuggestionFeatureConfigRequest, dict]): + The request object. The request message for + [ConversationProfiles.ClearFeature][]. + conversation_profile (:class:`str`): + Required. The Conversation Profile to add or update the + suggestion feature config. Format: + ``projects//locations//conversationProfiles/``. + + This corresponds to the ``conversation_profile`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.api_core.operation_async.AsyncOperation: + An object representing a long-running operation. + + The result type for the operation will be + :class:`google.cloud.dialogflow_v2.types.ConversationProfile` + Defines the services to connect to incoming Dialogflow + conversations. + + """ + # Create or coerce a protobuf request object. + # Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + has_flattened_params = any([conversation_profile]) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + request = gcd_conversation_profile.ClearSuggestionFeatureConfigRequest(request) + + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if conversation_profile is not None: + request.conversation_profile = conversation_profile + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = gapic_v1.method_async.wrap_method( + self._client._transport.clear_suggestion_feature_config, + default_timeout=None, + client_info=DEFAULT_CLIENT_INFO, + ) + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + (("conversation_profile", request.conversation_profile),) + ), + ) + + # Send the request. + response = await rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # Wrap the response in an operation future. + response = operation_async.from_gapic( + response, + self._client._transport.operations_client, + gcd_conversation_profile.ConversationProfile, + metadata_type=gcd_conversation_profile.ClearSuggestionFeatureConfigOperationMetadata, + ) + + # Done; return the response. + return response + async def __aenter__(self): return self diff --git a/google/cloud/dialogflow_v2/services/conversation_profiles/client.py b/google/cloud/dialogflow_v2/services/conversation_profiles/client.py index 68d7201e0..2c1719f54 100644 --- a/google/cloud/dialogflow_v2/services/conversation_profiles/client.py +++ b/google/cloud/dialogflow_v2/services/conversation_profiles/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -34,6 +34,8 @@ except AttributeError: # pragma: NO COVER OptionalRetry = Union[retries.Retry, object] # type: ignore +from google.api_core import operation # type: ignore +from google.api_core import operation_async # type: ignore from google.cloud.dialogflow_v2.services.conversation_profiles import pagers from google.cloud.dialogflow_v2.types import audio_config from google.cloud.dialogflow_v2.types import conversation_profile @@ -502,8 +504,7 @@ def list_conversation_profiles( specified project. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -608,8 +609,7 @@ def get_conversation_profile( ) -> conversation_profile.ConversationProfile: r"""Retrieves the specified conversation profile. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -710,8 +710,7 @@ def create_conversation_profile( API. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -829,8 +828,7 @@ def update_conversation_profile( API. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -940,8 +938,7 @@ def delete_conversation_profile( ) -> None: r"""Deletes the specified conversation profile. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -1017,6 +1014,275 @@ def sample_delete_conversation_profile(): request, retry=retry, timeout=timeout, metadata=metadata, ) + def set_suggestion_feature_config( + self, + request: Union[ + gcd_conversation_profile.SetSuggestionFeatureConfigRequest, dict + ] = None, + *, + conversation_profile: str = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> operation.Operation: + r"""Adds or updates a suggestion feature in a conversation profile. + If the conversation profile contains the type of suggestion + feature for the participant role, it will update it. Otherwise + it will insert the suggestion feature. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [SetSuggestionFeatureConfigOperationMetadata][google.cloud.dialogflow.v2.SetSuggestionFeatureConfigOperationMetadata] + - ``response``: + [ConversationProfile][google.cloud.dialogflow.v2.ConversationProfile] + + If a long running operation to add or update suggestion feature + config for the same conversation profile, participant role and + suggestion feature type exists, please cancel the existing long + running operation before sending such request, otherwise the + request will be rejected. + + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_set_suggestion_feature_config(): + # Create a client + client = dialogflow_v2.ConversationProfilesClient() + + # Initialize request argument(s) + request = dialogflow_v2.SetSuggestionFeatureConfigRequest( + conversation_profile="conversation_profile_value", + participant_role="END_USER", + ) + + # Make the request + operation = client.set_suggestion_feature_config(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.SetSuggestionFeatureConfigRequest, dict]): + The request object. The request message for + [ConversationProfiles.SetSuggestionFeature][]. + conversation_profile (str): + Required. The Conversation Profile to add or update the + suggestion feature config. Format: + ``projects//locations//conversationProfiles/``. + + This corresponds to the ``conversation_profile`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.api_core.operation.Operation: + An object representing a long-running operation. + + The result type for the operation will be + :class:`google.cloud.dialogflow_v2.types.ConversationProfile` + Defines the services to connect to incoming Dialogflow + conversations. + + """ + # Create or coerce a protobuf request object. + # Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + has_flattened_params = any([conversation_profile]) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # Minor optimization to avoid making a copy if the user passes + # in a gcd_conversation_profile.SetSuggestionFeatureConfigRequest. + # There's no risk of modifying the input as we've already verified + # there are no flattened fields. + if not isinstance( + request, gcd_conversation_profile.SetSuggestionFeatureConfigRequest + ): + request = gcd_conversation_profile.SetSuggestionFeatureConfigRequest( + request + ) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if conversation_profile is not None: + request.conversation_profile = conversation_profile + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[ + self._transport.set_suggestion_feature_config + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + (("conversation_profile", request.conversation_profile),) + ), + ) + + # Send the request. + response = rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # Wrap the response in an operation future. + response = operation.from_gapic( + response, + self._transport.operations_client, + gcd_conversation_profile.ConversationProfile, + metadata_type=gcd_conversation_profile.SetSuggestionFeatureConfigOperationMetadata, + ) + + # Done; return the response. + return response + + def clear_suggestion_feature_config( + self, + request: Union[ + gcd_conversation_profile.ClearSuggestionFeatureConfigRequest, dict + ] = None, + *, + conversation_profile: str = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> operation.Operation: + r"""Clears a suggestion feature from a conversation profile for the + given participant role. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [ClearSuggestionFeatureConfigOperationMetadata][google.cloud.dialogflow.v2.ClearSuggestionFeatureConfigOperationMetadata] + - ``response``: + [ConversationProfile][google.cloud.dialogflow.v2.ConversationProfile] + + + .. code-block:: python + + from google.cloud import dialogflow_v2 + + def sample_clear_suggestion_feature_config(): + # Create a client + client = dialogflow_v2.ConversationProfilesClient() + + # Initialize request argument(s) + request = dialogflow_v2.ClearSuggestionFeatureConfigRequest( + conversation_profile="conversation_profile_value", + participant_role="END_USER", + suggestion_feature_type="SMART_REPLY", + ) + + # Make the request + operation = client.clear_suggestion_feature_config(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.ClearSuggestionFeatureConfigRequest, dict]): + The request object. The request message for + [ConversationProfiles.ClearFeature][]. + conversation_profile (str): + Required. The Conversation Profile to add or update the + suggestion feature config. Format: + ``projects//locations//conversationProfiles/``. + + This corresponds to the ``conversation_profile`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.api_core.operation.Operation: + An object representing a long-running operation. + + The result type for the operation will be + :class:`google.cloud.dialogflow_v2.types.ConversationProfile` + Defines the services to connect to incoming Dialogflow + conversations. + + """ + # Create or coerce a protobuf request object. + # Quick check: If we got a request object, we should *not* have + # gotten any keyword arguments that map to the request. + has_flattened_params = any([conversation_profile]) + if request is not None and has_flattened_params: + raise ValueError( + "If the `request` argument is set, then none of " + "the individual field arguments should be set." + ) + + # Minor optimization to avoid making a copy if the user passes + # in a gcd_conversation_profile.ClearSuggestionFeatureConfigRequest. + # There's no risk of modifying the input as we've already verified + # there are no flattened fields. + if not isinstance( + request, gcd_conversation_profile.ClearSuggestionFeatureConfigRequest + ): + request = gcd_conversation_profile.ClearSuggestionFeatureConfigRequest( + request + ) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if conversation_profile is not None: + request.conversation_profile = conversation_profile + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[ + self._transport.clear_suggestion_feature_config + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + (("conversation_profile", request.conversation_profile),) + ), + ) + + # Send the request. + response = rpc(request, retry=retry, timeout=timeout, metadata=metadata,) + + # Wrap the response in an operation future. + response = operation.from_gapic( + response, + self._transport.operations_client, + gcd_conversation_profile.ConversationProfile, + metadata_type=gcd_conversation_profile.ClearSuggestionFeatureConfigOperationMetadata, + ) + + # Done; return the response. + return response + def __enter__(self): return self diff --git a/google/cloud/dialogflow_v2/services/conversation_profiles/pagers.py b/google/cloud/dialogflow_v2/services/conversation_profiles/pagers.py index e12f2bbb4..ca1450f7b 100644 --- a/google/cloud/dialogflow_v2/services/conversation_profiles/pagers.py +++ b/google/cloud/dialogflow_v2/services/conversation_profiles/pagers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/conversation_profiles/transports/__init__.py b/google/cloud/dialogflow_v2/services/conversation_profiles/transports/__init__.py index f2a4e2203..75117ebe9 100644 --- a/google/cloud/dialogflow_v2/services/conversation_profiles/transports/__init__.py +++ b/google/cloud/dialogflow_v2/services/conversation_profiles/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/conversation_profiles/transports/base.py b/google/cloud/dialogflow_v2/services/conversation_profiles/transports/base.py index f4d8b24e8..15e54b36b 100644 --- a/google/cloud/dialogflow_v2/services/conversation_profiles/transports/base.py +++ b/google/cloud/dialogflow_v2/services/conversation_profiles/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,6 +22,7 @@ from google.api_core import exceptions as core_exceptions from google.api_core import gapic_v1 from google.api_core import retry as retries +from google.api_core import operations_v1 from google.auth import credentials as ga_credentials # type: ignore from google.oauth2 import service_account # type: ignore @@ -29,6 +30,7 @@ from google.cloud.dialogflow_v2.types import ( conversation_profile as gcd_conversation_profile, ) +from google.longrunning import operations_pb2 # type: ignore from google.protobuf import empty_pb2 # type: ignore try: @@ -152,6 +154,16 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.set_suggestion_feature_config: gapic_v1.method.wrap_method( + self.set_suggestion_feature_config, + default_timeout=None, + client_info=client_info, + ), + self.clear_suggestion_feature_config: gapic_v1.method.wrap_method( + self.clear_suggestion_feature_config, + default_timeout=None, + client_info=client_info, + ), } def close(self): @@ -163,6 +175,11 @@ def close(self): """ raise NotImplementedError() + @property + def operations_client(self): + """Return the client designed to process long-running operations.""" + raise NotImplementedError() + @property def list_conversation_profiles( self, @@ -220,5 +237,23 @@ def delete_conversation_profile( ]: raise NotImplementedError() + @property + def set_suggestion_feature_config( + self, + ) -> Callable[ + [gcd_conversation_profile.SetSuggestionFeatureConfigRequest], + Union[operations_pb2.Operation, Awaitable[operations_pb2.Operation]], + ]: + raise NotImplementedError() + + @property + def clear_suggestion_feature_config( + self, + ) -> Callable[ + [gcd_conversation_profile.ClearSuggestionFeatureConfigRequest], + Union[operations_pb2.Operation, Awaitable[operations_pb2.Operation]], + ]: + raise NotImplementedError() + __all__ = ("ConversationProfilesTransport",) diff --git a/google/cloud/dialogflow_v2/services/conversation_profiles/transports/grpc.py b/google/cloud/dialogflow_v2/services/conversation_profiles/transports/grpc.py index 170676cda..2df4f5404 100644 --- a/google/cloud/dialogflow_v2/services/conversation_profiles/transports/grpc.py +++ b/google/cloud/dialogflow_v2/services/conversation_profiles/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,6 +17,7 @@ from typing import Callable, Dict, Optional, Sequence, Tuple, Union from google.api_core import grpc_helpers +from google.api_core import operations_v1 from google.api_core import gapic_v1 import google.auth # type: ignore from google.auth import credentials as ga_credentials # type: ignore @@ -28,6 +29,7 @@ from google.cloud.dialogflow_v2.types import ( conversation_profile as gcd_conversation_profile, ) +from google.longrunning import operations_pb2 # type: ignore from google.protobuf import empty_pb2 # type: ignore from .base import ConversationProfilesTransport, DEFAULT_CLIENT_INFO @@ -115,6 +117,7 @@ def __init__( self._grpc_channel = None self._ssl_channel_credentials = ssl_channel_credentials self._stubs: Dict[str, Callable] = {} + self._operations_client: Optional[operations_v1.OperationsClient] = None if api_mtls_endpoint: warnings.warn("api_mtls_endpoint is deprecated", DeprecationWarning) @@ -233,6 +236,20 @@ def grpc_channel(self) -> grpc.Channel: """ return self._grpc_channel + @property + def operations_client(self) -> operations_v1.OperationsClient: + """Create the client designed to process long-running operations. + + This property caches on the instance; repeated calls return the same + client. + """ + # Quick check: Only create a new client if we do not already have one. + if self._operations_client is None: + self._operations_client = operations_v1.OperationsClient(self.grpc_channel) + + # Return the client from cache. + return self._operations_client + @property def list_conversation_profiles( self, @@ -390,6 +407,99 @@ def delete_conversation_profile( ) return self._stubs["delete_conversation_profile"] + @property + def set_suggestion_feature_config( + self, + ) -> Callable[ + [gcd_conversation_profile.SetSuggestionFeatureConfigRequest], + operations_pb2.Operation, + ]: + r"""Return a callable for the set suggestion feature config method over gRPC. + + Adds or updates a suggestion feature in a conversation profile. + If the conversation profile contains the type of suggestion + feature for the participant role, it will update it. Otherwise + it will insert the suggestion feature. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [SetSuggestionFeatureConfigOperationMetadata][google.cloud.dialogflow.v2.SetSuggestionFeatureConfigOperationMetadata] + - ``response``: + [ConversationProfile][google.cloud.dialogflow.v2.ConversationProfile] + + If a long running operation to add or update suggestion feature + config for the same conversation profile, participant role and + suggestion feature type exists, please cancel the existing long + running operation before sending such request, otherwise the + request will be rejected. + + Returns: + Callable[[~.SetSuggestionFeatureConfigRequest], + ~.Operation]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "set_suggestion_feature_config" not in self._stubs: + self._stubs[ + "set_suggestion_feature_config" + ] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationProfiles/SetSuggestionFeatureConfig", + request_serializer=gcd_conversation_profile.SetSuggestionFeatureConfigRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["set_suggestion_feature_config"] + + @property + def clear_suggestion_feature_config( + self, + ) -> Callable[ + [gcd_conversation_profile.ClearSuggestionFeatureConfigRequest], + operations_pb2.Operation, + ]: + r"""Return a callable for the clear suggestion feature + config method over gRPC. + + Clears a suggestion feature from a conversation profile for the + given participant role. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [ClearSuggestionFeatureConfigOperationMetadata][google.cloud.dialogflow.v2.ClearSuggestionFeatureConfigOperationMetadata] + - ``response``: + [ConversationProfile][google.cloud.dialogflow.v2.ConversationProfile] + + Returns: + Callable[[~.ClearSuggestionFeatureConfigRequest], + ~.Operation]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "clear_suggestion_feature_config" not in self._stubs: + self._stubs[ + "clear_suggestion_feature_config" + ] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationProfiles/ClearSuggestionFeatureConfig", + request_serializer=gcd_conversation_profile.ClearSuggestionFeatureConfigRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["clear_suggestion_feature_config"] + def close(self): self.grpc_channel.close() diff --git a/google/cloud/dialogflow_v2/services/conversation_profiles/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2/services/conversation_profiles/transports/grpc_asyncio.py index 3ceb7d8b3..9f1d9b922 100644 --- a/google/cloud/dialogflow_v2/services/conversation_profiles/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2/services/conversation_profiles/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -18,6 +18,7 @@ from google.api_core import gapic_v1 from google.api_core import grpc_helpers_async +from google.api_core import operations_v1 from google.auth import credentials as ga_credentials # type: ignore from google.auth.transport.grpc import SslCredentials # type: ignore @@ -28,6 +29,7 @@ from google.cloud.dialogflow_v2.types import ( conversation_profile as gcd_conversation_profile, ) +from google.longrunning import operations_pb2 # type: ignore from google.protobuf import empty_pb2 # type: ignore from .base import ConversationProfilesTransport, DEFAULT_CLIENT_INFO from .grpc import ConversationProfilesGrpcTransport @@ -161,6 +163,7 @@ def __init__( self._grpc_channel = None self._ssl_channel_credentials = ssl_channel_credentials self._stubs: Dict[str, Callable] = {} + self._operations_client: Optional[operations_v1.OperationsAsyncClient] = None if api_mtls_endpoint: warnings.warn("api_mtls_endpoint is deprecated", DeprecationWarning) @@ -235,6 +238,22 @@ def grpc_channel(self) -> aio.Channel: # Return the channel from cache. return self._grpc_channel + @property + def operations_client(self) -> operations_v1.OperationsAsyncClient: + """Create the client designed to process long-running operations. + + This property caches on the instance; repeated calls return the same + client. + """ + # Quick check: Only create a new client if we do not already have one. + if self._operations_client is None: + self._operations_client = operations_v1.OperationsAsyncClient( + self.grpc_channel + ) + + # Return the client from cache. + return self._operations_client + @property def list_conversation_profiles( self, @@ -393,6 +412,99 @@ def delete_conversation_profile( ) return self._stubs["delete_conversation_profile"] + @property + def set_suggestion_feature_config( + self, + ) -> Callable[ + [gcd_conversation_profile.SetSuggestionFeatureConfigRequest], + Awaitable[operations_pb2.Operation], + ]: + r"""Return a callable for the set suggestion feature config method over gRPC. + + Adds or updates a suggestion feature in a conversation profile. + If the conversation profile contains the type of suggestion + feature for the participant role, it will update it. Otherwise + it will insert the suggestion feature. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [SetSuggestionFeatureConfigOperationMetadata][google.cloud.dialogflow.v2.SetSuggestionFeatureConfigOperationMetadata] + - ``response``: + [ConversationProfile][google.cloud.dialogflow.v2.ConversationProfile] + + If a long running operation to add or update suggestion feature + config for the same conversation profile, participant role and + suggestion feature type exists, please cancel the existing long + running operation before sending such request, otherwise the + request will be rejected. + + Returns: + Callable[[~.SetSuggestionFeatureConfigRequest], + Awaitable[~.Operation]]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "set_suggestion_feature_config" not in self._stubs: + self._stubs[ + "set_suggestion_feature_config" + ] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationProfiles/SetSuggestionFeatureConfig", + request_serializer=gcd_conversation_profile.SetSuggestionFeatureConfigRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["set_suggestion_feature_config"] + + @property + def clear_suggestion_feature_config( + self, + ) -> Callable[ + [gcd_conversation_profile.ClearSuggestionFeatureConfigRequest], + Awaitable[operations_pb2.Operation], + ]: + r"""Return a callable for the clear suggestion feature + config method over gRPC. + + Clears a suggestion feature from a conversation profile for the + given participant role. + + This method is a `long-running + operation `__. + The returned ``Operation`` type has the following + method-specific fields: + + - ``metadata``: + [ClearSuggestionFeatureConfigOperationMetadata][google.cloud.dialogflow.v2.ClearSuggestionFeatureConfigOperationMetadata] + - ``response``: + [ConversationProfile][google.cloud.dialogflow.v2.ConversationProfile] + + Returns: + Callable[[~.ClearSuggestionFeatureConfigRequest], + Awaitable[~.Operation]]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "clear_suggestion_feature_config" not in self._stubs: + self._stubs[ + "clear_suggestion_feature_config" + ] = self.grpc_channel.unary_unary( + "/google.cloud.dialogflow.v2.ConversationProfiles/ClearSuggestionFeatureConfig", + request_serializer=gcd_conversation_profile.ClearSuggestionFeatureConfigRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["clear_suggestion_feature_config"] + def close(self): return self.grpc_channel.close() diff --git a/google/cloud/dialogflow_v2/services/conversations/__init__.py b/google/cloud/dialogflow_v2/services/conversations/__init__.py index f6f6b90ff..3869363a8 100644 --- a/google/cloud/dialogflow_v2/services/conversations/__init__.py +++ b/google/cloud/dialogflow_v2/services/conversations/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/conversations/async_client.py b/google/cloud/dialogflow_v2/services/conversations/async_client.py index 9bce19c18..b73bc764d 100644 --- a/google/cloud/dialogflow_v2/services/conversations/async_client.py +++ b/google/cloud/dialogflow_v2/services/conversations/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -248,7 +248,7 @@ async def create_conversation( is triggered, conversation will transfer to Assist Stage. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -357,7 +357,7 @@ async def list_conversations( specified project. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -458,7 +458,7 @@ async def get_conversation( ) -> conversation.Conversation: r"""Retrieves the specific conversation. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -556,7 +556,7 @@ async def complete_conversation( days. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -657,7 +657,7 @@ async def list_messages( and empty page_token. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 diff --git a/google/cloud/dialogflow_v2/services/conversations/client.py b/google/cloud/dialogflow_v2/services/conversations/client.py index fad41b6e0..0ecd391b4 100644 --- a/google/cloud/dialogflow_v2/services/conversations/client.py +++ b/google/cloud/dialogflow_v2/services/conversations/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -466,8 +466,7 @@ def create_conversation( is triggered, conversation will transfer to Assist Stage. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -576,8 +575,7 @@ def list_conversations( specified project. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -678,8 +676,7 @@ def get_conversation( ) -> conversation.Conversation: r"""Retrieves the specific conversation. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -777,8 +774,7 @@ def complete_conversation( days. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -879,8 +875,7 @@ def list_messages( and empty page_token. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 diff --git a/google/cloud/dialogflow_v2/services/conversations/pagers.py b/google/cloud/dialogflow_v2/services/conversations/pagers.py index e8e0ef6e3..d2c414f2f 100644 --- a/google/cloud/dialogflow_v2/services/conversations/pagers.py +++ b/google/cloud/dialogflow_v2/services/conversations/pagers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/conversations/transports/__init__.py b/google/cloud/dialogflow_v2/services/conversations/transports/__init__.py index 2989914f7..f94552209 100644 --- a/google/cloud/dialogflow_v2/services/conversations/transports/__init__.py +++ b/google/cloud/dialogflow_v2/services/conversations/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/conversations/transports/base.py b/google/cloud/dialogflow_v2/services/conversations/transports/base.py index 03f7bcee4..b541d71ff 100644 --- a/google/cloud/dialogflow_v2/services/conversations/transports/base.py +++ b/google/cloud/dialogflow_v2/services/conversations/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/conversations/transports/grpc.py b/google/cloud/dialogflow_v2/services/conversations/transports/grpc.py index ca834df44..c8dff9283 100644 --- a/google/cloud/dialogflow_v2/services/conversations/transports/grpc.py +++ b/google/cloud/dialogflow_v2/services/conversations/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/conversations/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2/services/conversations/transports/grpc_asyncio.py index 95fd398c8..64de0d5f6 100644 --- a/google/cloud/dialogflow_v2/services/conversations/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2/services/conversations/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/documents/__init__.py b/google/cloud/dialogflow_v2/services/documents/__init__.py index f610c36b0..26fc1b454 100644 --- a/google/cloud/dialogflow_v2/services/documents/__init__.py +++ b/google/cloud/dialogflow_v2/services/documents/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/documents/async_client.py b/google/cloud/dialogflow_v2/services/documents/async_client.py index 978d7324d..0a5a5d358 100644 --- a/google/cloud/dialogflow_v2/services/documents/async_client.py +++ b/google/cloud/dialogflow_v2/services/documents/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -216,7 +216,7 @@ async def list_documents( base. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -317,7 +317,7 @@ async def get_document( ) -> document.Document: r"""Retrieves the specified document. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -425,7 +425,7 @@ async def create_document( - ``response``: [Document][google.cloud.dialogflow.v2.Document] - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -438,7 +438,7 @@ def sample_create_document(): document.content_uri = "content_uri_value" document.display_name = "display_name_value" document.mime_type = "mime_type_value" - document.knowledge_types = "ARTICLE_SUGGESTION" + document.knowledge_types = "AGENT_FACING_SMART_REPLY" request = dialogflow_v2.CreateDocumentRequest( parent="parent_value", @@ -565,7 +565,7 @@ async def import_documents( [ImportDocumentsResponse][google.cloud.dialogflow.v2.ImportDocumentsResponse] - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -579,7 +579,7 @@ def sample_import_documents(): document_template = dialogflow_v2.ImportDocumentTemplate() document_template.mime_type = "mime_type_value" - document_template.knowledge_types = "ARTICLE_SUGGESTION" + document_template.knowledge_types = "AGENT_FACING_SMART_REPLY" request = dialogflow_v2.ImportDocumentsRequest( gcs_source=gcs_source, @@ -670,7 +670,7 @@ async def delete_document( message `__ - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -796,7 +796,7 @@ async def update_document( - ``response``: [Document][google.cloud.dialogflow.v2.Document] - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -809,7 +809,7 @@ def sample_update_document(): document.content_uri = "content_uri_value" document.display_name = "display_name_value" document.mime_type = "mime_type_value" - document.knowledge_types = "ARTICLE_SUGGESTION" + document.knowledge_types = "AGENT_FACING_SMART_REPLY" request = dialogflow_v2.UpdateDocumentRequest( document=document, @@ -943,7 +943,7 @@ async def reload_document( is deprecated; only use ``projects.knowledgeBases.documents``. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -1079,7 +1079,7 @@ async def export_document( - ``response``: [Document][google.cloud.dialogflow.v2.Document] - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 diff --git a/google/cloud/dialogflow_v2/services/documents/client.py b/google/cloud/dialogflow_v2/services/documents/client.py index ad9d265f5..6779309b1 100644 --- a/google/cloud/dialogflow_v2/services/documents/client.py +++ b/google/cloud/dialogflow_v2/services/documents/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -417,8 +417,7 @@ def list_documents( base. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -519,8 +518,7 @@ def get_document( ) -> document.Document: r"""Retrieves the specified document. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -628,8 +626,7 @@ def create_document( - ``response``: [Document][google.cloud.dialogflow.v2.Document] - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -642,7 +639,7 @@ def sample_create_document(): document.content_uri = "content_uri_value" document.display_name = "display_name_value" document.mime_type = "mime_type_value" - document.knowledge_types = "ARTICLE_SUGGESTION" + document.knowledge_types = "AGENT_FACING_SMART_REPLY" request = dialogflow_v2.CreateDocumentRequest( parent="parent_value", @@ -769,8 +766,7 @@ def import_documents( [ImportDocumentsResponse][google.cloud.dialogflow.v2.ImportDocumentsResponse] - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -784,7 +780,7 @@ def sample_import_documents(): document_template = dialogflow_v2.ImportDocumentTemplate() document_template.mime_type = "mime_type_value" - document_template.knowledge_types = "ARTICLE_SUGGESTION" + document_template.knowledge_types = "AGENT_FACING_SMART_REPLY" request = dialogflow_v2.ImportDocumentsRequest( gcs_source=gcs_source, @@ -876,8 +872,7 @@ def delete_document( message `__ - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -1003,8 +998,7 @@ def update_document( - ``response``: [Document][google.cloud.dialogflow.v2.Document] - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -1017,7 +1011,7 @@ def sample_update_document(): document.content_uri = "content_uri_value" document.display_name = "display_name_value" document.mime_type = "mime_type_value" - document.knowledge_types = "ARTICLE_SUGGESTION" + document.knowledge_types = "AGENT_FACING_SMART_REPLY" request = dialogflow_v2.UpdateDocumentRequest( document=document, @@ -1151,8 +1145,7 @@ def reload_document( is deprecated; only use ``projects.knowledgeBases.documents``. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -1288,8 +1281,7 @@ def export_document( - ``response``: [Document][google.cloud.dialogflow.v2.Document] - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 diff --git a/google/cloud/dialogflow_v2/services/documents/pagers.py b/google/cloud/dialogflow_v2/services/documents/pagers.py index d0dd63f48..6c04411c5 100644 --- a/google/cloud/dialogflow_v2/services/documents/pagers.py +++ b/google/cloud/dialogflow_v2/services/documents/pagers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/documents/transports/__init__.py b/google/cloud/dialogflow_v2/services/documents/transports/__init__.py index 5d4948aa0..2e363c1e2 100644 --- a/google/cloud/dialogflow_v2/services/documents/transports/__init__.py +++ b/google/cloud/dialogflow_v2/services/documents/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/documents/transports/base.py b/google/cloud/dialogflow_v2/services/documents/transports/base.py index 90ccfdea9..2622dd3d5 100644 --- a/google/cloud/dialogflow_v2/services/documents/transports/base.py +++ b/google/cloud/dialogflow_v2/services/documents/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/documents/transports/grpc.py b/google/cloud/dialogflow_v2/services/documents/transports/grpc.py index 0013b05b4..bc26419a1 100644 --- a/google/cloud/dialogflow_v2/services/documents/transports/grpc.py +++ b/google/cloud/dialogflow_v2/services/documents/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/documents/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2/services/documents/transports/grpc_asyncio.py index 28f5fa2c0..c93598061 100644 --- a/google/cloud/dialogflow_v2/services/documents/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2/services/documents/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/entity_types/__init__.py b/google/cloud/dialogflow_v2/services/entity_types/__init__.py index 77cd53e9c..b0093027a 100644 --- a/google/cloud/dialogflow_v2/services/entity_types/__init__.py +++ b/google/cloud/dialogflow_v2/services/entity_types/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/entity_types/async_client.py b/google/cloud/dialogflow_v2/services/entity_types/async_client.py index 4cf6f0084..0be66687b 100644 --- a/google/cloud/dialogflow_v2/services/entity_types/async_client.py +++ b/google/cloud/dialogflow_v2/services/entity_types/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -219,7 +219,7 @@ async def list_entity_types( agent. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -332,7 +332,7 @@ async def get_entity_type( ) -> entity_type.EntityType: r"""Retrieves the specified entity type. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -454,7 +454,7 @@ async def create_entity_type( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -587,7 +587,7 @@ async def update_entity_type( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -711,7 +711,7 @@ async def delete_entity_type( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -805,7 +805,7 @@ async def batch_update_entity_types( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -907,7 +907,7 @@ async def batch_delete_entity_types( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -1049,7 +1049,7 @@ async def batch_create_entities( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -1208,7 +1208,7 @@ async def batch_update_entities( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -1367,7 +1367,7 @@ async def batch_delete_entities( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 diff --git a/google/cloud/dialogflow_v2/services/entity_types/client.py b/google/cloud/dialogflow_v2/services/entity_types/client.py index 834026e8d..90a799bec 100644 --- a/google/cloud/dialogflow_v2/services/entity_types/client.py +++ b/google/cloud/dialogflow_v2/services/entity_types/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -417,8 +417,7 @@ def list_entity_types( agent. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -531,8 +530,7 @@ def get_entity_type( ) -> entity_type.EntityType: r"""Retrieves the specified entity type. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -654,8 +652,7 @@ def create_entity_type( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -788,8 +785,7 @@ def update_entity_type( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -913,8 +909,7 @@ def delete_entity_type( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -1008,8 +1003,7 @@ def batch_update_entity_types( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -1114,8 +1108,7 @@ def batch_delete_entity_types( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -1259,8 +1252,7 @@ def batch_create_entities( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -1419,8 +1411,7 @@ def batch_update_entities( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -1579,8 +1570,7 @@ def batch_delete_entities( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 diff --git a/google/cloud/dialogflow_v2/services/entity_types/pagers.py b/google/cloud/dialogflow_v2/services/entity_types/pagers.py index bd8839192..1e77845f5 100644 --- a/google/cloud/dialogflow_v2/services/entity_types/pagers.py +++ b/google/cloud/dialogflow_v2/services/entity_types/pagers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/entity_types/transports/__init__.py b/google/cloud/dialogflow_v2/services/entity_types/transports/__init__.py index 07ea82e1b..2a22d6640 100644 --- a/google/cloud/dialogflow_v2/services/entity_types/transports/__init__.py +++ b/google/cloud/dialogflow_v2/services/entity_types/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/entity_types/transports/base.py b/google/cloud/dialogflow_v2/services/entity_types/transports/base.py index 51de4497c..5b3b759f4 100644 --- a/google/cloud/dialogflow_v2/services/entity_types/transports/base.py +++ b/google/cloud/dialogflow_v2/services/entity_types/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/entity_types/transports/grpc.py b/google/cloud/dialogflow_v2/services/entity_types/transports/grpc.py index c1ca0c565..9cedb66e4 100644 --- a/google/cloud/dialogflow_v2/services/entity_types/transports/grpc.py +++ b/google/cloud/dialogflow_v2/services/entity_types/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/entity_types/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2/services/entity_types/transports/grpc_asyncio.py index f13b91d48..281309e3e 100644 --- a/google/cloud/dialogflow_v2/services/entity_types/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2/services/entity_types/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/environments/__init__.py b/google/cloud/dialogflow_v2/services/environments/__init__.py index 0c2be9484..228337657 100644 --- a/google/cloud/dialogflow_v2/services/environments/__init__.py +++ b/google/cloud/dialogflow_v2/services/environments/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/environments/async_client.py b/google/cloud/dialogflow_v2/services/environments/async_client.py index 216a5977c..fc3542597 100644 --- a/google/cloud/dialogflow_v2/services/environments/async_client.py +++ b/google/cloud/dialogflow_v2/services/environments/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -219,7 +219,7 @@ async def list_environments( the specified agent. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -321,7 +321,7 @@ async def get_environment( ) -> environment.Environment: r"""Retrieves the specified agent environment. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -408,7 +408,7 @@ async def create_environment( ) -> environment.Environment: r"""Creates an agent environment. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -510,7 +510,7 @@ async def update_environment( calling this method. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -598,7 +598,7 @@ async def delete_environment( ) -> None: r"""Deletes the specified agent environment. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -656,7 +656,7 @@ async def get_environment_history( ) -> pagers.GetEnvironmentHistoryAsyncPager: r"""Gets the history of the specified environment. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 diff --git a/google/cloud/dialogflow_v2/services/environments/client.py b/google/cloud/dialogflow_v2/services/environments/client.py index c42918a29..04d57a70d 100644 --- a/google/cloud/dialogflow_v2/services/environments/client.py +++ b/google/cloud/dialogflow_v2/services/environments/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -439,8 +439,7 @@ def list_environments( the specified agent. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -542,8 +541,7 @@ def get_environment( ) -> environment.Environment: r"""Retrieves the specified agent environment. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -631,8 +629,7 @@ def create_environment( ) -> environment.Environment: r"""Creates an agent environment. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -735,8 +732,7 @@ def update_environment( calling this method. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -825,8 +821,7 @@ def delete_environment( ) -> None: r"""Deletes the specified agent environment. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -885,8 +880,7 @@ def get_environment_history( ) -> pagers.GetEnvironmentHistoryPager: r"""Gets the history of the specified environment. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 diff --git a/google/cloud/dialogflow_v2/services/environments/pagers.py b/google/cloud/dialogflow_v2/services/environments/pagers.py index 41e4185fa..15e10bf46 100644 --- a/google/cloud/dialogflow_v2/services/environments/pagers.py +++ b/google/cloud/dialogflow_v2/services/environments/pagers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/environments/transports/__init__.py b/google/cloud/dialogflow_v2/services/environments/transports/__init__.py index c72efee48..0ecefb612 100644 --- a/google/cloud/dialogflow_v2/services/environments/transports/__init__.py +++ b/google/cloud/dialogflow_v2/services/environments/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/environments/transports/base.py b/google/cloud/dialogflow_v2/services/environments/transports/base.py index da41534fa..0f7a4084d 100644 --- a/google/cloud/dialogflow_v2/services/environments/transports/base.py +++ b/google/cloud/dialogflow_v2/services/environments/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/environments/transports/grpc.py b/google/cloud/dialogflow_v2/services/environments/transports/grpc.py index c0aad67ba..4d194117b 100644 --- a/google/cloud/dialogflow_v2/services/environments/transports/grpc.py +++ b/google/cloud/dialogflow_v2/services/environments/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/environments/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2/services/environments/transports/grpc_asyncio.py index 5a5747346..540e19e2e 100644 --- a/google/cloud/dialogflow_v2/services/environments/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2/services/environments/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/fulfillments/__init__.py b/google/cloud/dialogflow_v2/services/fulfillments/__init__.py index 6bade52dd..abd353a6d 100644 --- a/google/cloud/dialogflow_v2/services/fulfillments/__init__.py +++ b/google/cloud/dialogflow_v2/services/fulfillments/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/fulfillments/async_client.py b/google/cloud/dialogflow_v2/services/fulfillments/async_client.py index 7f5a87422..c163def3d 100644 --- a/google/cloud/dialogflow_v2/services/fulfillments/async_client.py +++ b/google/cloud/dialogflow_v2/services/fulfillments/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -212,7 +212,7 @@ async def get_fulfillment( ) -> fulfillment.Fulfillment: r"""Retrieves the fulfillment. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -313,7 +313,7 @@ async def update_fulfillment( ) -> gcd_fulfillment.Fulfillment: r"""Updates the fulfillment. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 diff --git a/google/cloud/dialogflow_v2/services/fulfillments/client.py b/google/cloud/dialogflow_v2/services/fulfillments/client.py index 9d9820600..df96dc8f5 100644 --- a/google/cloud/dialogflow_v2/services/fulfillments/client.py +++ b/google/cloud/dialogflow_v2/services/fulfillments/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -406,8 +406,7 @@ def get_fulfillment( ) -> fulfillment.Fulfillment: r"""Retrieves the fulfillment. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -508,8 +507,7 @@ def update_fulfillment( ) -> gcd_fulfillment.Fulfillment: r"""Updates the fulfillment. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 diff --git a/google/cloud/dialogflow_v2/services/fulfillments/transports/__init__.py b/google/cloud/dialogflow_v2/services/fulfillments/transports/__init__.py index d822b662b..425287bb0 100644 --- a/google/cloud/dialogflow_v2/services/fulfillments/transports/__init__.py +++ b/google/cloud/dialogflow_v2/services/fulfillments/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/fulfillments/transports/base.py b/google/cloud/dialogflow_v2/services/fulfillments/transports/base.py index 7ab589d60..96ac7accd 100644 --- a/google/cloud/dialogflow_v2/services/fulfillments/transports/base.py +++ b/google/cloud/dialogflow_v2/services/fulfillments/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/fulfillments/transports/grpc.py b/google/cloud/dialogflow_v2/services/fulfillments/transports/grpc.py index fed1a11ca..d00dad636 100644 --- a/google/cloud/dialogflow_v2/services/fulfillments/transports/grpc.py +++ b/google/cloud/dialogflow_v2/services/fulfillments/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/fulfillments/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2/services/fulfillments/transports/grpc_asyncio.py index a9083f7d8..bec9593cb 100644 --- a/google/cloud/dialogflow_v2/services/fulfillments/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2/services/fulfillments/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/intents/__init__.py b/google/cloud/dialogflow_v2/services/intents/__init__.py index 5a2c263cf..283553c4a 100644 --- a/google/cloud/dialogflow_v2/services/intents/__init__.py +++ b/google/cloud/dialogflow_v2/services/intents/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/intents/async_client.py b/google/cloud/dialogflow_v2/services/intents/async_client.py index 784968f9a..6c614d753 100644 --- a/google/cloud/dialogflow_v2/services/intents/async_client.py +++ b/google/cloud/dialogflow_v2/services/intents/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -217,7 +217,7 @@ async def list_intents( agent. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -339,7 +339,7 @@ async def get_intent( ) -> intent.Intent: r"""Retrieves the specified intent. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -457,7 +457,7 @@ async def create_intent( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -586,7 +586,7 @@ async def update_intent( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -715,7 +715,7 @@ async def delete_intent( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -814,7 +814,7 @@ async def batch_update_intents( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -958,7 +958,7 @@ async def batch_delete_intents( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 diff --git a/google/cloud/dialogflow_v2/services/intents/client.py b/google/cloud/dialogflow_v2/services/intents/client.py index 4340e059a..f59000be5 100644 --- a/google/cloud/dialogflow_v2/services/intents/client.py +++ b/google/cloud/dialogflow_v2/services/intents/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -431,8 +431,7 @@ def list_intents( agent. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -554,8 +553,7 @@ def get_intent( ) -> intent.Intent: r"""Retrieves the specified intent. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -673,8 +671,7 @@ def create_intent( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -803,8 +800,7 @@ def update_intent( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -933,8 +929,7 @@ def delete_intent( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -1033,8 +1028,7 @@ def batch_update_intents( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -1178,8 +1172,7 @@ def batch_delete_intents( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 diff --git a/google/cloud/dialogflow_v2/services/intents/pagers.py b/google/cloud/dialogflow_v2/services/intents/pagers.py index f28626ab8..70fde9693 100644 --- a/google/cloud/dialogflow_v2/services/intents/pagers.py +++ b/google/cloud/dialogflow_v2/services/intents/pagers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/intents/transports/__init__.py b/google/cloud/dialogflow_v2/services/intents/transports/__init__.py index 974a58103..876b5cd14 100644 --- a/google/cloud/dialogflow_v2/services/intents/transports/__init__.py +++ b/google/cloud/dialogflow_v2/services/intents/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/intents/transports/base.py b/google/cloud/dialogflow_v2/services/intents/transports/base.py index ef9862467..b50ba4896 100644 --- a/google/cloud/dialogflow_v2/services/intents/transports/base.py +++ b/google/cloud/dialogflow_v2/services/intents/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/intents/transports/grpc.py b/google/cloud/dialogflow_v2/services/intents/transports/grpc.py index 49d9f5592..debea24a8 100644 --- a/google/cloud/dialogflow_v2/services/intents/transports/grpc.py +++ b/google/cloud/dialogflow_v2/services/intents/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/intents/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2/services/intents/transports/grpc_asyncio.py index 9f20b2eb2..5e5c3010a 100644 --- a/google/cloud/dialogflow_v2/services/intents/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2/services/intents/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/knowledge_bases/__init__.py b/google/cloud/dialogflow_v2/services/knowledge_bases/__init__.py index 24204c982..e17153139 100644 --- a/google/cloud/dialogflow_v2/services/knowledge_bases/__init__.py +++ b/google/cloud/dialogflow_v2/services/knowledge_bases/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/knowledge_bases/async_client.py b/google/cloud/dialogflow_v2/services/knowledge_bases/async_client.py index c34aa25e1..d04cc17f6 100644 --- a/google/cloud/dialogflow_v2/services/knowledge_bases/async_client.py +++ b/google/cloud/dialogflow_v2/services/knowledge_bases/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -221,7 +221,7 @@ async def list_knowledge_bases( specified agent. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -322,7 +322,7 @@ async def get_knowledge_base( ) -> knowledge_base.KnowledgeBase: r"""Retrieves the specified knowledge base. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -424,7 +424,7 @@ async def create_knowledge_base( ) -> gcd_knowledge_base.KnowledgeBase: r"""Creates a knowledge base. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -538,7 +538,7 @@ async def delete_knowledge_base( ) -> None: r"""Deletes the specified knowledge base. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -620,7 +620,7 @@ async def update_knowledge_base( ) -> gcd_knowledge_base.KnowledgeBase: r"""Updates the specified knowledge base. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 diff --git a/google/cloud/dialogflow_v2/services/knowledge_bases/client.py b/google/cloud/dialogflow_v2/services/knowledge_bases/client.py index 9461af25a..eaa24f049 100644 --- a/google/cloud/dialogflow_v2/services/knowledge_bases/client.py +++ b/google/cloud/dialogflow_v2/services/knowledge_bases/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -415,8 +415,7 @@ def list_knowledge_bases( specified agent. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -517,8 +516,7 @@ def get_knowledge_base( ) -> knowledge_base.KnowledgeBase: r"""Retrieves the specified knowledge base. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -620,8 +618,7 @@ def create_knowledge_base( ) -> gcd_knowledge_base.KnowledgeBase: r"""Creates a knowledge base. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -735,8 +732,7 @@ def delete_knowledge_base( ) -> None: r"""Deletes the specified knowledge base. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -818,8 +814,7 @@ def update_knowledge_base( ) -> gcd_knowledge_base.KnowledgeBase: r"""Updates the specified knowledge base. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 diff --git a/google/cloud/dialogflow_v2/services/knowledge_bases/pagers.py b/google/cloud/dialogflow_v2/services/knowledge_bases/pagers.py index cbfa16b57..d9ac72bf4 100644 --- a/google/cloud/dialogflow_v2/services/knowledge_bases/pagers.py +++ b/google/cloud/dialogflow_v2/services/knowledge_bases/pagers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/knowledge_bases/transports/__init__.py b/google/cloud/dialogflow_v2/services/knowledge_bases/transports/__init__.py index 38da4326d..f3bf2daa6 100644 --- a/google/cloud/dialogflow_v2/services/knowledge_bases/transports/__init__.py +++ b/google/cloud/dialogflow_v2/services/knowledge_bases/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/knowledge_bases/transports/base.py b/google/cloud/dialogflow_v2/services/knowledge_bases/transports/base.py index a5efd1540..34d6963f0 100644 --- a/google/cloud/dialogflow_v2/services/knowledge_bases/transports/base.py +++ b/google/cloud/dialogflow_v2/services/knowledge_bases/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/knowledge_bases/transports/grpc.py b/google/cloud/dialogflow_v2/services/knowledge_bases/transports/grpc.py index 177c4dcc5..c51cfe4c1 100644 --- a/google/cloud/dialogflow_v2/services/knowledge_bases/transports/grpc.py +++ b/google/cloud/dialogflow_v2/services/knowledge_bases/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/knowledge_bases/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2/services/knowledge_bases/transports/grpc_asyncio.py index 420bd593a..f2055a98b 100644 --- a/google/cloud/dialogflow_v2/services/knowledge_bases/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2/services/knowledge_bases/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/participants/__init__.py b/google/cloud/dialogflow_v2/services/participants/__init__.py index 942327781..b3b91ad6a 100644 --- a/google/cloud/dialogflow_v2/services/participants/__init__.py +++ b/google/cloud/dialogflow_v2/services/participants/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/participants/async_client.py b/google/cloud/dialogflow_v2/services/participants/async_client.py index e3c9666d3..8d0d2392c 100644 --- a/google/cloud/dialogflow_v2/services/participants/async_client.py +++ b/google/cloud/dialogflow_v2/services/participants/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -227,7 +227,7 @@ async def create_participant( ) -> gcd_participant.Participant: r"""Creates a new participant in a conversation. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -325,7 +325,7 @@ async def get_participant( ) -> participant.Participant: r"""Retrieves a conversation participant. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -417,7 +417,7 @@ async def list_participants( conversation. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -519,7 +519,7 @@ async def update_participant( ) -> gcd_participant.Participant: r"""Updates the specified participant. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -625,7 +625,7 @@ async def analyze_content( environments `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -750,7 +750,7 @@ async def suggest_articles( specific historical messages. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -843,7 +843,7 @@ async def suggest_faq_answers( specific historical messages. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -936,7 +936,7 @@ async def suggest_smart_replies( specific historical messages. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 diff --git a/google/cloud/dialogflow_v2/services/participants/client.py b/google/cloud/dialogflow_v2/services/participants/client.py index ad64bd7bd..c38c5b9b1 100644 --- a/google/cloud/dialogflow_v2/services/participants/client.py +++ b/google/cloud/dialogflow_v2/services/participants/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -490,8 +490,7 @@ def create_participant( ) -> gcd_participant.Participant: r"""Creates a new participant in a conversation. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -589,8 +588,7 @@ def get_participant( ) -> participant.Participant: r"""Retrieves a conversation participant. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -682,8 +680,7 @@ def list_participants( conversation. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -785,8 +782,7 @@ def update_participant( ) -> gcd_participant.Participant: r"""Updates the specified participant. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -892,8 +888,7 @@ def analyze_content( environments `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -1009,8 +1004,7 @@ def suggest_articles( specific historical messages. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -1103,8 +1097,7 @@ def suggest_faq_answers( specific historical messages. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -1197,8 +1190,7 @@ def suggest_smart_replies( specific historical messages. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 diff --git a/google/cloud/dialogflow_v2/services/participants/pagers.py b/google/cloud/dialogflow_v2/services/participants/pagers.py index 2b0833112..485d97903 100644 --- a/google/cloud/dialogflow_v2/services/participants/pagers.py +++ b/google/cloud/dialogflow_v2/services/participants/pagers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/participants/transports/__init__.py b/google/cloud/dialogflow_v2/services/participants/transports/__init__.py index 522813c1c..146083f80 100644 --- a/google/cloud/dialogflow_v2/services/participants/transports/__init__.py +++ b/google/cloud/dialogflow_v2/services/participants/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/participants/transports/base.py b/google/cloud/dialogflow_v2/services/participants/transports/base.py index 395b017fd..0b57fdd1b 100644 --- a/google/cloud/dialogflow_v2/services/participants/transports/base.py +++ b/google/cloud/dialogflow_v2/services/participants/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/participants/transports/grpc.py b/google/cloud/dialogflow_v2/services/participants/transports/grpc.py index 4654e6c5b..1c9fadf29 100644 --- a/google/cloud/dialogflow_v2/services/participants/transports/grpc.py +++ b/google/cloud/dialogflow_v2/services/participants/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/participants/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2/services/participants/transports/grpc_asyncio.py index 8f5dd22f5..546251b7d 100644 --- a/google/cloud/dialogflow_v2/services/participants/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2/services/participants/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/session_entity_types/__init__.py b/google/cloud/dialogflow_v2/services/session_entity_types/__init__.py index cbd406b49..a8d58e178 100644 --- a/google/cloud/dialogflow_v2/services/session_entity_types/__init__.py +++ b/google/cloud/dialogflow_v2/services/session_entity_types/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/session_entity_types/async_client.py b/google/cloud/dialogflow_v2/services/session_entity_types/async_client.py index 22abba57e..83e036ba9 100644 --- a/google/cloud/dialogflow_v2/services/session_entity_types/async_client.py +++ b/google/cloud/dialogflow_v2/services/session_entity_types/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -230,7 +230,7 @@ async def list_session_entity_types( use session entities with Google Assistant integration. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -339,7 +339,7 @@ async def get_session_entity_type( use session entities with Google Assistant integration. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -452,7 +452,7 @@ async def create_session_entity_type( use session entities with Google Assistant integration. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -578,7 +578,7 @@ async def update_session_entity_type( use session entities with Google Assistant integration. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -697,7 +697,7 @@ async def delete_session_entity_type( use session entities with Google Assistant integration. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 diff --git a/google/cloud/dialogflow_v2/services/session_entity_types/client.py b/google/cloud/dialogflow_v2/services/session_entity_types/client.py index c97415434..c4e4091ef 100644 --- a/google/cloud/dialogflow_v2/services/session_entity_types/client.py +++ b/google/cloud/dialogflow_v2/services/session_entity_types/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -424,8 +424,7 @@ def list_session_entity_types( use session entities with Google Assistant integration. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -536,8 +535,7 @@ def get_session_entity_type( use session entities with Google Assistant integration. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -650,8 +648,7 @@ def create_session_entity_type( use session entities with Google Assistant integration. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -781,8 +778,7 @@ def update_session_entity_type( use session entities with Google Assistant integration. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -905,8 +901,7 @@ def delete_session_entity_type( use session entities with Google Assistant integration. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 diff --git a/google/cloud/dialogflow_v2/services/session_entity_types/pagers.py b/google/cloud/dialogflow_v2/services/session_entity_types/pagers.py index 56e46abd4..127870fb0 100644 --- a/google/cloud/dialogflow_v2/services/session_entity_types/pagers.py +++ b/google/cloud/dialogflow_v2/services/session_entity_types/pagers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/session_entity_types/transports/__init__.py b/google/cloud/dialogflow_v2/services/session_entity_types/transports/__init__.py index 633fd32cb..44e2a8d43 100644 --- a/google/cloud/dialogflow_v2/services/session_entity_types/transports/__init__.py +++ b/google/cloud/dialogflow_v2/services/session_entity_types/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/session_entity_types/transports/base.py b/google/cloud/dialogflow_v2/services/session_entity_types/transports/base.py index 431634dde..471df36db 100644 --- a/google/cloud/dialogflow_v2/services/session_entity_types/transports/base.py +++ b/google/cloud/dialogflow_v2/services/session_entity_types/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/session_entity_types/transports/grpc.py b/google/cloud/dialogflow_v2/services/session_entity_types/transports/grpc.py index 1dde438af..99420e0e6 100644 --- a/google/cloud/dialogflow_v2/services/session_entity_types/transports/grpc.py +++ b/google/cloud/dialogflow_v2/services/session_entity_types/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/session_entity_types/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2/services/session_entity_types/transports/grpc_asyncio.py index 067512329..ab36364e1 100644 --- a/google/cloud/dialogflow_v2/services/session_entity_types/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2/services/session_entity_types/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/sessions/__init__.py b/google/cloud/dialogflow_v2/services/sessions/__init__.py index 0adeafb97..49b86a28b 100644 --- a/google/cloud/dialogflow_v2/services/sessions/__init__.py +++ b/google/cloud/dialogflow_v2/services/sessions/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/sessions/async_client.py b/google/cloud/dialogflow_v2/services/sessions/async_client.py index 1677e9694..324fff2cd 100644 --- a/google/cloud/dialogflow_v2/services/sessions/async_client.py +++ b/google/cloud/dialogflow_v2/services/sessions/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -245,7 +245,7 @@ async def detect_intent( environments `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -394,7 +394,7 @@ def streaming_detect_intent( environments `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 diff --git a/google/cloud/dialogflow_v2/services/sessions/client.py b/google/cloud/dialogflow_v2/services/sessions/client.py index b4adcca56..f74f92dd5 100644 --- a/google/cloud/dialogflow_v2/services/sessions/client.py +++ b/google/cloud/dialogflow_v2/services/sessions/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -474,8 +474,7 @@ def detect_intent( environments `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -615,8 +614,7 @@ def streaming_detect_intent( environments `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 diff --git a/google/cloud/dialogflow_v2/services/sessions/transports/__init__.py b/google/cloud/dialogflow_v2/services/sessions/transports/__init__.py index db0f7d045..ce00ff376 100644 --- a/google/cloud/dialogflow_v2/services/sessions/transports/__init__.py +++ b/google/cloud/dialogflow_v2/services/sessions/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/sessions/transports/base.py b/google/cloud/dialogflow_v2/services/sessions/transports/base.py index f9ac3926f..d5ce6b3e2 100644 --- a/google/cloud/dialogflow_v2/services/sessions/transports/base.py +++ b/google/cloud/dialogflow_v2/services/sessions/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/sessions/transports/grpc.py b/google/cloud/dialogflow_v2/services/sessions/transports/grpc.py index 41b5f67a6..1f0a3bf9a 100644 --- a/google/cloud/dialogflow_v2/services/sessions/transports/grpc.py +++ b/google/cloud/dialogflow_v2/services/sessions/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/sessions/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2/services/sessions/transports/grpc_asyncio.py index c67743a5b..a8842fb89 100644 --- a/google/cloud/dialogflow_v2/services/sessions/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2/services/sessions/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/versions/__init__.py b/google/cloud/dialogflow_v2/services/versions/__init__.py index 586be1818..78f73aa31 100644 --- a/google/cloud/dialogflow_v2/services/versions/__init__.py +++ b/google/cloud/dialogflow_v2/services/versions/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/versions/async_client.py b/google/cloud/dialogflow_v2/services/versions/async_client.py index 581f850bf..c36f537c8 100644 --- a/google/cloud/dialogflow_v2/services/versions/async_client.py +++ b/google/cloud/dialogflow_v2/services/versions/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -210,7 +210,7 @@ async def list_versions( agent. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -313,7 +313,7 @@ async def get_version( ) -> version.Version: r"""Retrieves the specified agent version. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -428,7 +428,7 @@ async def create_version( "default" environment. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -553,7 +553,7 @@ async def update_version( version resource. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -674,7 +674,7 @@ async def delete_version( ) -> None: r"""Delete the specified agent version. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 diff --git a/google/cloud/dialogflow_v2/services/versions/client.py b/google/cloud/dialogflow_v2/services/versions/client.py index 6d26ddc09..ec58b6d7f 100644 --- a/google/cloud/dialogflow_v2/services/versions/client.py +++ b/google/cloud/dialogflow_v2/services/versions/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -412,8 +412,7 @@ def list_versions( agent. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -516,8 +515,7 @@ def get_version( ) -> version.Version: r"""Retrieves the specified agent version. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -632,8 +630,7 @@ def create_version( "default" environment. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -758,8 +755,7 @@ def update_version( version resource. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 @@ -880,8 +876,7 @@ def delete_version( ) -> None: r"""Delete the specified agent version. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2 diff --git a/google/cloud/dialogflow_v2/services/versions/pagers.py b/google/cloud/dialogflow_v2/services/versions/pagers.py index 26b6b52c0..a18ee9897 100644 --- a/google/cloud/dialogflow_v2/services/versions/pagers.py +++ b/google/cloud/dialogflow_v2/services/versions/pagers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/versions/transports/__init__.py b/google/cloud/dialogflow_v2/services/versions/transports/__init__.py index c5a42a0e8..ab80b3b57 100644 --- a/google/cloud/dialogflow_v2/services/versions/transports/__init__.py +++ b/google/cloud/dialogflow_v2/services/versions/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/versions/transports/base.py b/google/cloud/dialogflow_v2/services/versions/transports/base.py index 032c583c2..3130f1b69 100644 --- a/google/cloud/dialogflow_v2/services/versions/transports/base.py +++ b/google/cloud/dialogflow_v2/services/versions/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/versions/transports/grpc.py b/google/cloud/dialogflow_v2/services/versions/transports/grpc.py index 0d8866e36..27e9176fa 100644 --- a/google/cloud/dialogflow_v2/services/versions/transports/grpc.py +++ b/google/cloud/dialogflow_v2/services/versions/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/services/versions/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2/services/versions/transports/grpc_asyncio.py index e65f10798..e9f7f3894 100644 --- a/google/cloud/dialogflow_v2/services/versions/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2/services/versions/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/types/__init__.py b/google/cloud/dialogflow_v2/types/__init__.py index 932ec0678..09cf179e2 100644 --- a/google/cloud/dialogflow_v2/types/__init__.py +++ b/google/cloud/dialogflow_v2/types/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -70,9 +70,51 @@ ListMessagesRequest, ListMessagesResponse, ) +from .conversation_dataset import ( + ConversationDataset, + ConversationInfo, + CreateConversationDatasetOperationMetadata, + CreateConversationDatasetRequest, + DeleteConversationDatasetOperationMetadata, + DeleteConversationDatasetRequest, + GetConversationDatasetRequest, + ImportConversationDataOperationMetadata, + ImportConversationDataOperationResponse, + ImportConversationDataRequest, + InputConfig, + ListConversationDatasetsRequest, + ListConversationDatasetsResponse, +) from .conversation_event import ConversationEvent +from .conversation_model import ( + ArticleSuggestionModelMetadata, + ConversationModel, + ConversationModelEvaluation, + CreateConversationModelEvaluationOperationMetadata, + CreateConversationModelEvaluationRequest, + CreateConversationModelOperationMetadata, + CreateConversationModelRequest, + DeleteConversationModelOperationMetadata, + DeleteConversationModelRequest, + DeployConversationModelOperationMetadata, + DeployConversationModelRequest, + EvaluationConfig, + GetConversationModelEvaluationRequest, + GetConversationModelRequest, + InputDataset, + ListConversationModelEvaluationsRequest, + ListConversationModelEvaluationsResponse, + ListConversationModelsRequest, + ListConversationModelsResponse, + SmartReplyMetrics, + SmartReplyModelMetadata, + UndeployConversationModelOperationMetadata, + UndeployConversationModelRequest, +) from .conversation_profile import ( AutomatedAgentConfig, + ClearSuggestionFeatureConfigOperationMetadata, + ClearSuggestionFeatureConfigRequest, ConversationProfile, CreateConversationProfileRequest, DeleteConversationProfileRequest, @@ -83,6 +125,8 @@ ListConversationProfilesResponse, LoggingConfig, NotificationConfig, + SetSuggestionFeatureConfigOperationMetadata, + SetSuggestionFeatureConfigRequest, SuggestionFeature, UpdateConversationProfileRequest, ) @@ -91,6 +135,7 @@ DeleteDocumentRequest, Document, ExportDocumentRequest, + ExportOperationMetadata, GetDocumentRequest, ImportDocumentsRequest, ImportDocumentsResponse, @@ -280,8 +325,46 @@ "ListConversationsResponse", "ListMessagesRequest", "ListMessagesResponse", + "ConversationDataset", + "ConversationInfo", + "CreateConversationDatasetOperationMetadata", + "CreateConversationDatasetRequest", + "DeleteConversationDatasetOperationMetadata", + "DeleteConversationDatasetRequest", + "GetConversationDatasetRequest", + "ImportConversationDataOperationMetadata", + "ImportConversationDataOperationResponse", + "ImportConversationDataRequest", + "InputConfig", + "ListConversationDatasetsRequest", + "ListConversationDatasetsResponse", "ConversationEvent", + "ArticleSuggestionModelMetadata", + "ConversationModel", + "ConversationModelEvaluation", + "CreateConversationModelEvaluationOperationMetadata", + "CreateConversationModelEvaluationRequest", + "CreateConversationModelOperationMetadata", + "CreateConversationModelRequest", + "DeleteConversationModelOperationMetadata", + "DeleteConversationModelRequest", + "DeployConversationModelOperationMetadata", + "DeployConversationModelRequest", + "EvaluationConfig", + "GetConversationModelEvaluationRequest", + "GetConversationModelRequest", + "InputDataset", + "ListConversationModelEvaluationsRequest", + "ListConversationModelEvaluationsResponse", + "ListConversationModelsRequest", + "ListConversationModelsResponse", + "SmartReplyMetrics", + "SmartReplyModelMetadata", + "UndeployConversationModelOperationMetadata", + "UndeployConversationModelRequest", "AutomatedAgentConfig", + "ClearSuggestionFeatureConfigOperationMetadata", + "ClearSuggestionFeatureConfigRequest", "ConversationProfile", "CreateConversationProfileRequest", "DeleteConversationProfileRequest", @@ -292,12 +375,15 @@ "ListConversationProfilesResponse", "LoggingConfig", "NotificationConfig", + "SetSuggestionFeatureConfigOperationMetadata", + "SetSuggestionFeatureConfigRequest", "SuggestionFeature", "UpdateConversationProfileRequest", "CreateDocumentRequest", "DeleteDocumentRequest", "Document", "ExportDocumentRequest", + "ExportOperationMetadata", "GetDocumentRequest", "ImportDocumentsRequest", "ImportDocumentsResponse", diff --git a/google/cloud/dialogflow_v2/types/agent.py b/google/cloud/dialogflow_v2/types/agent.py index 049e9e28d..4e7694d3c 100644 --- a/google/cloud/dialogflow_v2/types/agent.py +++ b/google/cloud/dialogflow_v2/types/agent.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -259,6 +259,12 @@ class ExportAgentRequest(proto.Message): export the agent to. The format of this URI must be ``gs:///``. If left unspecified, the serialized agent is returned inline. + + Dialogflow performs a write operation for the Cloud Storage + object on the caller's behalf, so your request + authentication must have write permissions for the object. + For more information, see `Dialogflow access + control `__. """ parent = proto.Field(proto.STRING, number=1,) @@ -309,9 +315,14 @@ class ImportAgentRequest(proto.Message): Required. The project that the agent to import is associated with. Format: ``projects/``. agent_uri (str): - The URI to a Google Cloud Storage file - containing the agent to import. Note: The URI - must start with "gs://". + The URI to a Google Cloud Storage file containing the agent + to import. Note: The URI must start with "gs://". + + Dialogflow performs a read operation for the Cloud Storage + object on the caller's behalf, so your request + authentication must have read permissions for the object. + For more information, see `Dialogflow access + control `__. This field is a member of `oneof`_ ``agent``. agent_content (bytes): @@ -341,9 +352,14 @@ class RestoreAgentRequest(proto.Message): Required. The project that the agent to restore is associated with. Format: ``projects/``. agent_uri (str): - The URI to a Google Cloud Storage file - containing the agent to restore. Note: The URI - must start with "gs://". + The URI to a Google Cloud Storage file containing the agent + to restore. Note: The URI must start with "gs://". + + Dialogflow performs a read operation for the Cloud Storage + object on the caller's behalf, so your request + authentication must have read permissions for the object. + For more information, see `Dialogflow access + control `__. This field is a member of `oneof`_ ``agent``. agent_content (bytes): diff --git a/google/cloud/dialogflow_v2/types/answer_record.py b/google/cloud/dialogflow_v2/types/answer_record.py index dc41aa89c..a6648532e 100644 --- a/google/cloud/dialogflow_v2/types/answer_record.py +++ b/google/cloud/dialogflow_v2/types/answer_record.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/types/audio_config.py b/google/cloud/dialogflow_v2/types/audio_config.py index 410a95640..32528809f 100644 --- a/google/cloud/dialogflow_v2/types/audio_config.py +++ b/google/cloud/dialogflow_v2/types/audio_config.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/types/context.py b/google/cloud/dialogflow_v2/types/context.py index 0b16c4140..3eb28878c 100644 --- a/google/cloud/dialogflow_v2/types/context.py +++ b/google/cloud/dialogflow_v2/types/context.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/types/conversation.py b/google/cloud/dialogflow_v2/types/conversation.py index de71fa2d8..badb27489 100644 --- a/google/cloud/dialogflow_v2/types/conversation.py +++ b/google/cloud/dialogflow_v2/types/conversation.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/types/conversation_dataset.py b/google/cloud/dialogflow_v2/types/conversation_dataset.py new file mode 100644 index 000000000..3e8fc3eee --- /dev/null +++ b/google/cloud/dialogflow_v2/types/conversation_dataset.py @@ -0,0 +1,282 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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 proto # type: ignore + +from google.cloud.dialogflow_v2.types import gcs +from google.protobuf import timestamp_pb2 # type: ignore +from google.rpc import status_pb2 # type: ignore + + +__protobuf__ = proto.module( + package="google.cloud.dialogflow.v2", + manifest={ + "ConversationInfo", + "InputConfig", + "ConversationDataset", + "CreateConversationDatasetRequest", + "GetConversationDatasetRequest", + "ListConversationDatasetsRequest", + "ListConversationDatasetsResponse", + "DeleteConversationDatasetRequest", + "ImportConversationDataRequest", + "ImportConversationDataOperationMetadata", + "ImportConversationDataOperationResponse", + "CreateConversationDatasetOperationMetadata", + "DeleteConversationDatasetOperationMetadata", + }, +) + + +class ConversationInfo(proto.Message): + r"""Represents metadata of a conversation. + + Attributes: + language_code (str): + Optional. The language code of the conversation data within + this dataset. See + https://cloud.google.com/apis/design/standard_fields for + more information. Supports all UTF-8 languages. + """ + + language_code = proto.Field(proto.STRING, number=1,) + + +class InputConfig(proto.Message): + r"""Represents the configuration of importing a set of + conversation files in Google Cloud Storage. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + gcs_source (google.cloud.dialogflow_v2.types.GcsSources): + The Cloud Storage URI has the form gs:////agent*.json. + Wildcards are allowed and will be expanded into all matched + JSON files, which will be read as one conversation per file. + + This field is a member of `oneof`_ ``source``. + """ + + gcs_source = proto.Field( + proto.MESSAGE, number=1, oneof="source", message=gcs.GcsSources, + ) + + +class ConversationDataset(proto.Message): + r"""Represents a conversation dataset that a user imports raw + data into. The data inside ConversationDataset can not be + changed after ImportConversationData finishes (and calling + ImportConversationData on a dataset that already has data is not + allowed). + + Attributes: + name (str): + Output only. ConversationDataset resource name. Format: + ``projects//locations//conversationDatasets/`` + display_name (str): + Required. The display name of the dataset. + Maximum of 64 bytes. + description (str): + Optional. The description of the dataset. + Maximum of 10000 bytes. + create_time (google.protobuf.timestamp_pb2.Timestamp): + Output only. Creation time of this dataset. + input_config (google.cloud.dialogflow_v2.types.InputConfig): + Output only. Input configurations set during + conversation data import. + conversation_info (google.cloud.dialogflow_v2.types.ConversationInfo): + Output only. Metadata set during conversation + data import. + conversation_count (int): + Output only. The number of conversations this + conversation dataset contains. + """ + + name = proto.Field(proto.STRING, number=1,) + display_name = proto.Field(proto.STRING, number=2,) + description = proto.Field(proto.STRING, number=3,) + create_time = proto.Field(proto.MESSAGE, number=4, message=timestamp_pb2.Timestamp,) + input_config = proto.Field(proto.MESSAGE, number=5, message="InputConfig",) + conversation_info = proto.Field( + proto.MESSAGE, number=6, message="ConversationInfo", + ) + conversation_count = proto.Field(proto.INT64, number=7,) + + +class CreateConversationDatasetRequest(proto.Message): + r"""The request message for + [ConversationDatasets.CreateConversationDataset][google.cloud.dialogflow.v2.ConversationDatasets.CreateConversationDataset]. + + Attributes: + parent (str): + Required. The project to create conversation dataset for. + Format: ``projects//locations/`` + conversation_dataset (google.cloud.dialogflow_v2.types.ConversationDataset): + Required. The conversation dataset to create. + """ + + parent = proto.Field(proto.STRING, number=1,) + conversation_dataset = proto.Field( + proto.MESSAGE, number=2, message="ConversationDataset", + ) + + +class GetConversationDatasetRequest(proto.Message): + r"""The request message for + [ConversationDatasets.GetConversationDataset][google.cloud.dialogflow.v2.ConversationDatasets.GetConversationDataset]. + + Attributes: + name (str): + Required. The conversation dataset to retrieve. Format: + ``projects//locations//conversationDatasets/`` + """ + + name = proto.Field(proto.STRING, number=1,) + + +class ListConversationDatasetsRequest(proto.Message): + r"""The request message for + [ConversationDatasets.ListConversationDatasets][google.cloud.dialogflow.v2.ConversationDatasets.ListConversationDatasets]. + + Attributes: + parent (str): + Required. The project and location name to list all + conversation datasets for. Format: + ``projects//locations/`` + page_size (int): + Optional. Maximum number of conversation + datasets to return in a single page. By default + 100 and at most 1000. + page_token (str): + Optional. The next_page_token value returned from a previous + list request. + """ + + parent = proto.Field(proto.STRING, number=1,) + page_size = proto.Field(proto.INT32, number=2,) + page_token = proto.Field(proto.STRING, number=3,) + + +class ListConversationDatasetsResponse(proto.Message): + r"""The response message for + [ConversationDatasets.ListConversationDatasets][google.cloud.dialogflow.v2.ConversationDatasets.ListConversationDatasets]. + + Attributes: + conversation_datasets (Sequence[google.cloud.dialogflow_v2.types.ConversationDataset]): + The list of datasets to return. + next_page_token (str): + The token to use to retrieve the next page of + results, or empty if there are no more results + in the list. + """ + + @property + def raw_page(self): + return self + + conversation_datasets = proto.RepeatedField( + proto.MESSAGE, number=1, message="ConversationDataset", + ) + next_page_token = proto.Field(proto.STRING, number=2,) + + +class DeleteConversationDatasetRequest(proto.Message): + r"""The request message for + [ConversationDatasets.DeleteConversationDataset][google.cloud.dialogflow.v2.ConversationDatasets.DeleteConversationDataset]. + + Attributes: + name (str): + Required. The conversation dataset to delete. Format: + ``projects//locations//conversationDatasets/`` + """ + + name = proto.Field(proto.STRING, number=1,) + + +class ImportConversationDataRequest(proto.Message): + r"""The request message for + [ConversationDatasets.ImportConversationData][google.cloud.dialogflow.v2.ConversationDatasets.ImportConversationData]. + + Attributes: + name (str): + Required. Dataset resource name. Format: + ``projects//locations//conversationDatasets/`` + input_config (google.cloud.dialogflow_v2.types.InputConfig): + Required. Configuration describing where to + import data from. + """ + + name = proto.Field(proto.STRING, number=1,) + input_config = proto.Field(proto.MESSAGE, number=2, message="InputConfig",) + + +class ImportConversationDataOperationMetadata(proto.Message): + r"""Metadata for a + [ConversationDatasets.ImportConversationData][google.cloud.dialogflow.v2.ConversationDatasets.ImportConversationData] + operation. + + Attributes: + conversation_dataset (str): + The resource name of the imported conversation dataset. + Format: + ``projects//locations//conversationDatasets/`` + partial_failures (Sequence[google.rpc.status_pb2.Status]): + Partial failures are failures that don't fail + the whole long running operation, e.g. single + files that couldn't be read. + create_time (google.protobuf.timestamp_pb2.Timestamp): + Timestamp when import conversation data + request was created. The time is measured on + server side. + """ + + conversation_dataset = proto.Field(proto.STRING, number=1,) + partial_failures = proto.RepeatedField( + proto.MESSAGE, number=2, message=status_pb2.Status, + ) + create_time = proto.Field(proto.MESSAGE, number=3, message=timestamp_pb2.Timestamp,) + + +class ImportConversationDataOperationResponse(proto.Message): + r"""Response used for + [ConversationDatasets.ImportConversationData][google.cloud.dialogflow.v2.ConversationDatasets.ImportConversationData] + long running operation. + + Attributes: + conversation_dataset (str): + The resource name of the imported conversation dataset. + Format: + ``projects//locations//conversationDatasets/`` + import_count (int): + Number of conversations imported + successfully. + """ + + conversation_dataset = proto.Field(proto.STRING, number=1,) + import_count = proto.Field(proto.INT32, number=3,) + + +class CreateConversationDatasetOperationMetadata(proto.Message): + r"""Metadata for [ConversationDatasets][CreateConversationDataset]. + """ + + +class DeleteConversationDatasetOperationMetadata(proto.Message): + r"""Metadata for [ConversationDatasets][DeleteConversationDataset]. + """ + + +__all__ = tuple(sorted(__protobuf__.manifest)) diff --git a/google/cloud/dialogflow_v2/types/conversation_event.py b/google/cloud/dialogflow_v2/types/conversation_event.py index 1cfe75115..b6ec1f229 100644 --- a/google/cloud/dialogflow_v2/types/conversation_event.py +++ b/google/cloud/dialogflow_v2/types/conversation_event.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/types/conversation_model.py b/google/cloud/dialogflow_v2/types/conversation_model.py new file mode 100644 index 000000000..b08d98106 --- /dev/null +++ b/google/cloud/dialogflow_v2/types/conversation_model.py @@ -0,0 +1,641 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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 proto # type: ignore + +from google.protobuf import timestamp_pb2 # type: ignore + + +__protobuf__ = proto.module( + package="google.cloud.dialogflow.v2", + manifest={ + "ConversationModel", + "ConversationModelEvaluation", + "EvaluationConfig", + "InputDataset", + "ArticleSuggestionModelMetadata", + "SmartReplyModelMetadata", + "SmartReplyMetrics", + "CreateConversationModelRequest", + "GetConversationModelRequest", + "ListConversationModelsRequest", + "ListConversationModelsResponse", + "DeleteConversationModelRequest", + "DeployConversationModelRequest", + "UndeployConversationModelRequest", + "GetConversationModelEvaluationRequest", + "ListConversationModelEvaluationsRequest", + "ListConversationModelEvaluationsResponse", + "CreateConversationModelEvaluationRequest", + "CreateConversationModelOperationMetadata", + "DeployConversationModelOperationMetadata", + "UndeployConversationModelOperationMetadata", + "DeleteConversationModelOperationMetadata", + "CreateConversationModelEvaluationOperationMetadata", + }, +) + + +class ConversationModel(proto.Message): + r"""Represents a conversation model. + + This message has `oneof`_ fields (mutually exclusive fields). + For each oneof, at most one member field can be set at the same time. + Setting any member of the oneof automatically clears all other + members. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + name (str): + ConversationModel resource name. Format: + ``projects//conversationModels/`` + display_name (str): + Required. The display name of the model. At + most 64 bytes long. + create_time (google.protobuf.timestamp_pb2.Timestamp): + Output only. Creation time of this model. + datasets (Sequence[google.cloud.dialogflow_v2.types.InputDataset]): + Required. Datasets used to create model. + state (google.cloud.dialogflow_v2.types.ConversationModel.State): + Output only. State of the model. A model can + only serve prediction requests after it gets + deployed. + language_code (str): + Language code for the conversation model. If not specified, + the language is en-US. Language at ConversationModel should + be set for all non en-us languages. This should be a + `BCP-47 `__ + language tag. Example: "en-US". + article_suggestion_model_metadata (google.cloud.dialogflow_v2.types.ArticleSuggestionModelMetadata): + Metadata for article suggestion models. + + This field is a member of `oneof`_ ``model_metadata``. + smart_reply_model_metadata (google.cloud.dialogflow_v2.types.SmartReplyModelMetadata): + Metadata for smart reply models. + + This field is a member of `oneof`_ ``model_metadata``. + """ + + class State(proto.Enum): + r"""State of the model.""" + STATE_UNSPECIFIED = 0 + CREATING = 1 + UNDEPLOYED = 2 + DEPLOYING = 3 + DEPLOYED = 4 + UNDEPLOYING = 5 + DELETING = 6 + FAILED = 7 + PENDING = 8 + + class ModelType(proto.Enum): + r"""Model type.""" + MODEL_TYPE_UNSPECIFIED = 0 + SMART_REPLY_DUAL_ENCODER_MODEL = 2 + SMART_REPLY_BERT_MODEL = 6 + + name = proto.Field(proto.STRING, number=1,) + display_name = proto.Field(proto.STRING, number=2,) + create_time = proto.Field(proto.MESSAGE, number=3, message=timestamp_pb2.Timestamp,) + datasets = proto.RepeatedField(proto.MESSAGE, number=4, message="InputDataset",) + state = proto.Field(proto.ENUM, number=7, enum=State,) + language_code = proto.Field(proto.STRING, number=19,) + article_suggestion_model_metadata = proto.Field( + proto.MESSAGE, + number=8, + oneof="model_metadata", + message="ArticleSuggestionModelMetadata", + ) + smart_reply_model_metadata = proto.Field( + proto.MESSAGE, + number=9, + oneof="model_metadata", + message="SmartReplyModelMetadata", + ) + + +class ConversationModelEvaluation(proto.Message): + r"""Represents evaluation result of a conversation model. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + name (str): + The resource name of the evaluation. Format: + ``projects//conversationModels//evaluations/`` + display_name (str): + Optional. The display name of the model + evaluation. At most 64 bytes long. + evaluation_config (google.cloud.dialogflow_v2.types.EvaluationConfig): + Optional. The configuration of the evaluation + task. + create_time (google.protobuf.timestamp_pb2.Timestamp): + Output only. Creation time of this model. + smart_reply_metrics (google.cloud.dialogflow_v2.types.SmartReplyMetrics): + Output only. Only available when model is for + smart reply. + + This field is a member of `oneof`_ ``metrics``. + """ + + name = proto.Field(proto.STRING, number=1,) + display_name = proto.Field(proto.STRING, number=2,) + evaluation_config = proto.Field( + proto.MESSAGE, number=6, message="EvaluationConfig", + ) + create_time = proto.Field(proto.MESSAGE, number=3, message=timestamp_pb2.Timestamp,) + smart_reply_metrics = proto.Field( + proto.MESSAGE, number=5, oneof="metrics", message="SmartReplyMetrics", + ) + + +class EvaluationConfig(proto.Message): + r"""The configuration for model evaluation. + + This message has `oneof`_ fields (mutually exclusive fields). + For each oneof, at most one member field can be set at the same time. + Setting any member of the oneof automatically clears all other + members. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + datasets (Sequence[google.cloud.dialogflow_v2.types.InputDataset]): + Required. Datasets used for evaluation. + smart_reply_config (google.cloud.dialogflow_v2.types.EvaluationConfig.SmartReplyConfig): + Configuration for smart reply model + evalution. + + This field is a member of `oneof`_ ``model_specific_config``. + smart_compose_config (google.cloud.dialogflow_v2.types.EvaluationConfig.SmartComposeConfig): + Configuration for smart compose model + evalution. + + This field is a member of `oneof`_ ``model_specific_config``. + """ + + class SmartReplyConfig(proto.Message): + r"""Smart reply specific configuration for evaluation job. + + Attributes: + allowlist_document (str): + The allowlist document resource name. Format: + ``projects//knowledgeBases//documents/``. + Only used for smart reply model. + max_result_count (int): + Required. The model to be evaluated can return multiple + results with confidence score on each query. These results + will be sorted by the descending order of the scores and we + only keep the first max_result_count results as the final + results to evaluate. + """ + + allowlist_document = proto.Field(proto.STRING, number=1,) + max_result_count = proto.Field(proto.INT32, number=2,) + + class SmartComposeConfig(proto.Message): + r"""Smart compose specific configuration for evaluation job. + + Attributes: + allowlist_document (str): + The allowlist document resource name. Format: + ``projects//knowledgeBases//documents/``. + Only used for smart compose model. + max_result_count (int): + Required. The model to be evaluated can return multiple + results with confidence score on each query. These results + will be sorted by the descending order of the scores and we + only keep the first max_result_count results as the final + results to evaluate. + """ + + allowlist_document = proto.Field(proto.STRING, number=1,) + max_result_count = proto.Field(proto.INT32, number=2,) + + datasets = proto.RepeatedField(proto.MESSAGE, number=3, message="InputDataset",) + smart_reply_config = proto.Field( + proto.MESSAGE, + number=2, + oneof="model_specific_config", + message=SmartReplyConfig, + ) + smart_compose_config = proto.Field( + proto.MESSAGE, + number=4, + oneof="model_specific_config", + message=SmartComposeConfig, + ) + + +class InputDataset(proto.Message): + r"""InputDataset used to create model or do evaluation. + NextID:5 + + Attributes: + dataset (str): + Required. ConversationDataset resource name. Format: + ``projects//locations//conversationDatasets/`` + """ + + dataset = proto.Field(proto.STRING, number=1,) + + +class ArticleSuggestionModelMetadata(proto.Message): + r"""Metadata for article suggestion models. + + Attributes: + training_model_type (google.cloud.dialogflow_v2.types.ConversationModel.ModelType): + Optional. Type of the article suggestion model. If not + provided, model_type is used. + """ + + training_model_type = proto.Field( + proto.ENUM, number=3, enum="ConversationModel.ModelType", + ) + + +class SmartReplyModelMetadata(proto.Message): + r"""Metadata for smart reply models. + + Attributes: + training_model_type (google.cloud.dialogflow_v2.types.ConversationModel.ModelType): + Optional. Type of the smart reply model. If not provided, + model_type is used. + """ + + training_model_type = proto.Field( + proto.ENUM, number=6, enum="ConversationModel.ModelType", + ) + + +class SmartReplyMetrics(proto.Message): + r"""The evaluation metrics for smart reply model. + + Attributes: + allowlist_coverage (float): + Percentage of target participant messages in the evaluation + dataset for which similar messages have appeared at least + once in the allowlist. Should be [0, 1]. + top_n_metrics (Sequence[google.cloud.dialogflow_v2.types.SmartReplyMetrics.TopNMetrics]): + Metrics of top n smart replies, sorted by [TopNMetric.n][]. + conversation_count (int): + Total number of conversations used to + generate this metric. + """ + + class TopNMetrics(proto.Message): + r"""Evaluation metrics when retrieving ``n`` smart replies with the + model. + + Attributes: + n (int): + Number of retrieved smart replies. For example, when ``n`` + is 3, this evaluation contains metrics for when Dialogflow + retrieves 3 smart replies with the model. + recall (float): + Defined as + ``number of queries whose top n smart replies have at least one similar (token match similarity above the defined threshold) reply as the real reply`` + divided by + ``number of queries with at least one smart reply``. Value + ranges from 0.0 to 1.0 inclusive. + """ + + n = proto.Field(proto.INT32, number=1,) + recall = proto.Field(proto.FLOAT, number=2,) + + allowlist_coverage = proto.Field(proto.FLOAT, number=1,) + top_n_metrics = proto.RepeatedField(proto.MESSAGE, number=2, message=TopNMetrics,) + conversation_count = proto.Field(proto.INT64, number=3,) + + +class CreateConversationModelRequest(proto.Message): + r"""The request message for + [ConversationModels.CreateConversationModel][google.cloud.dialogflow.v2.ConversationModels.CreateConversationModel] + + Attributes: + parent (str): + The project to create conversation model for. Format: + ``projects/`` + conversation_model (google.cloud.dialogflow_v2.types.ConversationModel): + Required. The conversation model to create. + """ + + parent = proto.Field(proto.STRING, number=1,) + conversation_model = proto.Field( + proto.MESSAGE, number=2, message="ConversationModel", + ) + + +class GetConversationModelRequest(proto.Message): + r"""The request message for + [ConversationModels.GetConversationModel][google.cloud.dialogflow.v2.ConversationModels.GetConversationModel] + + Attributes: + name (str): + Required. The conversation model to retrieve. Format: + ``projects//conversationModels/`` + """ + + name = proto.Field(proto.STRING, number=1,) + + +class ListConversationModelsRequest(proto.Message): + r"""The request message for + [ConversationModels.ListConversationModels][google.cloud.dialogflow.v2.ConversationModels.ListConversationModels] + + Attributes: + parent (str): + Required. The project to list all conversation models for. + Format: ``projects/`` + page_size (int): + Optional. Maximum number of conversation + models to return in a single page. By default + 100 and at most 1000. + page_token (str): + Optional. The next_page_token value returned from a previous + list request. + """ + + parent = proto.Field(proto.STRING, number=1,) + page_size = proto.Field(proto.INT32, number=2,) + page_token = proto.Field(proto.STRING, number=3,) + + +class ListConversationModelsResponse(proto.Message): + r"""The response message for + [ConversationModels.ListConversationModels][google.cloud.dialogflow.v2.ConversationModels.ListConversationModels] + + Attributes: + conversation_models (Sequence[google.cloud.dialogflow_v2.types.ConversationModel]): + The list of models to return. + next_page_token (str): + Token to retrieve the next page of results, + or empty if there are no more results in the + list. + """ + + @property + def raw_page(self): + return self + + conversation_models = proto.RepeatedField( + proto.MESSAGE, number=1, message="ConversationModel", + ) + next_page_token = proto.Field(proto.STRING, number=2,) + + +class DeleteConversationModelRequest(proto.Message): + r"""The request message for + [ConversationModels.DeleteConversationModel][google.cloud.dialogflow.v2.ConversationModels.DeleteConversationModel] + + Attributes: + name (str): + Required. The conversation model to delete. Format: + ``projects//conversationModels/`` + """ + + name = proto.Field(proto.STRING, number=1,) + + +class DeployConversationModelRequest(proto.Message): + r"""The request message for + [ConversationModels.DeployConversationModel][google.cloud.dialogflow.v2.ConversationModels.DeployConversationModel] + + Attributes: + name (str): + Required. The conversation model to deploy. Format: + ``projects//conversationModels/`` + """ + + name = proto.Field(proto.STRING, number=1,) + + +class UndeployConversationModelRequest(proto.Message): + r"""The request message for + [ConversationModels.UndeployConversationModel][google.cloud.dialogflow.v2.ConversationModels.UndeployConversationModel] + + Attributes: + name (str): + Required. The conversation model to undeploy. Format: + ``projects//conversationModels/`` + """ + + name = proto.Field(proto.STRING, number=1,) + + +class GetConversationModelEvaluationRequest(proto.Message): + r"""The request message for + [ConversationModels.GetConversationModelEvaluation][google.cloud.dialogflow.v2.ConversationModels.GetConversationModelEvaluation] + + Attributes: + name (str): + Required. The conversation model evaluation resource name. + Format: + ``projects//conversationModels//evaluations/`` + """ + + name = proto.Field(proto.STRING, number=1,) + + +class ListConversationModelEvaluationsRequest(proto.Message): + r"""The request message for + [ConversationModels.ListConversationModelEvaluations][google.cloud.dialogflow.v2.ConversationModels.ListConversationModelEvaluations] + + Attributes: + parent (str): + Required. The conversation model resource name. Format: + ``projects//conversationModels/`` + page_size (int): + Optional. Maximum number of evaluations to + return in a single page. By default 100 and at + most 1000. + page_token (str): + Optional. The next_page_token value returned from a previous + list request. + """ + + parent = proto.Field(proto.STRING, number=1,) + page_size = proto.Field(proto.INT32, number=2,) + page_token = proto.Field(proto.STRING, number=3,) + + +class ListConversationModelEvaluationsResponse(proto.Message): + r"""The response message for + [ConversationModels.ListConversationModelEvaluations][google.cloud.dialogflow.v2.ConversationModels.ListConversationModelEvaluations] + + Attributes: + conversation_model_evaluations (Sequence[google.cloud.dialogflow_v2.types.ConversationModelEvaluation]): + The list of evaluations to return. + next_page_token (str): + Token to retrieve the next page of results, + or empty if there are no more results in the + list. + """ + + @property + def raw_page(self): + return self + + conversation_model_evaluations = proto.RepeatedField( + proto.MESSAGE, number=1, message="ConversationModelEvaluation", + ) + next_page_token = proto.Field(proto.STRING, number=2,) + + +class CreateConversationModelEvaluationRequest(proto.Message): + r"""The request message for + [ConversationModels.CreateConversationModelEvaluation][google.cloud.dialogflow.v2.ConversationModels.CreateConversationModelEvaluation] + + Attributes: + parent (str): + Required. The conversation model resource name. Format: + ``projects//locations//conversationModels/`` + conversation_model_evaluation (google.cloud.dialogflow_v2.types.ConversationModelEvaluation): + Required. The conversation model evaluation + to be created. + """ + + parent = proto.Field(proto.STRING, number=1,) + conversation_model_evaluation = proto.Field( + proto.MESSAGE, number=2, message="ConversationModelEvaluation", + ) + + +class CreateConversationModelOperationMetadata(proto.Message): + r"""Metadata for a + [ConversationModels.CreateConversationModel][google.cloud.dialogflow.v2.ConversationModels.CreateConversationModel] + operation. + + Attributes: + conversation_model (str): + The resource name of the conversation model. Format: + ``projects//conversationModels/`` + state (google.cloud.dialogflow_v2.types.CreateConversationModelOperationMetadata.State): + State of CreateConversationModel operation. + create_time (google.protobuf.timestamp_pb2.Timestamp): + Timestamp when the request to create + conversation model is submitted. The time is + measured on server side. + """ + + class State(proto.Enum): + r"""State of CreateConversationModel operation.""" + STATE_UNSPECIFIED = 0 + PENDING = 1 + SUCCEEDED = 2 + FAILED = 3 + CANCELLED = 4 + CANCELLING = 5 + TRAINING = 6 + + conversation_model = proto.Field(proto.STRING, number=1,) + state = proto.Field(proto.ENUM, number=2, enum=State,) + create_time = proto.Field(proto.MESSAGE, number=3, message=timestamp_pb2.Timestamp,) + + +class DeployConversationModelOperationMetadata(proto.Message): + r"""Metadata for a + [ConversationModels.DeployConversationModel][google.cloud.dialogflow.v2.ConversationModels.DeployConversationModel] + operation. + + Attributes: + conversation_model (str): + The resource name of the conversation model. Format: + ``projects//conversationModels/`` + create_time (google.protobuf.timestamp_pb2.Timestamp): + Timestamp when request to deploy conversation + model was submitted. The time is measured on + server side. + """ + + conversation_model = proto.Field(proto.STRING, number=1,) + create_time = proto.Field(proto.MESSAGE, number=3, message=timestamp_pb2.Timestamp,) + + +class UndeployConversationModelOperationMetadata(proto.Message): + r"""Metadata for a + [ConversationModels.UndeployConversationModel][google.cloud.dialogflow.v2.ConversationModels.UndeployConversationModel] + operation. + + Attributes: + conversation_model (str): + The resource name of the conversation model. Format: + ``projects//conversationModels/`` + create_time (google.protobuf.timestamp_pb2.Timestamp): + Timestamp when the request to undeploy + conversation model was submitted. The time is + measured on server side. + """ + + conversation_model = proto.Field(proto.STRING, number=1,) + create_time = proto.Field(proto.MESSAGE, number=3, message=timestamp_pb2.Timestamp,) + + +class DeleteConversationModelOperationMetadata(proto.Message): + r"""Metadata for a + [ConversationModels.DeleteConversationModel][google.cloud.dialogflow.v2.ConversationModels.DeleteConversationModel] + operation. + + Attributes: + conversation_model (str): + The resource name of the conversation model. Format: + ``projects//conversationModels/`` + create_time (google.protobuf.timestamp_pb2.Timestamp): + Timestamp when delete conversation model + request was created. The time is measured on + server side. + """ + + conversation_model = proto.Field(proto.STRING, number=1,) + create_time = proto.Field(proto.MESSAGE, number=3, message=timestamp_pb2.Timestamp,) + + +class CreateConversationModelEvaluationOperationMetadata(proto.Message): + r"""Metadata for a + [ConversationModels.CreateConversationModelEvaluation][google.cloud.dialogflow.v2.ConversationModels.CreateConversationModelEvaluation] + operation. + + Attributes: + conversation_model_evaluation (str): + The resource name of the conversation model. Format: + ``projects//locations//conversationModels//evaluations/`` + conversation_model (str): + The resource name of the conversation model. Format: + ``projects//locations//conversationModels/`` + state (google.cloud.dialogflow_v2.types.CreateConversationModelEvaluationOperationMetadata.State): + State of CreateConversationModel operation. + create_time (google.protobuf.timestamp_pb2.Timestamp): + Timestamp when the request to create + conversation model was submitted. The time is + measured on server side. + """ + + class State(proto.Enum): + r"""State of CreateConversationModel operation.""" + STATE_UNSPECIFIED = 0 + INITIALIZING = 1 + RUNNING = 2 + CANCELLED = 3 + SUCCEEDED = 4 + FAILED = 5 + + conversation_model_evaluation = proto.Field(proto.STRING, number=1,) + conversation_model = proto.Field(proto.STRING, number=4,) + state = proto.Field(proto.ENUM, number=2, enum=State,) + create_time = proto.Field(proto.MESSAGE, number=3, message=timestamp_pb2.Timestamp,) + + +__all__ = tuple(sorted(__protobuf__.manifest)) diff --git a/google/cloud/dialogflow_v2/types/conversation_profile.py b/google/cloud/dialogflow_v2/types/conversation_profile.py index 3803864e3..f46031419 100644 --- a/google/cloud/dialogflow_v2/types/conversation_profile.py +++ b/google/cloud/dialogflow_v2/types/conversation_profile.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -16,6 +16,7 @@ import proto # type: ignore from google.cloud.dialogflow_v2.types import audio_config +from google.cloud.dialogflow_v2.types import participant from google.protobuf import field_mask_pb2 # type: ignore from google.protobuf import timestamp_pb2 # type: ignore @@ -36,6 +37,10 @@ "NotificationConfig", "LoggingConfig", "SuggestionFeature", + "SetSuggestionFeatureConfigRequest", + "ClearSuggestionFeatureConfigRequest", + "SetSuggestionFeatureConfigOperationMetadata", + "ClearSuggestionFeatureConfigOperationMetadata", }, ) @@ -698,11 +703,16 @@ class NotificationConfig(proto.Message): [ConversationEvent][google.cloud.dialogflow.v2.ConversationEvent] protos. - Notification works for phone calls, if this topic either is - in the same project as the conversation or you grant + For telephony integration to receive notification, make sure + either this topic is in the same project as the conversation + or you grant ``service-@gcp-sa-dialogflow.iam.gserviceaccount.com`` the ``Dialogflow Service Agent`` role in the topic project. + For chat integration to receive notification, make sure API + caller has been granted the ``Dialogflow Service Agent`` + role for the topic. + Format: ``projects//locations//topics/``. message_format (google.cloud.dialogflow_v2.types.NotificationConfig.MessageFormat): @@ -755,4 +765,117 @@ class Type(proto.Enum): type_ = proto.Field(proto.ENUM, number=1, enum=Type,) +class SetSuggestionFeatureConfigRequest(proto.Message): + r"""The request message for + [ConversationProfiles.SetSuggestionFeature][]. + + Attributes: + conversation_profile (str): + Required. The Conversation Profile to add or update the + suggestion feature config. Format: + ``projects//locations//conversationProfiles/``. + participant_role (google.cloud.dialogflow_v2.types.Participant.Role): + Required. The participant role to add or update the + suggestion feature config. Only HUMAN_AGENT or END_USER can + be used. + suggestion_feature_config (google.cloud.dialogflow_v2.types.HumanAgentAssistantConfig.SuggestionFeatureConfig): + Required. The suggestion feature config to + add or update. + """ + + conversation_profile = proto.Field(proto.STRING, number=1,) + participant_role = proto.Field( + proto.ENUM, number=2, enum=participant.Participant.Role, + ) + suggestion_feature_config = proto.Field( + proto.MESSAGE, + number=3, + message="HumanAgentAssistantConfig.SuggestionFeatureConfig", + ) + + +class ClearSuggestionFeatureConfigRequest(proto.Message): + r"""The request message for [ConversationProfiles.ClearFeature][]. + + Attributes: + conversation_profile (str): + Required. The Conversation Profile to add or update the + suggestion feature config. Format: + ``projects//locations//conversationProfiles/``. + participant_role (google.cloud.dialogflow_v2.types.Participant.Role): + Required. The participant role to remove the suggestion + feature config. Only HUMAN_AGENT or END_USER can be used. + suggestion_feature_type (google.cloud.dialogflow_v2.types.SuggestionFeature.Type): + Required. The type of the suggestion feature + to remove. + """ + + conversation_profile = proto.Field(proto.STRING, number=1,) + participant_role = proto.Field( + proto.ENUM, number=2, enum=participant.Participant.Role, + ) + suggestion_feature_type = proto.Field( + proto.ENUM, number=3, enum="SuggestionFeature.Type", + ) + + +class SetSuggestionFeatureConfigOperationMetadata(proto.Message): + r"""Metadata for a [ConversationProfile.SetSuggestionFeatureConfig][] + operation. + + Attributes: + conversation_profile (str): + The resource name of the conversation profile. Format: + ``projects//locations//conversationProfiles/`` + participant_role (google.cloud.dialogflow_v2.types.Participant.Role): + Required. The participant role to add or update the + suggestion feature config. Only HUMAN_AGENT or END_USER can + be used. + suggestion_feature_type (google.cloud.dialogflow_v2.types.SuggestionFeature.Type): + Required. The type of the suggestion feature + to add or update. + create_time (google.protobuf.timestamp_pb2.Timestamp): + Timestamp whe the request was created. The + time is measured on server side. + """ + + conversation_profile = proto.Field(proto.STRING, number=1,) + participant_role = proto.Field( + proto.ENUM, number=2, enum=participant.Participant.Role, + ) + suggestion_feature_type = proto.Field( + proto.ENUM, number=3, enum="SuggestionFeature.Type", + ) + create_time = proto.Field(proto.MESSAGE, number=4, message=timestamp_pb2.Timestamp,) + + +class ClearSuggestionFeatureConfigOperationMetadata(proto.Message): + r"""Metadata for a [ConversationProfile.ClearSuggestionFeatureConfig][] + operation. + + Attributes: + conversation_profile (str): + The resource name of the conversation profile. Format: + ``projects//locations//conversationProfiles/`` + participant_role (google.cloud.dialogflow_v2.types.Participant.Role): + Required. The participant role to remove the suggestion + feature config. Only HUMAN_AGENT or END_USER can be used. + suggestion_feature_type (google.cloud.dialogflow_v2.types.SuggestionFeature.Type): + Required. The type of the suggestion feature + to remove. + create_time (google.protobuf.timestamp_pb2.Timestamp): + Timestamp whe the request was created. The + time is measured on server side. + """ + + conversation_profile = proto.Field(proto.STRING, number=1,) + participant_role = proto.Field( + proto.ENUM, number=2, enum=participant.Participant.Role, + ) + suggestion_feature_type = proto.Field( + proto.ENUM, number=3, enum="SuggestionFeature.Type", + ) + create_time = proto.Field(proto.MESSAGE, number=4, message=timestamp_pb2.Timestamp,) + + __all__ = tuple(sorted(__protobuf__.manifest)) diff --git a/google/cloud/dialogflow_v2/types/document.py b/google/cloud/dialogflow_v2/types/document.py index bb606d448..185b5039b 100644 --- a/google/cloud/dialogflow_v2/types/document.py +++ b/google/cloud/dialogflow_v2/types/document.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -36,6 +36,7 @@ "UpdateDocumentRequest", "ReloadDocumentRequest", "ExportDocumentRequest", + "ExportOperationMetadata", "KnowledgeOperationMetadata", }, ) @@ -120,6 +121,9 @@ class Document(proto.Message): storing a document's title, an external URL distinct from the document's content_uri, etc. The max size of a ``key`` or a ``value`` of the metadata is 1024 bytes. + state (google.cloud.dialogflow_v2.types.Document.State): + Output only. The current state of the + document. """ class KnowledgeType(proto.Enum): @@ -128,6 +132,16 @@ class KnowledgeType(proto.Enum): FAQ = 1 EXTRACTIVE_QA = 2 ARTICLE_SUGGESTION = 3 + AGENT_FACING_SMART_REPLY = 4 + + class State(proto.Enum): + r"""Possible states of the document""" + STATE_UNSPECIFIED = 0 + CREATING = 1 + ACTIVE = 2 + UPDATING = 3 + RELOADING = 4 + DELETING = 5 class ReloadStatus(proto.Message): r"""The status of a reload attempt. @@ -155,6 +169,7 @@ class ReloadStatus(proto.Message): enable_auto_reload = proto.Field(proto.BOOL, number=11,) latest_reload_status = proto.Field(proto.MESSAGE, number=12, message=ReloadStatus,) metadata = proto.MapField(proto.STRING, proto.STRING, number=7,) + state = proto.Field(proto.ENUM, number=13, enum=State,) class GetDocumentRequest(proto.Message): @@ -431,10 +446,27 @@ class ExportDocumentRequest(proto.Message): smart_messaging_partial_update = proto.Field(proto.BOOL, number=5,) +class ExportOperationMetadata(proto.Message): + r"""Metadata related to the Export Data Operations (e.g. + ExportDocument). + + Attributes: + exported_gcs_destination (google.cloud.dialogflow_v2.types.GcsDestination): + Cloud Storage file path of the exported data. + """ + + exported_gcs_destination = proto.Field( + proto.MESSAGE, number=1, message=gcs.GcsDestination, + ) + + class KnowledgeOperationMetadata(proto.Message): r"""Metadata in google::longrunning::Operation for Knowledge operations. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: state (google.cloud.dialogflow_v2.types.KnowledgeOperationMetadata.State): Output only. The current state of this @@ -442,6 +474,11 @@ class KnowledgeOperationMetadata(proto.Message): knowledge_base (str): The name of the knowledge base interacted with during the operation. + export_operation_metadata (google.cloud.dialogflow_v2.types.ExportOperationMetadata): + Metadata for the Export Data Operation such + as the destination of export. + + This field is a member of `oneof`_ ``operation_metadata``. """ class State(proto.Enum): @@ -453,6 +490,12 @@ class State(proto.Enum): state = proto.Field(proto.ENUM, number=1, enum=State,) knowledge_base = proto.Field(proto.STRING, number=3,) + export_operation_metadata = proto.Field( + proto.MESSAGE, + number=4, + oneof="operation_metadata", + message="ExportOperationMetadata", + ) __all__ = tuple(sorted(__protobuf__.manifest)) diff --git a/google/cloud/dialogflow_v2/types/entity_type.py b/google/cloud/dialogflow_v2/types/entity_type.py index 7b5edaa63..16a4fd820 100644 --- a/google/cloud/dialogflow_v2/types/entity_type.py +++ b/google/cloud/dialogflow_v2/types/entity_type.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/types/environment.py b/google/cloud/dialogflow_v2/types/environment.py index 63b3872aa..e5b6b9c93 100644 --- a/google/cloud/dialogflow_v2/types/environment.py +++ b/google/cloud/dialogflow_v2/types/environment.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/types/fulfillment.py b/google/cloud/dialogflow_v2/types/fulfillment.py index 8a40dc83b..9c6bd1eff 100644 --- a/google/cloud/dialogflow_v2/types/fulfillment.py +++ b/google/cloud/dialogflow_v2/types/fulfillment.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/types/gcs.py b/google/cloud/dialogflow_v2/types/gcs.py index 4aa2382ed..2d182fa8b 100644 --- a/google/cloud/dialogflow_v2/types/gcs.py +++ b/google/cloud/dialogflow_v2/types/gcs.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/types/human_agent_assistant_event.py b/google/cloud/dialogflow_v2/types/human_agent_assistant_event.py index 74a0afacf..a0fa80415 100644 --- a/google/cloud/dialogflow_v2/types/human_agent_assistant_event.py +++ b/google/cloud/dialogflow_v2/types/human_agent_assistant_event.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/types/intent.py b/google/cloud/dialogflow_v2/types/intent.py index aafe6ca9d..6e2123e94 100644 --- a/google/cloud/dialogflow_v2/types/intent.py +++ b/google/cloud/dialogflow_v2/types/intent.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/types/knowledge_base.py b/google/cloud/dialogflow_v2/types/knowledge_base.py index df6af1645..e65469e5a 100644 --- a/google/cloud/dialogflow_v2/types/knowledge_base.py +++ b/google/cloud/dialogflow_v2/types/knowledge_base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/types/participant.py b/google/cloud/dialogflow_v2/types/participant.py index 7dbcf9376..f51e554c1 100644 --- a/google/cloud/dialogflow_v2/types/participant.py +++ b/google/cloud/dialogflow_v2/types/participant.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/types/session.py b/google/cloud/dialogflow_v2/types/session.py index 077610f3b..de4d29cd5 100644 --- a/google/cloud/dialogflow_v2/types/session.py +++ b/google/cloud/dialogflow_v2/types/session.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -734,6 +734,11 @@ class EventInput(proto.Message): for a list of the currently supported language codes. Note that queries in the same session do not necessarily need to specify the same language. + + This field is ignored when used in the context of a + [WebhookResponse.followup_event_input][google.cloud.dialogflow.v2.WebhookResponse.followup_event_input] + field, because the language was already defined in the + originating detect intent request. """ name = proto.Field(proto.STRING, number=1,) diff --git a/google/cloud/dialogflow_v2/types/session_entity_type.py b/google/cloud/dialogflow_v2/types/session_entity_type.py index 619b7a8c9..7245da002 100644 --- a/google/cloud/dialogflow_v2/types/session_entity_type.py +++ b/google/cloud/dialogflow_v2/types/session_entity_type.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/types/validation_result.py b/google/cloud/dialogflow_v2/types/validation_result.py index e065363b7..ba1469d5c 100644 --- a/google/cloud/dialogflow_v2/types/validation_result.py +++ b/google/cloud/dialogflow_v2/types/validation_result.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/types/version.py b/google/cloud/dialogflow_v2/types/version.py index 6400e0445..b9a986432 100644 --- a/google/cloud/dialogflow_v2/types/version.py +++ b/google/cloud/dialogflow_v2/types/version.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2/types/webhook.py b/google/cloud/dialogflow_v2/types/webhook.py index 6dd218aa5..03ee3afe4 100644 --- a/google/cloud/dialogflow_v2/types/webhook.py +++ b/google/cloud/dialogflow_v2/types/webhook.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/__init__.py b/google/cloud/dialogflow_v2beta1/__init__.py index 5c390d8e9..68017ce13 100644 --- a/google/cloud/dialogflow_v2beta1/__init__.py +++ b/google/cloud/dialogflow_v2beta1/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/__init__.py b/google/cloud/dialogflow_v2beta1/services/__init__.py index 4de65971c..e8e1c3845 100644 --- a/google/cloud/dialogflow_v2beta1/services/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/agents/__init__.py b/google/cloud/dialogflow_v2beta1/services/agents/__init__.py index 0501fa947..db2a1a7d2 100644 --- a/google/cloud/dialogflow_v2beta1/services/agents/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/agents/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/agents/async_client.py b/google/cloud/dialogflow_v2beta1/services/agents/async_client.py index 65e38affd..edbfa0ecf 100644 --- a/google/cloud/dialogflow_v2beta1/services/agents/async_client.py +++ b/google/cloud/dialogflow_v2beta1/services/agents/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -211,7 +211,7 @@ async def get_agent( ) -> agent.Agent: r"""Retrieves the specified agent. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -316,7 +316,7 @@ async def set_agent( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -418,7 +418,7 @@ async def delete_agent( ) -> None: r"""Deletes the specified agent. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -505,7 +505,7 @@ async def search_agents( Sub-Collections `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -621,7 +621,7 @@ async def train_agent( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -748,7 +748,7 @@ async def export_agent( [ExportAgentResponse][google.cloud.dialogflow.v2beta1.ExportAgentResponse] - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -884,7 +884,7 @@ async def import_agent( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -1006,7 +1006,7 @@ async def restore_agent( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -1103,7 +1103,7 @@ async def get_validation_result( automatically when training is completed. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/agents/client.py b/google/cloud/dialogflow_v2beta1/services/agents/client.py index 8ff2bf88f..ab84c91ed 100644 --- a/google/cloud/dialogflow_v2beta1/services/agents/client.py +++ b/google/cloud/dialogflow_v2beta1/services/agents/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -411,8 +411,7 @@ def get_agent( ) -> agent.Agent: r"""Retrieves the specified agent. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -517,8 +516,7 @@ def set_agent( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -620,8 +618,7 @@ def delete_agent( ) -> None: r"""Deletes the specified agent. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -708,8 +705,7 @@ def search_agents( Sub-Collections `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -825,8 +821,7 @@ def train_agent( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -953,8 +948,7 @@ def export_agent( [ExportAgentResponse][google.cloud.dialogflow.v2beta1.ExportAgentResponse] - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -1090,8 +1084,7 @@ def import_agent( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -1214,8 +1207,7 @@ def restore_agent( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -1313,8 +1305,7 @@ def get_validation_result( automatically when training is completed. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/agents/pagers.py b/google/cloud/dialogflow_v2beta1/services/agents/pagers.py index ee5753a3d..ff8641824 100644 --- a/google/cloud/dialogflow_v2beta1/services/agents/pagers.py +++ b/google/cloud/dialogflow_v2beta1/services/agents/pagers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/agents/transports/__init__.py b/google/cloud/dialogflow_v2beta1/services/agents/transports/__init__.py index ceadcd3aa..703a3046b 100644 --- a/google/cloud/dialogflow_v2beta1/services/agents/transports/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/agents/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/agents/transports/base.py b/google/cloud/dialogflow_v2beta1/services/agents/transports/base.py index 5239c1050..1a7ac1c19 100644 --- a/google/cloud/dialogflow_v2beta1/services/agents/transports/base.py +++ b/google/cloud/dialogflow_v2beta1/services/agents/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/agents/transports/grpc.py b/google/cloud/dialogflow_v2beta1/services/agents/transports/grpc.py index 22c87c32a..2e49fc3ba 100644 --- a/google/cloud/dialogflow_v2beta1/services/agents/transports/grpc.py +++ b/google/cloud/dialogflow_v2beta1/services/agents/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/agents/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2beta1/services/agents/transports/grpc_asyncio.py index 09b44e41b..72c19d00f 100644 --- a/google/cloud/dialogflow_v2beta1/services/agents/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2beta1/services/agents/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/answer_records/__init__.py b/google/cloud/dialogflow_v2beta1/services/answer_records/__init__.py index 25960120e..6fb08a96f 100644 --- a/google/cloud/dialogflow_v2beta1/services/answer_records/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/answer_records/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/answer_records/async_client.py b/google/cloud/dialogflow_v2beta1/services/answer_records/async_client.py index 576f3f77a..4bda53685 100644 --- a/google/cloud/dialogflow_v2beta1/services/answer_records/async_client.py +++ b/google/cloud/dialogflow_v2beta1/services/answer_records/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -221,7 +221,7 @@ async def get_answer_record( Retrieves a specific answer record. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -327,7 +327,7 @@ async def list_answer_records( specified project in reverse chronological order. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -428,7 +428,7 @@ async def update_answer_record( ) -> gcd_answer_record.AnswerRecord: r"""Updates the specified answer record. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/answer_records/client.py b/google/cloud/dialogflow_v2beta1/services/answer_records/client.py index e9988d1c4..33dad169b 100644 --- a/google/cloud/dialogflow_v2beta1/services/answer_records/client.py +++ b/google/cloud/dialogflow_v2beta1/services/answer_records/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -413,8 +413,7 @@ def get_answer_record( Retrieves a specific answer record. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -520,8 +519,7 @@ def list_answer_records( specified project in reverse chronological order. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -622,8 +620,7 @@ def update_answer_record( ) -> gcd_answer_record.AnswerRecord: r"""Updates the specified answer record. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/answer_records/pagers.py b/google/cloud/dialogflow_v2beta1/services/answer_records/pagers.py index 252faa0c2..ea984e470 100644 --- a/google/cloud/dialogflow_v2beta1/services/answer_records/pagers.py +++ b/google/cloud/dialogflow_v2beta1/services/answer_records/pagers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/answer_records/transports/__init__.py b/google/cloud/dialogflow_v2beta1/services/answer_records/transports/__init__.py index e97f4f57d..889c9420d 100644 --- a/google/cloud/dialogflow_v2beta1/services/answer_records/transports/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/answer_records/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/answer_records/transports/base.py b/google/cloud/dialogflow_v2beta1/services/answer_records/transports/base.py index e6d672be3..b35677491 100644 --- a/google/cloud/dialogflow_v2beta1/services/answer_records/transports/base.py +++ b/google/cloud/dialogflow_v2beta1/services/answer_records/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/answer_records/transports/grpc.py b/google/cloud/dialogflow_v2beta1/services/answer_records/transports/grpc.py index 1b3b88c72..5f485de8c 100644 --- a/google/cloud/dialogflow_v2beta1/services/answer_records/transports/grpc.py +++ b/google/cloud/dialogflow_v2beta1/services/answer_records/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/answer_records/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2beta1/services/answer_records/transports/grpc_asyncio.py index 80ebd5ded..a37eb7035 100644 --- a/google/cloud/dialogflow_v2beta1/services/answer_records/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2beta1/services/answer_records/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/contexts/__init__.py b/google/cloud/dialogflow_v2beta1/services/contexts/__init__.py index 4c5791dcf..4f3cbf869 100644 --- a/google/cloud/dialogflow_v2beta1/services/contexts/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/contexts/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/contexts/async_client.py b/google/cloud/dialogflow_v2beta1/services/contexts/async_client.py index 448356e4a..4d66e3968 100644 --- a/google/cloud/dialogflow_v2beta1/services/contexts/async_client.py +++ b/google/cloud/dialogflow_v2beta1/services/contexts/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -212,7 +212,7 @@ async def list_contexts( session. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -322,7 +322,7 @@ async def get_context( ) -> context.Context: r"""Retrieves the specified context. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -442,7 +442,7 @@ async def create_context( context. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -567,7 +567,7 @@ async def update_context( ) -> gcd_context.Context: r"""Updates the specified context. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -682,7 +682,7 @@ async def delete_context( ) -> None: r"""Deletes the specified context. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -772,7 +772,7 @@ async def delete_all_contexts( ) -> None: r"""Deletes all active contexts in the specified session. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/contexts/client.py b/google/cloud/dialogflow_v2beta1/services/contexts/client.py index 478e49416..2c60baffb 100644 --- a/google/cloud/dialogflow_v2beta1/services/contexts/client.py +++ b/google/cloud/dialogflow_v2beta1/services/contexts/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -415,8 +415,7 @@ def list_contexts( session. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -526,8 +525,7 @@ def get_context( ) -> context.Context: r"""Retrieves the specified context. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -647,8 +645,7 @@ def create_context( context. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -773,8 +770,7 @@ def update_context( ) -> gcd_context.Context: r"""Updates the specified context. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -889,8 +885,7 @@ def delete_context( ) -> None: r"""Deletes the specified context. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -980,8 +975,7 @@ def delete_all_contexts( ) -> None: r"""Deletes all active contexts in the specified session. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/contexts/pagers.py b/google/cloud/dialogflow_v2beta1/services/contexts/pagers.py index f4c2f6c32..49b845fb4 100644 --- a/google/cloud/dialogflow_v2beta1/services/contexts/pagers.py +++ b/google/cloud/dialogflow_v2beta1/services/contexts/pagers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/contexts/transports/__init__.py b/google/cloud/dialogflow_v2beta1/services/contexts/transports/__init__.py index d25eca3aa..412097665 100644 --- a/google/cloud/dialogflow_v2beta1/services/contexts/transports/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/contexts/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/contexts/transports/base.py b/google/cloud/dialogflow_v2beta1/services/contexts/transports/base.py index 000467d5a..0b2294f3d 100644 --- a/google/cloud/dialogflow_v2beta1/services/contexts/transports/base.py +++ b/google/cloud/dialogflow_v2beta1/services/contexts/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/contexts/transports/grpc.py b/google/cloud/dialogflow_v2beta1/services/contexts/transports/grpc.py index 18e2099b7..4ddd623e3 100644 --- a/google/cloud/dialogflow_v2beta1/services/contexts/transports/grpc.py +++ b/google/cloud/dialogflow_v2beta1/services/contexts/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/contexts/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2beta1/services/contexts/transports/grpc_asyncio.py index d05a11241..31d84e674 100644 --- a/google/cloud/dialogflow_v2beta1/services/contexts/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2beta1/services/contexts/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/conversation_profiles/__init__.py b/google/cloud/dialogflow_v2beta1/services/conversation_profiles/__init__.py index c0cb1cd03..ba1e4487d 100644 --- a/google/cloud/dialogflow_v2beta1/services/conversation_profiles/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/conversation_profiles/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/conversation_profiles/async_client.py b/google/cloud/dialogflow_v2beta1/services/conversation_profiles/async_client.py index 1485f099c..0938c8deb 100644 --- a/google/cloud/dialogflow_v2beta1/services/conversation_profiles/async_client.py +++ b/google/cloud/dialogflow_v2beta1/services/conversation_profiles/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -250,7 +250,7 @@ async def list_conversation_profiles( specified project. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -351,7 +351,7 @@ async def get_conversation_profile( ) -> conversation_profile.ConversationProfile: r"""Retrieves the specified conversation profile. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -452,7 +452,7 @@ async def create_conversation_profile( API. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -566,7 +566,7 @@ async def update_conversation_profile( API. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -672,7 +672,7 @@ async def delete_conversation_profile( ) -> None: r"""Deletes the specified conversation profile. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/conversation_profiles/client.py b/google/cloud/dialogflow_v2beta1/services/conversation_profiles/client.py index 120f0b8f8..83a15c5d7 100644 --- a/google/cloud/dialogflow_v2beta1/services/conversation_profiles/client.py +++ b/google/cloud/dialogflow_v2beta1/services/conversation_profiles/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -502,8 +502,7 @@ def list_conversation_profiles( specified project. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -608,8 +607,7 @@ def get_conversation_profile( ) -> conversation_profile.ConversationProfile: r"""Retrieves the specified conversation profile. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -710,8 +708,7 @@ def create_conversation_profile( API. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -829,8 +826,7 @@ def update_conversation_profile( API. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -940,8 +936,7 @@ def delete_conversation_profile( ) -> None: r"""Deletes the specified conversation profile. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/conversation_profiles/pagers.py b/google/cloud/dialogflow_v2beta1/services/conversation_profiles/pagers.py index 883594f06..591a85aea 100644 --- a/google/cloud/dialogflow_v2beta1/services/conversation_profiles/pagers.py +++ b/google/cloud/dialogflow_v2beta1/services/conversation_profiles/pagers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/conversation_profiles/transports/__init__.py b/google/cloud/dialogflow_v2beta1/services/conversation_profiles/transports/__init__.py index f2a4e2203..75117ebe9 100644 --- a/google/cloud/dialogflow_v2beta1/services/conversation_profiles/transports/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/conversation_profiles/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/conversation_profiles/transports/base.py b/google/cloud/dialogflow_v2beta1/services/conversation_profiles/transports/base.py index 2baa96bb6..3845f1da3 100644 --- a/google/cloud/dialogflow_v2beta1/services/conversation_profiles/transports/base.py +++ b/google/cloud/dialogflow_v2beta1/services/conversation_profiles/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/conversation_profiles/transports/grpc.py b/google/cloud/dialogflow_v2beta1/services/conversation_profiles/transports/grpc.py index cc20e4431..aa793de83 100644 --- a/google/cloud/dialogflow_v2beta1/services/conversation_profiles/transports/grpc.py +++ b/google/cloud/dialogflow_v2beta1/services/conversation_profiles/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/conversation_profiles/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2beta1/services/conversation_profiles/transports/grpc_asyncio.py index 6f13d7e85..2dc97503c 100644 --- a/google/cloud/dialogflow_v2beta1/services/conversation_profiles/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2beta1/services/conversation_profiles/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/conversations/__init__.py b/google/cloud/dialogflow_v2beta1/services/conversations/__init__.py index f6f6b90ff..3869363a8 100644 --- a/google/cloud/dialogflow_v2beta1/services/conversations/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/conversations/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/conversations/async_client.py b/google/cloud/dialogflow_v2beta1/services/conversations/async_client.py index aa18baff3..1d59211fa 100644 --- a/google/cloud/dialogflow_v2beta1/services/conversations/async_client.py +++ b/google/cloud/dialogflow_v2beta1/services/conversations/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -248,7 +248,7 @@ async def create_conversation( is triggered, conversation will transfer to Assist Stage. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -357,7 +357,7 @@ async def list_conversations( specified project. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -458,7 +458,7 @@ async def get_conversation( ) -> conversation.Conversation: r"""Retrieves the specific conversation. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -556,7 +556,7 @@ async def complete_conversation( days. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -655,7 +655,7 @@ async def batch_create_messages( conversation. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -756,7 +756,7 @@ async def list_messages( and empty page_token. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/conversations/client.py b/google/cloud/dialogflow_v2beta1/services/conversations/client.py index 7b34940df..ae9baad8b 100644 --- a/google/cloud/dialogflow_v2beta1/services/conversations/client.py +++ b/google/cloud/dialogflow_v2beta1/services/conversations/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -466,8 +466,7 @@ def create_conversation( is triggered, conversation will transfer to Assist Stage. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -576,8 +575,7 @@ def list_conversations( specified project. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -678,8 +676,7 @@ def get_conversation( ) -> conversation.Conversation: r"""Retrieves the specific conversation. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -777,8 +774,7 @@ def complete_conversation( days. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -877,8 +873,7 @@ def batch_create_messages( conversation. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -979,8 +974,7 @@ def list_messages( and empty page_token. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/conversations/pagers.py b/google/cloud/dialogflow_v2beta1/services/conversations/pagers.py index 5c21ec71d..0208e3a0b 100644 --- a/google/cloud/dialogflow_v2beta1/services/conversations/pagers.py +++ b/google/cloud/dialogflow_v2beta1/services/conversations/pagers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/conversations/transports/__init__.py b/google/cloud/dialogflow_v2beta1/services/conversations/transports/__init__.py index 2989914f7..f94552209 100644 --- a/google/cloud/dialogflow_v2beta1/services/conversations/transports/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/conversations/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/conversations/transports/base.py b/google/cloud/dialogflow_v2beta1/services/conversations/transports/base.py index 772f62656..ea7404dd1 100644 --- a/google/cloud/dialogflow_v2beta1/services/conversations/transports/base.py +++ b/google/cloud/dialogflow_v2beta1/services/conversations/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/conversations/transports/grpc.py b/google/cloud/dialogflow_v2beta1/services/conversations/transports/grpc.py index d32e5370c..e1edcb826 100644 --- a/google/cloud/dialogflow_v2beta1/services/conversations/transports/grpc.py +++ b/google/cloud/dialogflow_v2beta1/services/conversations/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/conversations/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2beta1/services/conversations/transports/grpc_asyncio.py index 8a006a272..6e14ab27c 100644 --- a/google/cloud/dialogflow_v2beta1/services/conversations/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2beta1/services/conversations/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/documents/__init__.py b/google/cloud/dialogflow_v2beta1/services/documents/__init__.py index f610c36b0..26fc1b454 100644 --- a/google/cloud/dialogflow_v2beta1/services/documents/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/documents/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/documents/async_client.py b/google/cloud/dialogflow_v2beta1/services/documents/async_client.py index 6899be334..7a2f697eb 100644 --- a/google/cloud/dialogflow_v2beta1/services/documents/async_client.py +++ b/google/cloud/dialogflow_v2beta1/services/documents/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -219,7 +219,7 @@ async def list_documents( is deprecated; only use ``projects.knowledgeBases.documents``. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -324,7 +324,7 @@ async def get_document( is deprecated; only use ``projects.knowledgeBases.documents``. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -436,7 +436,7 @@ async def create_document( is deprecated; only use ``projects.knowledgeBases.documents``. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -576,7 +576,7 @@ async def import_documents( [ImportDocumentsResponse][google.cloud.dialogflow.v2beta1.ImportDocumentsResponse] - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -684,7 +684,7 @@ async def delete_document( is deprecated; only use ``projects.knowledgeBases.documents``. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -814,7 +814,7 @@ async def update_document( is deprecated; only use ``projects.knowledgeBases.documents``. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -966,7 +966,7 @@ async def reload_document( is deprecated; only use ``projects.knowledgeBases.documents``. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/documents/client.py b/google/cloud/dialogflow_v2beta1/services/documents/client.py index 2eed96b09..cbe42d85f 100644 --- a/google/cloud/dialogflow_v2beta1/services/documents/client.py +++ b/google/cloud/dialogflow_v2beta1/services/documents/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -420,8 +420,7 @@ def list_documents( is deprecated; only use ``projects.knowledgeBases.documents``. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -526,8 +525,7 @@ def get_document( is deprecated; only use ``projects.knowledgeBases.documents``. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -639,8 +637,7 @@ def create_document( is deprecated; only use ``projects.knowledgeBases.documents``. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -780,8 +777,7 @@ def import_documents( [ImportDocumentsResponse][google.cloud.dialogflow.v2beta1.ImportDocumentsResponse] - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -890,8 +886,7 @@ def delete_document( is deprecated; only use ``projects.knowledgeBases.documents``. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -1021,8 +1016,7 @@ def update_document( is deprecated; only use ``projects.knowledgeBases.documents``. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -1174,8 +1168,7 @@ def reload_document( is deprecated; only use ``projects.knowledgeBases.documents``. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/documents/pagers.py b/google/cloud/dialogflow_v2beta1/services/documents/pagers.py index 3b87f0cc5..73ad5328e 100644 --- a/google/cloud/dialogflow_v2beta1/services/documents/pagers.py +++ b/google/cloud/dialogflow_v2beta1/services/documents/pagers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/documents/transports/__init__.py b/google/cloud/dialogflow_v2beta1/services/documents/transports/__init__.py index 5d4948aa0..2e363c1e2 100644 --- a/google/cloud/dialogflow_v2beta1/services/documents/transports/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/documents/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/documents/transports/base.py b/google/cloud/dialogflow_v2beta1/services/documents/transports/base.py index 9081ec786..9f7519a76 100644 --- a/google/cloud/dialogflow_v2beta1/services/documents/transports/base.py +++ b/google/cloud/dialogflow_v2beta1/services/documents/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/documents/transports/grpc.py b/google/cloud/dialogflow_v2beta1/services/documents/transports/grpc.py index a266ed6a4..4ab99778e 100644 --- a/google/cloud/dialogflow_v2beta1/services/documents/transports/grpc.py +++ b/google/cloud/dialogflow_v2beta1/services/documents/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/documents/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2beta1/services/documents/transports/grpc_asyncio.py index cd4dfdaeb..c7267088b 100644 --- a/google/cloud/dialogflow_v2beta1/services/documents/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2beta1/services/documents/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/entity_types/__init__.py b/google/cloud/dialogflow_v2beta1/services/entity_types/__init__.py index 77cd53e9c..b0093027a 100644 --- a/google/cloud/dialogflow_v2beta1/services/entity_types/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/entity_types/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/entity_types/async_client.py b/google/cloud/dialogflow_v2beta1/services/entity_types/async_client.py index ec102b0ed..e2bc2d174 100644 --- a/google/cloud/dialogflow_v2beta1/services/entity_types/async_client.py +++ b/google/cloud/dialogflow_v2beta1/services/entity_types/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -220,7 +220,7 @@ async def list_entity_types( agent. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -336,7 +336,7 @@ async def get_entity_type( ) -> entity_type.EntityType: r"""Retrieves the specified entity type. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -461,7 +461,7 @@ async def create_entity_type( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -598,7 +598,7 @@ async def update_entity_type( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -731,7 +731,7 @@ async def delete_entity_type( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -828,7 +828,7 @@ async def batch_update_entity_types( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -930,7 +930,7 @@ async def batch_delete_entity_types( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -1075,7 +1075,7 @@ async def batch_create_entities( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -1235,7 +1235,7 @@ async def batch_update_entities( message `__ - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -1395,7 +1395,7 @@ async def batch_delete_entities( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/entity_types/client.py b/google/cloud/dialogflow_v2beta1/services/entity_types/client.py index 96365a378..5d8919aef 100644 --- a/google/cloud/dialogflow_v2beta1/services/entity_types/client.py +++ b/google/cloud/dialogflow_v2beta1/services/entity_types/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -418,8 +418,7 @@ def list_entity_types( agent. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -535,8 +534,7 @@ def get_entity_type( ) -> entity_type.EntityType: r"""Retrieves the specified entity type. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -661,8 +659,7 @@ def create_entity_type( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -799,8 +796,7 @@ def update_entity_type( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -933,8 +929,7 @@ def delete_entity_type( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -1031,8 +1026,7 @@ def batch_update_entity_types( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -1137,8 +1131,7 @@ def batch_delete_entity_types( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -1285,8 +1278,7 @@ def batch_create_entities( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -1446,8 +1438,7 @@ def batch_update_entities( message `__ - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -1607,8 +1598,7 @@ def batch_delete_entities( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/entity_types/pagers.py b/google/cloud/dialogflow_v2beta1/services/entity_types/pagers.py index 73baab3fb..23bb0ea60 100644 --- a/google/cloud/dialogflow_v2beta1/services/entity_types/pagers.py +++ b/google/cloud/dialogflow_v2beta1/services/entity_types/pagers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/entity_types/transports/__init__.py b/google/cloud/dialogflow_v2beta1/services/entity_types/transports/__init__.py index 07ea82e1b..2a22d6640 100644 --- a/google/cloud/dialogflow_v2beta1/services/entity_types/transports/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/entity_types/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/entity_types/transports/base.py b/google/cloud/dialogflow_v2beta1/services/entity_types/transports/base.py index 49fff8629..9cbf1684a 100644 --- a/google/cloud/dialogflow_v2beta1/services/entity_types/transports/base.py +++ b/google/cloud/dialogflow_v2beta1/services/entity_types/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/entity_types/transports/grpc.py b/google/cloud/dialogflow_v2beta1/services/entity_types/transports/grpc.py index 8c4aa57f0..9ba8ad86e 100644 --- a/google/cloud/dialogflow_v2beta1/services/entity_types/transports/grpc.py +++ b/google/cloud/dialogflow_v2beta1/services/entity_types/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/entity_types/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2beta1/services/entity_types/transports/grpc_asyncio.py index 5b306d84a..77f2bdae6 100644 --- a/google/cloud/dialogflow_v2beta1/services/entity_types/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2beta1/services/entity_types/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/environments/__init__.py b/google/cloud/dialogflow_v2beta1/services/environments/__init__.py index 0c2be9484..228337657 100644 --- a/google/cloud/dialogflow_v2beta1/services/environments/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/environments/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/environments/async_client.py b/google/cloud/dialogflow_v2beta1/services/environments/async_client.py index 3b2a63913..d8bd28de1 100644 --- a/google/cloud/dialogflow_v2beta1/services/environments/async_client.py +++ b/google/cloud/dialogflow_v2beta1/services/environments/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -219,7 +219,7 @@ async def list_environments( specified agent. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -321,7 +321,7 @@ async def get_environment( ) -> environment.Environment: r"""Retrieves the specified agent environment. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -408,7 +408,7 @@ async def create_environment( ) -> environment.Environment: r"""Creates an agent environment. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -509,7 +509,7 @@ async def update_environment( draft to a version before calling this function. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -597,7 +597,7 @@ async def delete_environment( ) -> None: r"""Deletes the specified agent environment. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -655,7 +655,7 @@ async def get_environment_history( ) -> pagers.GetEnvironmentHistoryAsyncPager: r"""Gets the history of the specified environment. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/environments/client.py b/google/cloud/dialogflow_v2beta1/services/environments/client.py index 09c207ba8..7bc91d9d9 100644 --- a/google/cloud/dialogflow_v2beta1/services/environments/client.py +++ b/google/cloud/dialogflow_v2beta1/services/environments/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -439,8 +439,7 @@ def list_environments( specified agent. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -542,8 +541,7 @@ def get_environment( ) -> environment.Environment: r"""Retrieves the specified agent environment. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -631,8 +629,7 @@ def create_environment( ) -> environment.Environment: r"""Creates an agent environment. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -734,8 +731,7 @@ def update_environment( draft to a version before calling this function. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -824,8 +820,7 @@ def delete_environment( ) -> None: r"""Deletes the specified agent environment. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -884,8 +879,7 @@ def get_environment_history( ) -> pagers.GetEnvironmentHistoryPager: r"""Gets the history of the specified environment. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/environments/pagers.py b/google/cloud/dialogflow_v2beta1/services/environments/pagers.py index 3f547999f..571e9d93b 100644 --- a/google/cloud/dialogflow_v2beta1/services/environments/pagers.py +++ b/google/cloud/dialogflow_v2beta1/services/environments/pagers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/environments/transports/__init__.py b/google/cloud/dialogflow_v2beta1/services/environments/transports/__init__.py index c72efee48..0ecefb612 100644 --- a/google/cloud/dialogflow_v2beta1/services/environments/transports/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/environments/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/environments/transports/base.py b/google/cloud/dialogflow_v2beta1/services/environments/transports/base.py index c70b2fb6e..0bfdf8a66 100644 --- a/google/cloud/dialogflow_v2beta1/services/environments/transports/base.py +++ b/google/cloud/dialogflow_v2beta1/services/environments/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/environments/transports/grpc.py b/google/cloud/dialogflow_v2beta1/services/environments/transports/grpc.py index 39fbb331f..ef8b085e9 100644 --- a/google/cloud/dialogflow_v2beta1/services/environments/transports/grpc.py +++ b/google/cloud/dialogflow_v2beta1/services/environments/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/environments/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2beta1/services/environments/transports/grpc_asyncio.py index 20cbe81e2..f1c4283f4 100644 --- a/google/cloud/dialogflow_v2beta1/services/environments/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2beta1/services/environments/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/fulfillments/__init__.py b/google/cloud/dialogflow_v2beta1/services/fulfillments/__init__.py index 6bade52dd..abd353a6d 100644 --- a/google/cloud/dialogflow_v2beta1/services/fulfillments/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/fulfillments/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/fulfillments/async_client.py b/google/cloud/dialogflow_v2beta1/services/fulfillments/async_client.py index 4e186d6a6..920433611 100644 --- a/google/cloud/dialogflow_v2beta1/services/fulfillments/async_client.py +++ b/google/cloud/dialogflow_v2beta1/services/fulfillments/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -212,7 +212,7 @@ async def get_fulfillment( ) -> fulfillment.Fulfillment: r"""Retrieves the fulfillment. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -316,7 +316,7 @@ async def update_fulfillment( ) -> gcd_fulfillment.Fulfillment: r"""Updates the fulfillment. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/fulfillments/client.py b/google/cloud/dialogflow_v2beta1/services/fulfillments/client.py index cdfc36bf0..6efafc510 100644 --- a/google/cloud/dialogflow_v2beta1/services/fulfillments/client.py +++ b/google/cloud/dialogflow_v2beta1/services/fulfillments/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -406,8 +406,7 @@ def get_fulfillment( ) -> fulfillment.Fulfillment: r"""Retrieves the fulfillment. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -511,8 +510,7 @@ def update_fulfillment( ) -> gcd_fulfillment.Fulfillment: r"""Updates the fulfillment. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/fulfillments/transports/__init__.py b/google/cloud/dialogflow_v2beta1/services/fulfillments/transports/__init__.py index d822b662b..425287bb0 100644 --- a/google/cloud/dialogflow_v2beta1/services/fulfillments/transports/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/fulfillments/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/fulfillments/transports/base.py b/google/cloud/dialogflow_v2beta1/services/fulfillments/transports/base.py index 40d6c6f17..5724fee71 100644 --- a/google/cloud/dialogflow_v2beta1/services/fulfillments/transports/base.py +++ b/google/cloud/dialogflow_v2beta1/services/fulfillments/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/fulfillments/transports/grpc.py b/google/cloud/dialogflow_v2beta1/services/fulfillments/transports/grpc.py index dbf30686e..602e04419 100644 --- a/google/cloud/dialogflow_v2beta1/services/fulfillments/transports/grpc.py +++ b/google/cloud/dialogflow_v2beta1/services/fulfillments/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/fulfillments/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2beta1/services/fulfillments/transports/grpc_asyncio.py index 1ad5a7b19..dbda3e3b6 100644 --- a/google/cloud/dialogflow_v2beta1/services/fulfillments/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2beta1/services/fulfillments/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/intents/__init__.py b/google/cloud/dialogflow_v2beta1/services/intents/__init__.py index 5a2c263cf..283553c4a 100644 --- a/google/cloud/dialogflow_v2beta1/services/intents/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/intents/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/intents/async_client.py b/google/cloud/dialogflow_v2beta1/services/intents/async_client.py index 4ca5d52ee..804021970 100644 --- a/google/cloud/dialogflow_v2beta1/services/intents/async_client.py +++ b/google/cloud/dialogflow_v2beta1/services/intents/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -219,7 +219,7 @@ async def list_intents( agent. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -341,7 +341,7 @@ async def get_intent( ) -> intent.Intent: r"""Retrieves the specified intent. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -461,7 +461,7 @@ async def create_intent( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -593,7 +593,7 @@ async def update_intent( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -722,7 +722,7 @@ async def delete_intent( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -825,7 +825,7 @@ async def batch_update_intents( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -973,7 +973,7 @@ async def batch_delete_intents( documentation `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/intents/client.py b/google/cloud/dialogflow_v2beta1/services/intents/client.py index a199ad32f..af7d12e6c 100644 --- a/google/cloud/dialogflow_v2beta1/services/intents/client.py +++ b/google/cloud/dialogflow_v2beta1/services/intents/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -433,8 +433,7 @@ def list_intents( agent. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -556,8 +555,7 @@ def get_intent( ) -> intent.Intent: r"""Retrieves the specified intent. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -677,8 +675,7 @@ def create_intent( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -810,8 +807,7 @@ def update_intent( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -940,8 +936,7 @@ def delete_intent( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -1044,8 +1039,7 @@ def batch_update_intents( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -1193,8 +1187,7 @@ def batch_delete_intents( documentation `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/intents/pagers.py b/google/cloud/dialogflow_v2beta1/services/intents/pagers.py index e7c0edf18..5c1f3fe1a 100644 --- a/google/cloud/dialogflow_v2beta1/services/intents/pagers.py +++ b/google/cloud/dialogflow_v2beta1/services/intents/pagers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/intents/transports/__init__.py b/google/cloud/dialogflow_v2beta1/services/intents/transports/__init__.py index 974a58103..876b5cd14 100644 --- a/google/cloud/dialogflow_v2beta1/services/intents/transports/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/intents/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/intents/transports/base.py b/google/cloud/dialogflow_v2beta1/services/intents/transports/base.py index 7e8a22366..9cdfe6384 100644 --- a/google/cloud/dialogflow_v2beta1/services/intents/transports/base.py +++ b/google/cloud/dialogflow_v2beta1/services/intents/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/intents/transports/grpc.py b/google/cloud/dialogflow_v2beta1/services/intents/transports/grpc.py index 2eedfb90f..35476d934 100644 --- a/google/cloud/dialogflow_v2beta1/services/intents/transports/grpc.py +++ b/google/cloud/dialogflow_v2beta1/services/intents/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/intents/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2beta1/services/intents/transports/grpc_asyncio.py index 9ae79d942..ada377a4b 100644 --- a/google/cloud/dialogflow_v2beta1/services/intents/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2beta1/services/intents/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/knowledge_bases/__init__.py b/google/cloud/dialogflow_v2beta1/services/knowledge_bases/__init__.py index 24204c982..e17153139 100644 --- a/google/cloud/dialogflow_v2beta1/services/knowledge_bases/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/knowledge_bases/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/knowledge_bases/async_client.py b/google/cloud/dialogflow_v2beta1/services/knowledge_bases/async_client.py index 65c558559..81b6c1603 100644 --- a/google/cloud/dialogflow_v2beta1/services/knowledge_bases/async_client.py +++ b/google/cloud/dialogflow_v2beta1/services/knowledge_bases/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -223,7 +223,7 @@ async def list_knowledge_bases( deprecated; only use ``projects.knowledgeBases``. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -328,7 +328,7 @@ async def get_knowledge_base( deprecated; only use ``projects.knowledgeBases``. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -434,7 +434,7 @@ async def create_knowledge_base( deprecated; only use ``projects.knowledgeBases``. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -552,7 +552,7 @@ async def delete_knowledge_base( deprecated; only use ``projects.knowledgeBases``. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -638,7 +638,7 @@ async def update_knowledge_base( deprecated; only use ``projects.knowledgeBases``. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/knowledge_bases/client.py b/google/cloud/dialogflow_v2beta1/services/knowledge_bases/client.py index f61f607a0..940b08e17 100644 --- a/google/cloud/dialogflow_v2beta1/services/knowledge_bases/client.py +++ b/google/cloud/dialogflow_v2beta1/services/knowledge_bases/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -417,8 +417,7 @@ def list_knowledge_bases( deprecated; only use ``projects.knowledgeBases``. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -523,8 +522,7 @@ def get_knowledge_base( deprecated; only use ``projects.knowledgeBases``. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -630,8 +628,7 @@ def create_knowledge_base( deprecated; only use ``projects.knowledgeBases``. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -749,8 +746,7 @@ def delete_knowledge_base( deprecated; only use ``projects.knowledgeBases``. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -836,8 +832,7 @@ def update_knowledge_base( deprecated; only use ``projects.knowledgeBases``. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/knowledge_bases/pagers.py b/google/cloud/dialogflow_v2beta1/services/knowledge_bases/pagers.py index e14b74782..b0adf1b17 100644 --- a/google/cloud/dialogflow_v2beta1/services/knowledge_bases/pagers.py +++ b/google/cloud/dialogflow_v2beta1/services/knowledge_bases/pagers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/knowledge_bases/transports/__init__.py b/google/cloud/dialogflow_v2beta1/services/knowledge_bases/transports/__init__.py index 38da4326d..f3bf2daa6 100644 --- a/google/cloud/dialogflow_v2beta1/services/knowledge_bases/transports/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/knowledge_bases/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/knowledge_bases/transports/base.py b/google/cloud/dialogflow_v2beta1/services/knowledge_bases/transports/base.py index c714b03dc..57f6c6cdb 100644 --- a/google/cloud/dialogflow_v2beta1/services/knowledge_bases/transports/base.py +++ b/google/cloud/dialogflow_v2beta1/services/knowledge_bases/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/knowledge_bases/transports/grpc.py b/google/cloud/dialogflow_v2beta1/services/knowledge_bases/transports/grpc.py index b6c49a3bc..5ae699fb8 100644 --- a/google/cloud/dialogflow_v2beta1/services/knowledge_bases/transports/grpc.py +++ b/google/cloud/dialogflow_v2beta1/services/knowledge_bases/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/knowledge_bases/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2beta1/services/knowledge_bases/transports/grpc_asyncio.py index b778c34ec..751d6624b 100644 --- a/google/cloud/dialogflow_v2beta1/services/knowledge_bases/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2beta1/services/knowledge_bases/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/participants/__init__.py b/google/cloud/dialogflow_v2beta1/services/participants/__init__.py index 942327781..b3b91ad6a 100644 --- a/google/cloud/dialogflow_v2beta1/services/participants/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/participants/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/participants/async_client.py b/google/cloud/dialogflow_v2beta1/services/participants/async_client.py index df4b0d781..80facb54c 100644 --- a/google/cloud/dialogflow_v2beta1/services/participants/async_client.py +++ b/google/cloud/dialogflow_v2beta1/services/participants/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -230,7 +230,7 @@ async def create_participant( ) -> gcd_participant.Participant: r"""Creates a new participant in a conversation. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -328,7 +328,7 @@ async def get_participant( ) -> participant.Participant: r"""Retrieves a conversation participant. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -420,7 +420,7 @@ async def list_participants( conversation. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -522,7 +522,7 @@ async def update_participant( ) -> gcd_participant.Participant: r"""Updates the specified participant. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -628,7 +628,7 @@ async def analyze_content( environments `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -755,7 +755,7 @@ async def suggest_articles( conversation context in the real time. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -848,7 +848,7 @@ async def suggest_faq_answers( specific historical messages. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -941,7 +941,7 @@ async def suggest_smart_replies( specific historical messages. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -1051,7 +1051,7 @@ async def list_suggestions( and empty page_token. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -1147,7 +1147,7 @@ async def compile_suggestion( conversation context in the real time. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/participants/client.py b/google/cloud/dialogflow_v2beta1/services/participants/client.py index bf2685e48..4bc18b650 100644 --- a/google/cloud/dialogflow_v2beta1/services/participants/client.py +++ b/google/cloud/dialogflow_v2beta1/services/participants/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -507,8 +507,7 @@ def create_participant( ) -> gcd_participant.Participant: r"""Creates a new participant in a conversation. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -606,8 +605,7 @@ def get_participant( ) -> participant.Participant: r"""Retrieves a conversation participant. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -699,8 +697,7 @@ def list_participants( conversation. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -802,8 +799,7 @@ def update_participant( ) -> gcd_participant.Participant: r"""Updates the specified participant. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -909,8 +905,7 @@ def analyze_content( environments `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -1028,8 +1023,7 @@ def suggest_articles( conversation context in the real time. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -1122,8 +1116,7 @@ def suggest_faq_answers( specific historical messages. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -1216,8 +1209,7 @@ def suggest_smart_replies( specific historical messages. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -1327,8 +1319,7 @@ def list_suggestions( and empty page_token. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -1425,8 +1416,7 @@ def compile_suggestion( conversation context in the real time. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/participants/pagers.py b/google/cloud/dialogflow_v2beta1/services/participants/pagers.py index 1bb2d78e6..eee428acb 100644 --- a/google/cloud/dialogflow_v2beta1/services/participants/pagers.py +++ b/google/cloud/dialogflow_v2beta1/services/participants/pagers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/participants/transports/__init__.py b/google/cloud/dialogflow_v2beta1/services/participants/transports/__init__.py index 522813c1c..146083f80 100644 --- a/google/cloud/dialogflow_v2beta1/services/participants/transports/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/participants/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/participants/transports/base.py b/google/cloud/dialogflow_v2beta1/services/participants/transports/base.py index dc19b588a..c77d1e819 100644 --- a/google/cloud/dialogflow_v2beta1/services/participants/transports/base.py +++ b/google/cloud/dialogflow_v2beta1/services/participants/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/participants/transports/grpc.py b/google/cloud/dialogflow_v2beta1/services/participants/transports/grpc.py index e3f8e4911..5d78809b5 100644 --- a/google/cloud/dialogflow_v2beta1/services/participants/transports/grpc.py +++ b/google/cloud/dialogflow_v2beta1/services/participants/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/participants/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2beta1/services/participants/transports/grpc_asyncio.py index d05d355f7..88f07f1bb 100644 --- a/google/cloud/dialogflow_v2beta1/services/participants/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2beta1/services/participants/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/session_entity_types/__init__.py b/google/cloud/dialogflow_v2beta1/services/session_entity_types/__init__.py index cbd406b49..a8d58e178 100644 --- a/google/cloud/dialogflow_v2beta1/services/session_entity_types/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/session_entity_types/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/session_entity_types/async_client.py b/google/cloud/dialogflow_v2beta1/services/session_entity_types/async_client.py index 7e2dbb487..84d648a84 100644 --- a/google/cloud/dialogflow_v2beta1/services/session_entity_types/async_client.py +++ b/google/cloud/dialogflow_v2beta1/services/session_entity_types/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -230,7 +230,7 @@ async def list_session_entity_types( use session entities with Google Assistant integration. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -344,7 +344,7 @@ async def get_session_entity_type( use session entities with Google Assistant integration. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -462,7 +462,7 @@ async def create_session_entity_type( use session entities with Google Assistant integration. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -586,7 +586,7 @@ async def update_session_entity_type( use session entities with Google Assistant integration. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -698,7 +698,7 @@ async def delete_session_entity_type( use session entities with Google Assistant integration. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/session_entity_types/client.py b/google/cloud/dialogflow_v2beta1/services/session_entity_types/client.py index 4c3f20983..085fcf97e 100644 --- a/google/cloud/dialogflow_v2beta1/services/session_entity_types/client.py +++ b/google/cloud/dialogflow_v2beta1/services/session_entity_types/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -424,8 +424,7 @@ def list_session_entity_types( use session entities with Google Assistant integration. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -541,8 +540,7 @@ def get_session_entity_type( use session entities with Google Assistant integration. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -660,8 +658,7 @@ def create_session_entity_type( use session entities with Google Assistant integration. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -789,8 +786,7 @@ def update_session_entity_type( use session entities with Google Assistant integration. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -906,8 +902,7 @@ def delete_session_entity_type( use session entities with Google Assistant integration. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/session_entity_types/pagers.py b/google/cloud/dialogflow_v2beta1/services/session_entity_types/pagers.py index 42feb8011..8840081b9 100644 --- a/google/cloud/dialogflow_v2beta1/services/session_entity_types/pagers.py +++ b/google/cloud/dialogflow_v2beta1/services/session_entity_types/pagers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/session_entity_types/transports/__init__.py b/google/cloud/dialogflow_v2beta1/services/session_entity_types/transports/__init__.py index 633fd32cb..44e2a8d43 100644 --- a/google/cloud/dialogflow_v2beta1/services/session_entity_types/transports/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/session_entity_types/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/session_entity_types/transports/base.py b/google/cloud/dialogflow_v2beta1/services/session_entity_types/transports/base.py index 132f54ba1..f5bc8b5a5 100644 --- a/google/cloud/dialogflow_v2beta1/services/session_entity_types/transports/base.py +++ b/google/cloud/dialogflow_v2beta1/services/session_entity_types/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/session_entity_types/transports/grpc.py b/google/cloud/dialogflow_v2beta1/services/session_entity_types/transports/grpc.py index c6599adae..2a308e285 100644 --- a/google/cloud/dialogflow_v2beta1/services/session_entity_types/transports/grpc.py +++ b/google/cloud/dialogflow_v2beta1/services/session_entity_types/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/session_entity_types/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2beta1/services/session_entity_types/transports/grpc_asyncio.py index 4e7c534ee..fc3860dc3 100644 --- a/google/cloud/dialogflow_v2beta1/services/session_entity_types/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2beta1/services/session_entity_types/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/sessions/__init__.py b/google/cloud/dialogflow_v2beta1/services/sessions/__init__.py index 0adeafb97..49b86a28b 100644 --- a/google/cloud/dialogflow_v2beta1/services/sessions/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/sessions/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/sessions/async_client.py b/google/cloud/dialogflow_v2beta1/services/sessions/async_client.py index 0e5a30166..4c2f55e68 100644 --- a/google/cloud/dialogflow_v2beta1/services/sessions/async_client.py +++ b/google/cloud/dialogflow_v2beta1/services/sessions/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -247,7 +247,7 @@ async def detect_intent( environments `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -400,7 +400,7 @@ def streaming_detect_intent( environments `__. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/sessions/client.py b/google/cloud/dialogflow_v2beta1/services/sessions/client.py index 725aab3fc..f018de69b 100644 --- a/google/cloud/dialogflow_v2beta1/services/sessions/client.py +++ b/google/cloud/dialogflow_v2beta1/services/sessions/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -490,8 +490,7 @@ def detect_intent( environments `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -635,8 +634,7 @@ def streaming_detect_intent( environments `__. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/sessions/transports/__init__.py b/google/cloud/dialogflow_v2beta1/services/sessions/transports/__init__.py index db0f7d045..ce00ff376 100644 --- a/google/cloud/dialogflow_v2beta1/services/sessions/transports/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/sessions/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/sessions/transports/base.py b/google/cloud/dialogflow_v2beta1/services/sessions/transports/base.py index 44b487807..6803b6db2 100644 --- a/google/cloud/dialogflow_v2beta1/services/sessions/transports/base.py +++ b/google/cloud/dialogflow_v2beta1/services/sessions/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/sessions/transports/grpc.py b/google/cloud/dialogflow_v2beta1/services/sessions/transports/grpc.py index a35924e80..98c3684e9 100644 --- a/google/cloud/dialogflow_v2beta1/services/sessions/transports/grpc.py +++ b/google/cloud/dialogflow_v2beta1/services/sessions/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/sessions/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2beta1/services/sessions/transports/grpc_asyncio.py index 2f2dd65ee..50e7a4aac 100644 --- a/google/cloud/dialogflow_v2beta1/services/sessions/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2beta1/services/sessions/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/versions/__init__.py b/google/cloud/dialogflow_v2beta1/services/versions/__init__.py index 586be1818..78f73aa31 100644 --- a/google/cloud/dialogflow_v2beta1/services/versions/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/versions/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/versions/async_client.py b/google/cloud/dialogflow_v2beta1/services/versions/async_client.py index f4f262d9d..37358b616 100644 --- a/google/cloud/dialogflow_v2beta1/services/versions/async_client.py +++ b/google/cloud/dialogflow_v2beta1/services/versions/async_client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -212,7 +212,7 @@ async def list_versions( agent. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -315,7 +315,7 @@ async def get_version( ) -> version.Version: r"""Retrieves the specified agent version. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -430,7 +430,7 @@ async def create_version( "default" environment. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -555,7 +555,7 @@ async def update_version( version resource. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -676,7 +676,7 @@ async def delete_version( ) -> None: r"""Delete the specified agent version. - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/versions/client.py b/google/cloud/dialogflow_v2beta1/services/versions/client.py index 2027032ca..581c42c16 100644 --- a/google/cloud/dialogflow_v2beta1/services/versions/client.py +++ b/google/cloud/dialogflow_v2beta1/services/versions/client.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -414,8 +414,7 @@ def list_versions( agent. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -518,8 +517,7 @@ def get_version( ) -> version.Version: r"""Retrieves the specified agent version. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -634,8 +632,7 @@ def create_version( "default" environment. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -760,8 +757,7 @@ def update_version( version resource. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 @@ -882,8 +878,7 @@ def delete_version( ) -> None: r"""Delete the specified agent version. - - .. code-block:: + .. code-block:: python from google.cloud import dialogflow_v2beta1 diff --git a/google/cloud/dialogflow_v2beta1/services/versions/pagers.py b/google/cloud/dialogflow_v2beta1/services/versions/pagers.py index ba6de490a..06738af1f 100644 --- a/google/cloud/dialogflow_v2beta1/services/versions/pagers.py +++ b/google/cloud/dialogflow_v2beta1/services/versions/pagers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/versions/transports/__init__.py b/google/cloud/dialogflow_v2beta1/services/versions/transports/__init__.py index c5a42a0e8..ab80b3b57 100644 --- a/google/cloud/dialogflow_v2beta1/services/versions/transports/__init__.py +++ b/google/cloud/dialogflow_v2beta1/services/versions/transports/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/versions/transports/base.py b/google/cloud/dialogflow_v2beta1/services/versions/transports/base.py index a43820974..8200a7b30 100644 --- a/google/cloud/dialogflow_v2beta1/services/versions/transports/base.py +++ b/google/cloud/dialogflow_v2beta1/services/versions/transports/base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/versions/transports/grpc.py b/google/cloud/dialogflow_v2beta1/services/versions/transports/grpc.py index a19ee7703..62711c2da 100644 --- a/google/cloud/dialogflow_v2beta1/services/versions/transports/grpc.py +++ b/google/cloud/dialogflow_v2beta1/services/versions/transports/grpc.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/services/versions/transports/grpc_asyncio.py b/google/cloud/dialogflow_v2beta1/services/versions/transports/grpc_asyncio.py index be3e53207..c0c965757 100644 --- a/google/cloud/dialogflow_v2beta1/services/versions/transports/grpc_asyncio.py +++ b/google/cloud/dialogflow_v2beta1/services/versions/transports/grpc_asyncio.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/types/__init__.py b/google/cloud/dialogflow_v2beta1/types/__init__.py index c09d039ae..7fd7edeb3 100644 --- a/google/cloud/dialogflow_v2beta1/types/__init__.py +++ b/google/cloud/dialogflow_v2beta1/types/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/types/agent.py b/google/cloud/dialogflow_v2beta1/types/agent.py index 08b9b7a57..985a64f12 100644 --- a/google/cloud/dialogflow_v2beta1/types/agent.py +++ b/google/cloud/dialogflow_v2beta1/types/agent.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/types/answer_record.py b/google/cloud/dialogflow_v2beta1/types/answer_record.py index 8d81ebef7..e9632ed52 100644 --- a/google/cloud/dialogflow_v2beta1/types/answer_record.py +++ b/google/cloud/dialogflow_v2beta1/types/answer_record.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/types/audio_config.py b/google/cloud/dialogflow_v2beta1/types/audio_config.py index 32e1fd710..6561ee090 100644 --- a/google/cloud/dialogflow_v2beta1/types/audio_config.py +++ b/google/cloud/dialogflow_v2beta1/types/audio_config.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/types/context.py b/google/cloud/dialogflow_v2beta1/types/context.py index 8b4d02a29..6cd15ea5c 100644 --- a/google/cloud/dialogflow_v2beta1/types/context.py +++ b/google/cloud/dialogflow_v2beta1/types/context.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/types/conversation.py b/google/cloud/dialogflow_v2beta1/types/conversation.py index 19dd0363c..ca5d0dce5 100644 --- a/google/cloud/dialogflow_v2beta1/types/conversation.py +++ b/google/cloud/dialogflow_v2beta1/types/conversation.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/types/conversation_event.py b/google/cloud/dialogflow_v2beta1/types/conversation_event.py index 27ff0c52c..305e306ed 100644 --- a/google/cloud/dialogflow_v2beta1/types/conversation_event.py +++ b/google/cloud/dialogflow_v2beta1/types/conversation_event.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/types/conversation_profile.py b/google/cloud/dialogflow_v2beta1/types/conversation_profile.py index a77470e5a..a4ab318e0 100644 --- a/google/cloud/dialogflow_v2beta1/types/conversation_profile.py +++ b/google/cloud/dialogflow_v2beta1/types/conversation_profile.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/types/document.py b/google/cloud/dialogflow_v2beta1/types/document.py index 89aae8027..f0641dc82 100644 --- a/google/cloud/dialogflow_v2beta1/types/document.py +++ b/google/cloud/dialogflow_v2beta1/types/document.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/types/entity_type.py b/google/cloud/dialogflow_v2beta1/types/entity_type.py index 8eaad0152..0375c6851 100644 --- a/google/cloud/dialogflow_v2beta1/types/entity_type.py +++ b/google/cloud/dialogflow_v2beta1/types/entity_type.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/types/environment.py b/google/cloud/dialogflow_v2beta1/types/environment.py index f24d1e574..15d9947e4 100644 --- a/google/cloud/dialogflow_v2beta1/types/environment.py +++ b/google/cloud/dialogflow_v2beta1/types/environment.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/types/fulfillment.py b/google/cloud/dialogflow_v2beta1/types/fulfillment.py index 206a47109..aeb74854b 100644 --- a/google/cloud/dialogflow_v2beta1/types/fulfillment.py +++ b/google/cloud/dialogflow_v2beta1/types/fulfillment.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/types/gcs.py b/google/cloud/dialogflow_v2beta1/types/gcs.py index 99cf2bad4..8e30d919c 100644 --- a/google/cloud/dialogflow_v2beta1/types/gcs.py +++ b/google/cloud/dialogflow_v2beta1/types/gcs.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/types/human_agent_assistant_event.py b/google/cloud/dialogflow_v2beta1/types/human_agent_assistant_event.py index b66735d32..ecb797222 100644 --- a/google/cloud/dialogflow_v2beta1/types/human_agent_assistant_event.py +++ b/google/cloud/dialogflow_v2beta1/types/human_agent_assistant_event.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/types/intent.py b/google/cloud/dialogflow_v2beta1/types/intent.py index 99714cb02..a1da67089 100644 --- a/google/cloud/dialogflow_v2beta1/types/intent.py +++ b/google/cloud/dialogflow_v2beta1/types/intent.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/types/knowledge_base.py b/google/cloud/dialogflow_v2beta1/types/knowledge_base.py index bc167796b..21ee4db43 100644 --- a/google/cloud/dialogflow_v2beta1/types/knowledge_base.py +++ b/google/cloud/dialogflow_v2beta1/types/knowledge_base.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/types/participant.py b/google/cloud/dialogflow_v2beta1/types/participant.py index fbc196b2a..e9fa92536 100644 --- a/google/cloud/dialogflow_v2beta1/types/participant.py +++ b/google/cloud/dialogflow_v2beta1/types/participant.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/types/session.py b/google/cloud/dialogflow_v2beta1/types/session.py index b63535a6d..858df3bb6 100644 --- a/google/cloud/dialogflow_v2beta1/types/session.py +++ b/google/cloud/dialogflow_v2beta1/types/session.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/types/session_entity_type.py b/google/cloud/dialogflow_v2beta1/types/session_entity_type.py index a3d4a2838..c01267a63 100644 --- a/google/cloud/dialogflow_v2beta1/types/session_entity_type.py +++ b/google/cloud/dialogflow_v2beta1/types/session_entity_type.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/types/validation_result.py b/google/cloud/dialogflow_v2beta1/types/validation_result.py index 05c1cd38e..1fba6c690 100644 --- a/google/cloud/dialogflow_v2beta1/types/validation_result.py +++ b/google/cloud/dialogflow_v2beta1/types/validation_result.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/types/version.py b/google/cloud/dialogflow_v2beta1/types/version.py index 623c33e1e..30cd29a64 100644 --- a/google/cloud/dialogflow_v2beta1/types/version.py +++ b/google/cloud/dialogflow_v2beta1/types/version.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google/cloud/dialogflow_v2beta1/types/webhook.py b/google/cloud/dialogflow_v2beta1/types/webhook.py index b494938f2..ea4d9535d 100644 --- a/google/cloud/dialogflow_v2beta1/types/webhook.py +++ b/google/cloud/dialogflow_v2beta1/types/webhook.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/samples/generated_samples/dialogflow_v2_generated_agents_delete_agent_async.py b/samples/generated_samples/dialogflow_v2_generated_agents_delete_agent_async.py new file mode 100644 index 000000000..333f91376 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_agents_delete_agent_async.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteAgent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Agents_DeleteAgent_async] +from google.cloud import dialogflow_v2 + + +async def sample_delete_agent(): + # Create a client + client = dialogflow_v2.AgentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteAgentRequest( + parent="parent_value", + ) + + # Make the request + await client.delete_agent(request=request) + + +# [END dialogflow_v2_generated_Agents_DeleteAgent_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_agents_delete_agent_sync.py b/samples/generated_samples/dialogflow_v2_generated_agents_delete_agent_sync.py new file mode 100644 index 000000000..bcff562f5 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_agents_delete_agent_sync.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteAgent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Agents_DeleteAgent_sync] +from google.cloud import dialogflow_v2 + + +def sample_delete_agent(): + # Create a client + client = dialogflow_v2.AgentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteAgentRequest( + parent="parent_value", + ) + + # Make the request + client.delete_agent(request=request) + + +# [END dialogflow_v2_generated_Agents_DeleteAgent_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_agents_export_agent_async.py b/samples/generated_samples/dialogflow_v2_generated_agents_export_agent_async.py new file mode 100644 index 000000000..13ae15ef5 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_agents_export_agent_async.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ExportAgent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Agents_ExportAgent_async] +from google.cloud import dialogflow_v2 + + +async def sample_export_agent(): + # Create a client + client = dialogflow_v2.AgentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.ExportAgentRequest( + parent="parent_value", + agent_uri="agent_uri_value", + ) + + # Make the request + operation = client.export_agent(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Agents_ExportAgent_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_agents_export_agent_sync.py b/samples/generated_samples/dialogflow_v2_generated_agents_export_agent_sync.py new file mode 100644 index 000000000..f3c310641 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_agents_export_agent_sync.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ExportAgent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Agents_ExportAgent_sync] +from google.cloud import dialogflow_v2 + + +def sample_export_agent(): + # Create a client + client = dialogflow_v2.AgentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.ExportAgentRequest( + parent="parent_value", + agent_uri="agent_uri_value", + ) + + # Make the request + operation = client.export_agent(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Agents_ExportAgent_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_agents_get_agent_async.py b/samples/generated_samples/dialogflow_v2_generated_agents_get_agent_async.py new file mode 100644 index 000000000..831bf9194 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_agents_get_agent_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetAgent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Agents_GetAgent_async] +from google.cloud import dialogflow_v2 + + +async def sample_get_agent(): + # Create a client + client = dialogflow_v2.AgentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetAgentRequest( + parent="parent_value", + ) + + # Make the request + response = await client.get_agent(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Agents_GetAgent_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_agents_get_agent_sync.py b/samples/generated_samples/dialogflow_v2_generated_agents_get_agent_sync.py new file mode 100644 index 000000000..5e086a9e3 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_agents_get_agent_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetAgent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Agents_GetAgent_sync] +from google.cloud import dialogflow_v2 + + +def sample_get_agent(): + # Create a client + client = dialogflow_v2.AgentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetAgentRequest( + parent="parent_value", + ) + + # Make the request + response = client.get_agent(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Agents_GetAgent_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_agents_get_validation_result_async.py b/samples/generated_samples/dialogflow_v2_generated_agents_get_validation_result_async.py new file mode 100644 index 000000000..39b4cdc2b --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_agents_get_validation_result_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetValidationResult +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Agents_GetValidationResult_async] +from google.cloud import dialogflow_v2 + + +async def sample_get_validation_result(): + # Create a client + client = dialogflow_v2.AgentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetValidationResultRequest( + parent="parent_value", + ) + + # Make the request + response = await client.get_validation_result(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Agents_GetValidationResult_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_agents_get_validation_result_sync.py b/samples/generated_samples/dialogflow_v2_generated_agents_get_validation_result_sync.py new file mode 100644 index 000000000..f3b4d929d --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_agents_get_validation_result_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetValidationResult +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Agents_GetValidationResult_sync] +from google.cloud import dialogflow_v2 + + +def sample_get_validation_result(): + # Create a client + client = dialogflow_v2.AgentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetValidationResultRequest( + parent="parent_value", + ) + + # Make the request + response = client.get_validation_result(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Agents_GetValidationResult_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_agents_import_agent_async.py b/samples/generated_samples/dialogflow_v2_generated_agents_import_agent_async.py new file mode 100644 index 000000000..fee947f27 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_agents_import_agent_async.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ImportAgent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Agents_ImportAgent_async] +from google.cloud import dialogflow_v2 + + +async def sample_import_agent(): + # Create a client + client = dialogflow_v2.AgentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.ImportAgentRequest( + agent_uri="agent_uri_value", + parent="parent_value", + ) + + # Make the request + operation = client.import_agent(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Agents_ImportAgent_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_agents_import_agent_sync.py b/samples/generated_samples/dialogflow_v2_generated_agents_import_agent_sync.py new file mode 100644 index 000000000..a2682864e --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_agents_import_agent_sync.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ImportAgent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Agents_ImportAgent_sync] +from google.cloud import dialogflow_v2 + + +def sample_import_agent(): + # Create a client + client = dialogflow_v2.AgentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.ImportAgentRequest( + agent_uri="agent_uri_value", + parent="parent_value", + ) + + # Make the request + operation = client.import_agent(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Agents_ImportAgent_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_agents_restore_agent_async.py b/samples/generated_samples/dialogflow_v2_generated_agents_restore_agent_async.py new file mode 100644 index 000000000..1520b5903 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_agents_restore_agent_async.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for RestoreAgent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Agents_RestoreAgent_async] +from google.cloud import dialogflow_v2 + + +async def sample_restore_agent(): + # Create a client + client = dialogflow_v2.AgentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.RestoreAgentRequest( + agent_uri="agent_uri_value", + parent="parent_value", + ) + + # Make the request + operation = client.restore_agent(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Agents_RestoreAgent_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_agents_restore_agent_sync.py b/samples/generated_samples/dialogflow_v2_generated_agents_restore_agent_sync.py new file mode 100644 index 000000000..9d8424f4a --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_agents_restore_agent_sync.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for RestoreAgent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Agents_RestoreAgent_sync] +from google.cloud import dialogflow_v2 + + +def sample_restore_agent(): + # Create a client + client = dialogflow_v2.AgentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.RestoreAgentRequest( + agent_uri="agent_uri_value", + parent="parent_value", + ) + + # Make the request + operation = client.restore_agent(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Agents_RestoreAgent_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_agents_search_agents_async.py b/samples/generated_samples/dialogflow_v2_generated_agents_search_agents_async.py new file mode 100644 index 000000000..685758ce2 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_agents_search_agents_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for SearchAgents +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Agents_SearchAgents_async] +from google.cloud import dialogflow_v2 + + +async def sample_search_agents(): + # Create a client + client = dialogflow_v2.AgentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.SearchAgentsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.search_agents(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2_generated_Agents_SearchAgents_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_agents_search_agents_sync.py b/samples/generated_samples/dialogflow_v2_generated_agents_search_agents_sync.py new file mode 100644 index 000000000..f0b88d270 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_agents_search_agents_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for SearchAgents +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Agents_SearchAgents_sync] +from google.cloud import dialogflow_v2 + + +def sample_search_agents(): + # Create a client + client = dialogflow_v2.AgentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.SearchAgentsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.search_agents(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2_generated_Agents_SearchAgents_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_agents_set_agent_async.py b/samples/generated_samples/dialogflow_v2_generated_agents_set_agent_async.py new file mode 100644 index 000000000..d14f152a8 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_agents_set_agent_async.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for SetAgent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Agents_SetAgent_async] +from google.cloud import dialogflow_v2 + + +async def sample_set_agent(): + # Create a client + client = dialogflow_v2.AgentsAsyncClient() + + # Initialize request argument(s) + agent = dialogflow_v2.Agent() + agent.parent = "parent_value" + agent.display_name = "display_name_value" + agent.default_language_code = "default_language_code_value" + agent.time_zone = "time_zone_value" + + request = dialogflow_v2.SetAgentRequest( + agent=agent, + ) + + # Make the request + response = await client.set_agent(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Agents_SetAgent_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_agents_set_agent_sync.py b/samples/generated_samples/dialogflow_v2_generated_agents_set_agent_sync.py new file mode 100644 index 000000000..f1a68a784 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_agents_set_agent_sync.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for SetAgent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Agents_SetAgent_sync] +from google.cloud import dialogflow_v2 + + +def sample_set_agent(): + # Create a client + client = dialogflow_v2.AgentsClient() + + # Initialize request argument(s) + agent = dialogflow_v2.Agent() + agent.parent = "parent_value" + agent.display_name = "display_name_value" + agent.default_language_code = "default_language_code_value" + agent.time_zone = "time_zone_value" + + request = dialogflow_v2.SetAgentRequest( + agent=agent, + ) + + # Make the request + response = client.set_agent(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Agents_SetAgent_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_agents_train_agent_async.py b/samples/generated_samples/dialogflow_v2_generated_agents_train_agent_async.py new file mode 100644 index 000000000..4af44b26e --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_agents_train_agent_async.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for TrainAgent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Agents_TrainAgent_async] +from google.cloud import dialogflow_v2 + + +async def sample_train_agent(): + # Create a client + client = dialogflow_v2.AgentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.TrainAgentRequest( + parent="parent_value", + ) + + # Make the request + operation = client.train_agent(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Agents_TrainAgent_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_agents_train_agent_sync.py b/samples/generated_samples/dialogflow_v2_generated_agents_train_agent_sync.py new file mode 100644 index 000000000..5e44d84be --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_agents_train_agent_sync.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for TrainAgent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Agents_TrainAgent_sync] +from google.cloud import dialogflow_v2 + + +def sample_train_agent(): + # Create a client + client = dialogflow_v2.AgentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.TrainAgentRequest( + parent="parent_value", + ) + + # Make the request + operation = client.train_agent(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Agents_TrainAgent_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_answer_records_list_answer_records_async.py b/samples/generated_samples/dialogflow_v2_generated_answer_records_list_answer_records_async.py new file mode 100644 index 000000000..db270cfef --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_answer_records_list_answer_records_async.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListAnswerRecords +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_AnswerRecords_ListAnswerRecords_async] +from google.cloud import dialogflow_v2 + + +async def sample_list_answer_records(): + # Create a client + client = dialogflow_v2.AnswerRecordsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListAnswerRecordsRequest( + parent="parent_value", + filter="filter_value", + ) + + # Make the request + page_result = client.list_answer_records(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2_generated_AnswerRecords_ListAnswerRecords_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_answer_records_list_answer_records_sync.py b/samples/generated_samples/dialogflow_v2_generated_answer_records_list_answer_records_sync.py new file mode 100644 index 000000000..0baca719d --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_answer_records_list_answer_records_sync.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListAnswerRecords +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_AnswerRecords_ListAnswerRecords_sync] +from google.cloud import dialogflow_v2 + + +def sample_list_answer_records(): + # Create a client + client = dialogflow_v2.AnswerRecordsClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListAnswerRecordsRequest( + parent="parent_value", + filter="filter_value", + ) + + # Make the request + page_result = client.list_answer_records(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2_generated_AnswerRecords_ListAnswerRecords_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_answer_records_update_answer_record_async.py b/samples/generated_samples/dialogflow_v2_generated_answer_records_update_answer_record_async.py new file mode 100644 index 000000000..350eb0fcb --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_answer_records_update_answer_record_async.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateAnswerRecord +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_AnswerRecords_UpdateAnswerRecord_async] +from google.cloud import dialogflow_v2 + + +async def sample_update_answer_record(): + # Create a client + client = dialogflow_v2.AnswerRecordsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.UpdateAnswerRecordRequest( + ) + + # Make the request + response = await client.update_answer_record(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_AnswerRecords_UpdateAnswerRecord_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_answer_records_update_answer_record_sync.py b/samples/generated_samples/dialogflow_v2_generated_answer_records_update_answer_record_sync.py new file mode 100644 index 000000000..8bf9b2faf --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_answer_records_update_answer_record_sync.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateAnswerRecord +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_AnswerRecords_UpdateAnswerRecord_sync] +from google.cloud import dialogflow_v2 + + +def sample_update_answer_record(): + # Create a client + client = dialogflow_v2.AnswerRecordsClient() + + # Initialize request argument(s) + request = dialogflow_v2.UpdateAnswerRecordRequest( + ) + + # Make the request + response = client.update_answer_record(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_AnswerRecords_UpdateAnswerRecord_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_contexts_create_context_async.py b/samples/generated_samples/dialogflow_v2_generated_contexts_create_context_async.py new file mode 100644 index 000000000..fc49cfdbe --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_contexts_create_context_async.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateContext +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Contexts_CreateContext_async] +from google.cloud import dialogflow_v2 + + +async def sample_create_context(): + # Create a client + client = dialogflow_v2.ContextsAsyncClient() + + # Initialize request argument(s) + context = dialogflow_v2.Context() + context.name = "name_value" + + request = dialogflow_v2.CreateContextRequest( + parent="parent_value", + context=context, + ) + + # Make the request + response = await client.create_context(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Contexts_CreateContext_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_contexts_create_context_sync.py b/samples/generated_samples/dialogflow_v2_generated_contexts_create_context_sync.py new file mode 100644 index 000000000..66d2504bc --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_contexts_create_context_sync.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateContext +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Contexts_CreateContext_sync] +from google.cloud import dialogflow_v2 + + +def sample_create_context(): + # Create a client + client = dialogflow_v2.ContextsClient() + + # Initialize request argument(s) + context = dialogflow_v2.Context() + context.name = "name_value" + + request = dialogflow_v2.CreateContextRequest( + parent="parent_value", + context=context, + ) + + # Make the request + response = client.create_context(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Contexts_CreateContext_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_contexts_delete_all_contexts_async.py b/samples/generated_samples/dialogflow_v2_generated_contexts_delete_all_contexts_async.py new file mode 100644 index 000000000..a861e34fb --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_contexts_delete_all_contexts_async.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteAllContexts +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Contexts_DeleteAllContexts_async] +from google.cloud import dialogflow_v2 + + +async def sample_delete_all_contexts(): + # Create a client + client = dialogflow_v2.ContextsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteAllContextsRequest( + parent="parent_value", + ) + + # Make the request + await client.delete_all_contexts(request=request) + + +# [END dialogflow_v2_generated_Contexts_DeleteAllContexts_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_contexts_delete_all_contexts_sync.py b/samples/generated_samples/dialogflow_v2_generated_contexts_delete_all_contexts_sync.py new file mode 100644 index 000000000..ed7ddd708 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_contexts_delete_all_contexts_sync.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteAllContexts +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Contexts_DeleteAllContexts_sync] +from google.cloud import dialogflow_v2 + + +def sample_delete_all_contexts(): + # Create a client + client = dialogflow_v2.ContextsClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteAllContextsRequest( + parent="parent_value", + ) + + # Make the request + client.delete_all_contexts(request=request) + + +# [END dialogflow_v2_generated_Contexts_DeleteAllContexts_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_contexts_delete_context_async.py b/samples/generated_samples/dialogflow_v2_generated_contexts_delete_context_async.py new file mode 100644 index 000000000..70206174b --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_contexts_delete_context_async.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteContext +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Contexts_DeleteContext_async] +from google.cloud import dialogflow_v2 + + +async def sample_delete_context(): + # Create a client + client = dialogflow_v2.ContextsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteContextRequest( + name="name_value", + ) + + # Make the request + await client.delete_context(request=request) + + +# [END dialogflow_v2_generated_Contexts_DeleteContext_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_contexts_delete_context_sync.py b/samples/generated_samples/dialogflow_v2_generated_contexts_delete_context_sync.py new file mode 100644 index 000000000..956a5239d --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_contexts_delete_context_sync.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteContext +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Contexts_DeleteContext_sync] +from google.cloud import dialogflow_v2 + + +def sample_delete_context(): + # Create a client + client = dialogflow_v2.ContextsClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteContextRequest( + name="name_value", + ) + + # Make the request + client.delete_context(request=request) + + +# [END dialogflow_v2_generated_Contexts_DeleteContext_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_contexts_get_context_async.py b/samples/generated_samples/dialogflow_v2_generated_contexts_get_context_async.py new file mode 100644 index 000000000..37e586794 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_contexts_get_context_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetContext +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Contexts_GetContext_async] +from google.cloud import dialogflow_v2 + + +async def sample_get_context(): + # Create a client + client = dialogflow_v2.ContextsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetContextRequest( + name="name_value", + ) + + # Make the request + response = await client.get_context(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Contexts_GetContext_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_contexts_get_context_sync.py b/samples/generated_samples/dialogflow_v2_generated_contexts_get_context_sync.py new file mode 100644 index 000000000..9ab42930a --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_contexts_get_context_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetContext +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Contexts_GetContext_sync] +from google.cloud import dialogflow_v2 + + +def sample_get_context(): + # Create a client + client = dialogflow_v2.ContextsClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetContextRequest( + name="name_value", + ) + + # Make the request + response = client.get_context(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Contexts_GetContext_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_contexts_list_contexts_async.py b/samples/generated_samples/dialogflow_v2_generated_contexts_list_contexts_async.py new file mode 100644 index 000000000..d3de87b06 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_contexts_list_contexts_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListContexts +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Contexts_ListContexts_async] +from google.cloud import dialogflow_v2 + + +async def sample_list_contexts(): + # Create a client + client = dialogflow_v2.ContextsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListContextsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_contexts(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2_generated_Contexts_ListContexts_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_contexts_list_contexts_sync.py b/samples/generated_samples/dialogflow_v2_generated_contexts_list_contexts_sync.py new file mode 100644 index 000000000..24169bc03 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_contexts_list_contexts_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListContexts +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Contexts_ListContexts_sync] +from google.cloud import dialogflow_v2 + + +def sample_list_contexts(): + # Create a client + client = dialogflow_v2.ContextsClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListContextsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_contexts(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2_generated_Contexts_ListContexts_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_contexts_update_context_async.py b/samples/generated_samples/dialogflow_v2_generated_contexts_update_context_async.py new file mode 100644 index 000000000..b714be4bb --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_contexts_update_context_async.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateContext +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Contexts_UpdateContext_async] +from google.cloud import dialogflow_v2 + + +async def sample_update_context(): + # Create a client + client = dialogflow_v2.ContextsAsyncClient() + + # Initialize request argument(s) + context = dialogflow_v2.Context() + context.name = "name_value" + + request = dialogflow_v2.UpdateContextRequest( + context=context, + ) + + # Make the request + response = await client.update_context(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Contexts_UpdateContext_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_contexts_update_context_sync.py b/samples/generated_samples/dialogflow_v2_generated_contexts_update_context_sync.py new file mode 100644 index 000000000..19aa72165 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_contexts_update_context_sync.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateContext +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Contexts_UpdateContext_sync] +from google.cloud import dialogflow_v2 + + +def sample_update_context(): + # Create a client + client = dialogflow_v2.ContextsClient() + + # Initialize request argument(s) + context = dialogflow_v2.Context() + context.name = "name_value" + + request = dialogflow_v2.UpdateContextRequest( + context=context, + ) + + # Make the request + response = client.update_context(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Contexts_UpdateContext_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_create_conversation_dataset_async.py b/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_create_conversation_dataset_async.py new file mode 100644 index 000000000..b99181957 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_create_conversation_dataset_async.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateConversationDataset +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationDatasets_CreateConversationDataset_async] +from google.cloud import dialogflow_v2 + + +async def sample_create_conversation_dataset(): + # Create a client + client = dialogflow_v2.ConversationDatasetsAsyncClient() + + # Initialize request argument(s) + conversation_dataset = dialogflow_v2.ConversationDataset() + conversation_dataset.display_name = "display_name_value" + + request = dialogflow_v2.CreateConversationDatasetRequest( + parent="parent_value", + conversation_dataset=conversation_dataset, + ) + + # Make the request + operation = client.create_conversation_dataset(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationDatasets_CreateConversationDataset_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_create_conversation_dataset_sync.py b/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_create_conversation_dataset_sync.py new file mode 100644 index 000000000..42fc46046 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_create_conversation_dataset_sync.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateConversationDataset +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationDatasets_CreateConversationDataset_sync] +from google.cloud import dialogflow_v2 + + +def sample_create_conversation_dataset(): + # Create a client + client = dialogflow_v2.ConversationDatasetsClient() + + # Initialize request argument(s) + conversation_dataset = dialogflow_v2.ConversationDataset() + conversation_dataset.display_name = "display_name_value" + + request = dialogflow_v2.CreateConversationDatasetRequest( + parent="parent_value", + conversation_dataset=conversation_dataset, + ) + + # Make the request + operation = client.create_conversation_dataset(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationDatasets_CreateConversationDataset_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_delete_conversation_dataset_async.py b/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_delete_conversation_dataset_async.py new file mode 100644 index 000000000..db43e1fea --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_delete_conversation_dataset_async.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteConversationDataset +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationDatasets_DeleteConversationDataset_async] +from google.cloud import dialogflow_v2 + + +async def sample_delete_conversation_dataset(): + # Create a client + client = dialogflow_v2.ConversationDatasetsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteConversationDatasetRequest( + name="name_value", + ) + + # Make the request + operation = client.delete_conversation_dataset(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationDatasets_DeleteConversationDataset_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_delete_conversation_dataset_sync.py b/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_delete_conversation_dataset_sync.py new file mode 100644 index 000000000..f722e7a2c --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_delete_conversation_dataset_sync.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteConversationDataset +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationDatasets_DeleteConversationDataset_sync] +from google.cloud import dialogflow_v2 + + +def sample_delete_conversation_dataset(): + # Create a client + client = dialogflow_v2.ConversationDatasetsClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteConversationDatasetRequest( + name="name_value", + ) + + # Make the request + operation = client.delete_conversation_dataset(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationDatasets_DeleteConversationDataset_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_get_conversation_dataset_async.py b/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_get_conversation_dataset_async.py new file mode 100644 index 000000000..ecb2eef27 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_get_conversation_dataset_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetConversationDataset +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationDatasets_GetConversationDataset_async] +from google.cloud import dialogflow_v2 + + +async def sample_get_conversation_dataset(): + # Create a client + client = dialogflow_v2.ConversationDatasetsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetConversationDatasetRequest( + name="name_value", + ) + + # Make the request + response = await client.get_conversation_dataset(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationDatasets_GetConversationDataset_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_get_conversation_dataset_sync.py b/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_get_conversation_dataset_sync.py new file mode 100644 index 000000000..24aff91e8 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_get_conversation_dataset_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetConversationDataset +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationDatasets_GetConversationDataset_sync] +from google.cloud import dialogflow_v2 + + +def sample_get_conversation_dataset(): + # Create a client + client = dialogflow_v2.ConversationDatasetsClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetConversationDatasetRequest( + name="name_value", + ) + + # Make the request + response = client.get_conversation_dataset(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationDatasets_GetConversationDataset_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_import_conversation_data_async.py b/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_import_conversation_data_async.py new file mode 100644 index 000000000..499aebd71 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_import_conversation_data_async.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ImportConversationData +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationDatasets_ImportConversationData_async] +from google.cloud import dialogflow_v2 + + +async def sample_import_conversation_data(): + # Create a client + client = dialogflow_v2.ConversationDatasetsAsyncClient() + + # Initialize request argument(s) + input_config = dialogflow_v2.InputConfig() + input_config.gcs_source.uris = ['uris_value_1', 'uris_value_2'] + + request = dialogflow_v2.ImportConversationDataRequest( + name="name_value", + input_config=input_config, + ) + + # Make the request + operation = client.import_conversation_data(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationDatasets_ImportConversationData_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_import_conversation_data_sync.py b/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_import_conversation_data_sync.py new file mode 100644 index 000000000..2cd9964d3 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_import_conversation_data_sync.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ImportConversationData +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationDatasets_ImportConversationData_sync] +from google.cloud import dialogflow_v2 + + +def sample_import_conversation_data(): + # Create a client + client = dialogflow_v2.ConversationDatasetsClient() + + # Initialize request argument(s) + input_config = dialogflow_v2.InputConfig() + input_config.gcs_source.uris = ['uris_value_1', 'uris_value_2'] + + request = dialogflow_v2.ImportConversationDataRequest( + name="name_value", + input_config=input_config, + ) + + # Make the request + operation = client.import_conversation_data(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationDatasets_ImportConversationData_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_list_conversation_datasets_async.py b/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_list_conversation_datasets_async.py new file mode 100644 index 000000000..79d12766b --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_list_conversation_datasets_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListConversationDatasets +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationDatasets_ListConversationDatasets_async] +from google.cloud import dialogflow_v2 + + +async def sample_list_conversation_datasets(): + # Create a client + client = dialogflow_v2.ConversationDatasetsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListConversationDatasetsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_conversation_datasets(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2_generated_ConversationDatasets_ListConversationDatasets_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_list_conversation_datasets_sync.py b/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_list_conversation_datasets_sync.py new file mode 100644 index 000000000..cb2bb3fe4 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_datasets_list_conversation_datasets_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListConversationDatasets +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationDatasets_ListConversationDatasets_sync] +from google.cloud import dialogflow_v2 + + +def sample_list_conversation_datasets(): + # Create a client + client = dialogflow_v2.ConversationDatasetsClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListConversationDatasetsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_conversation_datasets(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2_generated_ConversationDatasets_ListConversationDatasets_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_models_create_conversation_model_async.py b/samples/generated_samples/dialogflow_v2_generated_conversation_models_create_conversation_model_async.py new file mode 100644 index 000000000..589747cd5 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_models_create_conversation_model_async.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateConversationModel +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationModels_CreateConversationModel_async] +from google.cloud import dialogflow_v2 + + +async def sample_create_conversation_model(): + # Create a client + client = dialogflow_v2.ConversationModelsAsyncClient() + + # Initialize request argument(s) + conversation_model = dialogflow_v2.ConversationModel() + conversation_model.display_name = "display_name_value" + conversation_model.datasets.dataset = "dataset_value" + + request = dialogflow_v2.CreateConversationModelRequest( + conversation_model=conversation_model, + ) + + # Make the request + operation = client.create_conversation_model(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationModels_CreateConversationModel_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_models_create_conversation_model_evaluation_async.py b/samples/generated_samples/dialogflow_v2_generated_conversation_models_create_conversation_model_evaluation_async.py new file mode 100644 index 000000000..a7edcc6e3 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_models_create_conversation_model_evaluation_async.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateConversationModelEvaluation +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationModels_CreateConversationModelEvaluation_async] +from google.cloud import dialogflow_v2 + + +async def sample_create_conversation_model_evaluation(): + # Create a client + client = dialogflow_v2.ConversationModelsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.CreateConversationModelEvaluationRequest( + parent="parent_value", + ) + + # Make the request + operation = client.create_conversation_model_evaluation(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationModels_CreateConversationModelEvaluation_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_models_create_conversation_model_evaluation_sync.py b/samples/generated_samples/dialogflow_v2_generated_conversation_models_create_conversation_model_evaluation_sync.py new file mode 100644 index 000000000..34f6e8006 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_models_create_conversation_model_evaluation_sync.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateConversationModelEvaluation +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationModels_CreateConversationModelEvaluation_sync] +from google.cloud import dialogflow_v2 + + +def sample_create_conversation_model_evaluation(): + # Create a client + client = dialogflow_v2.ConversationModelsClient() + + # Initialize request argument(s) + request = dialogflow_v2.CreateConversationModelEvaluationRequest( + parent="parent_value", + ) + + # Make the request + operation = client.create_conversation_model_evaluation(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationModels_CreateConversationModelEvaluation_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_models_create_conversation_model_sync.py b/samples/generated_samples/dialogflow_v2_generated_conversation_models_create_conversation_model_sync.py new file mode 100644 index 000000000..4a31ff9f0 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_models_create_conversation_model_sync.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateConversationModel +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationModels_CreateConversationModel_sync] +from google.cloud import dialogflow_v2 + + +def sample_create_conversation_model(): + # Create a client + client = dialogflow_v2.ConversationModelsClient() + + # Initialize request argument(s) + conversation_model = dialogflow_v2.ConversationModel() + conversation_model.display_name = "display_name_value" + conversation_model.datasets.dataset = "dataset_value" + + request = dialogflow_v2.CreateConversationModelRequest( + conversation_model=conversation_model, + ) + + # Make the request + operation = client.create_conversation_model(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationModels_CreateConversationModel_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_models_delete_conversation_model_async.py b/samples/generated_samples/dialogflow_v2_generated_conversation_models_delete_conversation_model_async.py new file mode 100644 index 000000000..df9ff6867 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_models_delete_conversation_model_async.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteConversationModel +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationModels_DeleteConversationModel_async] +from google.cloud import dialogflow_v2 + + +async def sample_delete_conversation_model(): + # Create a client + client = dialogflow_v2.ConversationModelsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteConversationModelRequest( + name="name_value", + ) + + # Make the request + operation = client.delete_conversation_model(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationModels_DeleteConversationModel_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_models_delete_conversation_model_sync.py b/samples/generated_samples/dialogflow_v2_generated_conversation_models_delete_conversation_model_sync.py new file mode 100644 index 000000000..f827007f0 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_models_delete_conversation_model_sync.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteConversationModel +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationModels_DeleteConversationModel_sync] +from google.cloud import dialogflow_v2 + + +def sample_delete_conversation_model(): + # Create a client + client = dialogflow_v2.ConversationModelsClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteConversationModelRequest( + name="name_value", + ) + + # Make the request + operation = client.delete_conversation_model(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationModels_DeleteConversationModel_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_models_deploy_conversation_model_async.py b/samples/generated_samples/dialogflow_v2_generated_conversation_models_deploy_conversation_model_async.py new file mode 100644 index 000000000..650d1b186 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_models_deploy_conversation_model_async.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeployConversationModel +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationModels_DeployConversationModel_async] +from google.cloud import dialogflow_v2 + + +async def sample_deploy_conversation_model(): + # Create a client + client = dialogflow_v2.ConversationModelsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeployConversationModelRequest( + name="name_value", + ) + + # Make the request + operation = client.deploy_conversation_model(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationModels_DeployConversationModel_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_models_deploy_conversation_model_sync.py b/samples/generated_samples/dialogflow_v2_generated_conversation_models_deploy_conversation_model_sync.py new file mode 100644 index 000000000..0c407c885 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_models_deploy_conversation_model_sync.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeployConversationModel +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationModels_DeployConversationModel_sync] +from google.cloud import dialogflow_v2 + + +def sample_deploy_conversation_model(): + # Create a client + client = dialogflow_v2.ConversationModelsClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeployConversationModelRequest( + name="name_value", + ) + + # Make the request + operation = client.deploy_conversation_model(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationModels_DeployConversationModel_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_models_get_conversation_model_async.py b/samples/generated_samples/dialogflow_v2_generated_conversation_models_get_conversation_model_async.py new file mode 100644 index 000000000..ba6b5a3f2 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_models_get_conversation_model_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetConversationModel +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationModels_GetConversationModel_async] +from google.cloud import dialogflow_v2 + + +async def sample_get_conversation_model(): + # Create a client + client = dialogflow_v2.ConversationModelsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetConversationModelRequest( + name="name_value", + ) + + # Make the request + response = await client.get_conversation_model(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationModels_GetConversationModel_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_models_get_conversation_model_evaluation_async.py b/samples/generated_samples/dialogflow_v2_generated_conversation_models_get_conversation_model_evaluation_async.py new file mode 100644 index 000000000..214f72cc7 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_models_get_conversation_model_evaluation_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetConversationModelEvaluation +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationModels_GetConversationModelEvaluation_async] +from google.cloud import dialogflow_v2 + + +async def sample_get_conversation_model_evaluation(): + # Create a client + client = dialogflow_v2.ConversationModelsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetConversationModelEvaluationRequest( + name="name_value", + ) + + # Make the request + response = await client.get_conversation_model_evaluation(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationModels_GetConversationModelEvaluation_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_models_get_conversation_model_evaluation_sync.py b/samples/generated_samples/dialogflow_v2_generated_conversation_models_get_conversation_model_evaluation_sync.py new file mode 100644 index 000000000..7831df8cc --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_models_get_conversation_model_evaluation_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetConversationModelEvaluation +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationModels_GetConversationModelEvaluation_sync] +from google.cloud import dialogflow_v2 + + +def sample_get_conversation_model_evaluation(): + # Create a client + client = dialogflow_v2.ConversationModelsClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetConversationModelEvaluationRequest( + name="name_value", + ) + + # Make the request + response = client.get_conversation_model_evaluation(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationModels_GetConversationModelEvaluation_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_models_get_conversation_model_sync.py b/samples/generated_samples/dialogflow_v2_generated_conversation_models_get_conversation_model_sync.py new file mode 100644 index 000000000..bfba2c3cc --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_models_get_conversation_model_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetConversationModel +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationModels_GetConversationModel_sync] +from google.cloud import dialogflow_v2 + + +def sample_get_conversation_model(): + # Create a client + client = dialogflow_v2.ConversationModelsClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetConversationModelRequest( + name="name_value", + ) + + # Make the request + response = client.get_conversation_model(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationModels_GetConversationModel_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_models_list_conversation_model_evaluations_async.py b/samples/generated_samples/dialogflow_v2_generated_conversation_models_list_conversation_model_evaluations_async.py new file mode 100644 index 000000000..6149290a9 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_models_list_conversation_model_evaluations_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListConversationModelEvaluations +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationModels_ListConversationModelEvaluations_async] +from google.cloud import dialogflow_v2 + + +async def sample_list_conversation_model_evaluations(): + # Create a client + client = dialogflow_v2.ConversationModelsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListConversationModelEvaluationsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_conversation_model_evaluations(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2_generated_ConversationModels_ListConversationModelEvaluations_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_models_list_conversation_model_evaluations_sync.py b/samples/generated_samples/dialogflow_v2_generated_conversation_models_list_conversation_model_evaluations_sync.py new file mode 100644 index 000000000..e35d31e9b --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_models_list_conversation_model_evaluations_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListConversationModelEvaluations +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationModels_ListConversationModelEvaluations_sync] +from google.cloud import dialogflow_v2 + + +def sample_list_conversation_model_evaluations(): + # Create a client + client = dialogflow_v2.ConversationModelsClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListConversationModelEvaluationsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_conversation_model_evaluations(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2_generated_ConversationModels_ListConversationModelEvaluations_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_models_list_conversation_models_async.py b/samples/generated_samples/dialogflow_v2_generated_conversation_models_list_conversation_models_async.py new file mode 100644 index 000000000..d8ae53847 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_models_list_conversation_models_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListConversationModels +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationModels_ListConversationModels_async] +from google.cloud import dialogflow_v2 + + +async def sample_list_conversation_models(): + # Create a client + client = dialogflow_v2.ConversationModelsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListConversationModelsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_conversation_models(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2_generated_ConversationModels_ListConversationModels_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_models_list_conversation_models_sync.py b/samples/generated_samples/dialogflow_v2_generated_conversation_models_list_conversation_models_sync.py new file mode 100644 index 000000000..17535ea39 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_models_list_conversation_models_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListConversationModels +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationModels_ListConversationModels_sync] +from google.cloud import dialogflow_v2 + + +def sample_list_conversation_models(): + # Create a client + client = dialogflow_v2.ConversationModelsClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListConversationModelsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_conversation_models(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2_generated_ConversationModels_ListConversationModels_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_models_undeploy_conversation_model_async.py b/samples/generated_samples/dialogflow_v2_generated_conversation_models_undeploy_conversation_model_async.py new file mode 100644 index 000000000..95481d298 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_models_undeploy_conversation_model_async.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UndeployConversationModel +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationModels_UndeployConversationModel_async] +from google.cloud import dialogflow_v2 + + +async def sample_undeploy_conversation_model(): + # Create a client + client = dialogflow_v2.ConversationModelsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.UndeployConversationModelRequest( + name="name_value", + ) + + # Make the request + operation = client.undeploy_conversation_model(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationModels_UndeployConversationModel_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_models_undeploy_conversation_model_sync.py b/samples/generated_samples/dialogflow_v2_generated_conversation_models_undeploy_conversation_model_sync.py new file mode 100644 index 000000000..1e5df5d23 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_models_undeploy_conversation_model_sync.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UndeployConversationModel +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationModels_UndeployConversationModel_sync] +from google.cloud import dialogflow_v2 + + +def sample_undeploy_conversation_model(): + # Create a client + client = dialogflow_v2.ConversationModelsClient() + + # Initialize request argument(s) + request = dialogflow_v2.UndeployConversationModelRequest( + name="name_value", + ) + + # Make the request + operation = client.undeploy_conversation_model(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationModels_UndeployConversationModel_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_clear_suggestion_feature_config_async.py b/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_clear_suggestion_feature_config_async.py new file mode 100644 index 000000000..bfd3322e9 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_clear_suggestion_feature_config_async.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ClearSuggestionFeatureConfig +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationProfiles_ClearSuggestionFeatureConfig_async] +from google.cloud import dialogflow_v2 + + +async def sample_clear_suggestion_feature_config(): + # Create a client + client = dialogflow_v2.ConversationProfilesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.ClearSuggestionFeatureConfigRequest( + conversation_profile="conversation_profile_value", + participant_role="END_USER", + suggestion_feature_type="SMART_REPLY", + ) + + # Make the request + operation = client.clear_suggestion_feature_config(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationProfiles_ClearSuggestionFeatureConfig_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_clear_suggestion_feature_config_sync.py b/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_clear_suggestion_feature_config_sync.py new file mode 100644 index 000000000..41f5cc193 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_clear_suggestion_feature_config_sync.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ClearSuggestionFeatureConfig +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationProfiles_ClearSuggestionFeatureConfig_sync] +from google.cloud import dialogflow_v2 + + +def sample_clear_suggestion_feature_config(): + # Create a client + client = dialogflow_v2.ConversationProfilesClient() + + # Initialize request argument(s) + request = dialogflow_v2.ClearSuggestionFeatureConfigRequest( + conversation_profile="conversation_profile_value", + participant_role="END_USER", + suggestion_feature_type="SMART_REPLY", + ) + + # Make the request + operation = client.clear_suggestion_feature_config(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationProfiles_ClearSuggestionFeatureConfig_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_create_conversation_profile_async.py b/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_create_conversation_profile_async.py new file mode 100644 index 000000000..ec34829ff --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_create_conversation_profile_async.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateConversationProfile +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationProfiles_CreateConversationProfile_async] +from google.cloud import dialogflow_v2 + + +async def sample_create_conversation_profile(): + # Create a client + client = dialogflow_v2.ConversationProfilesAsyncClient() + + # Initialize request argument(s) + conversation_profile = dialogflow_v2.ConversationProfile() + conversation_profile.display_name = "display_name_value" + + request = dialogflow_v2.CreateConversationProfileRequest( + parent="parent_value", + conversation_profile=conversation_profile, + ) + + # Make the request + response = await client.create_conversation_profile(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationProfiles_CreateConversationProfile_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_create_conversation_profile_sync.py b/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_create_conversation_profile_sync.py new file mode 100644 index 000000000..d99283176 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_create_conversation_profile_sync.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateConversationProfile +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationProfiles_CreateConversationProfile_sync] +from google.cloud import dialogflow_v2 + + +def sample_create_conversation_profile(): + # Create a client + client = dialogflow_v2.ConversationProfilesClient() + + # Initialize request argument(s) + conversation_profile = dialogflow_v2.ConversationProfile() + conversation_profile.display_name = "display_name_value" + + request = dialogflow_v2.CreateConversationProfileRequest( + parent="parent_value", + conversation_profile=conversation_profile, + ) + + # Make the request + response = client.create_conversation_profile(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationProfiles_CreateConversationProfile_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_delete_conversation_profile_async.py b/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_delete_conversation_profile_async.py new file mode 100644 index 000000000..fab8234f2 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_delete_conversation_profile_async.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteConversationProfile +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationProfiles_DeleteConversationProfile_async] +from google.cloud import dialogflow_v2 + + +async def sample_delete_conversation_profile(): + # Create a client + client = dialogflow_v2.ConversationProfilesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteConversationProfileRequest( + name="name_value", + ) + + # Make the request + await client.delete_conversation_profile(request=request) + + +# [END dialogflow_v2_generated_ConversationProfiles_DeleteConversationProfile_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_delete_conversation_profile_sync.py b/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_delete_conversation_profile_sync.py new file mode 100644 index 000000000..956cd6bce --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_delete_conversation_profile_sync.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteConversationProfile +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationProfiles_DeleteConversationProfile_sync] +from google.cloud import dialogflow_v2 + + +def sample_delete_conversation_profile(): + # Create a client + client = dialogflow_v2.ConversationProfilesClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteConversationProfileRequest( + name="name_value", + ) + + # Make the request + client.delete_conversation_profile(request=request) + + +# [END dialogflow_v2_generated_ConversationProfiles_DeleteConversationProfile_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_get_conversation_profile_async.py b/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_get_conversation_profile_async.py new file mode 100644 index 000000000..32da4d9c6 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_get_conversation_profile_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetConversationProfile +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationProfiles_GetConversationProfile_async] +from google.cloud import dialogflow_v2 + + +async def sample_get_conversation_profile(): + # Create a client + client = dialogflow_v2.ConversationProfilesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetConversationProfileRequest( + name="name_value", + ) + + # Make the request + response = await client.get_conversation_profile(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationProfiles_GetConversationProfile_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_get_conversation_profile_sync.py b/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_get_conversation_profile_sync.py new file mode 100644 index 000000000..faed7e112 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_get_conversation_profile_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetConversationProfile +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationProfiles_GetConversationProfile_sync] +from google.cloud import dialogflow_v2 + + +def sample_get_conversation_profile(): + # Create a client + client = dialogflow_v2.ConversationProfilesClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetConversationProfileRequest( + name="name_value", + ) + + # Make the request + response = client.get_conversation_profile(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationProfiles_GetConversationProfile_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_list_conversation_profiles_async.py b/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_list_conversation_profiles_async.py new file mode 100644 index 000000000..d2c13300c --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_list_conversation_profiles_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListConversationProfiles +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationProfiles_ListConversationProfiles_async] +from google.cloud import dialogflow_v2 + + +async def sample_list_conversation_profiles(): + # Create a client + client = dialogflow_v2.ConversationProfilesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListConversationProfilesRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_conversation_profiles(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2_generated_ConversationProfiles_ListConversationProfiles_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_list_conversation_profiles_sync.py b/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_list_conversation_profiles_sync.py new file mode 100644 index 000000000..c26b4901c --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_list_conversation_profiles_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListConversationProfiles +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationProfiles_ListConversationProfiles_sync] +from google.cloud import dialogflow_v2 + + +def sample_list_conversation_profiles(): + # Create a client + client = dialogflow_v2.ConversationProfilesClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListConversationProfilesRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_conversation_profiles(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2_generated_ConversationProfiles_ListConversationProfiles_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_set_suggestion_feature_config_async.py b/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_set_suggestion_feature_config_async.py new file mode 100644 index 000000000..7fba8661c --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_set_suggestion_feature_config_async.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for SetSuggestionFeatureConfig +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationProfiles_SetSuggestionFeatureConfig_async] +from google.cloud import dialogflow_v2 + + +async def sample_set_suggestion_feature_config(): + # Create a client + client = dialogflow_v2.ConversationProfilesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.SetSuggestionFeatureConfigRequest( + conversation_profile="conversation_profile_value", + participant_role="END_USER", + ) + + # Make the request + operation = client.set_suggestion_feature_config(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationProfiles_SetSuggestionFeatureConfig_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_set_suggestion_feature_config_sync.py b/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_set_suggestion_feature_config_sync.py new file mode 100644 index 000000000..4b0bb7701 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_set_suggestion_feature_config_sync.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for SetSuggestionFeatureConfig +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationProfiles_SetSuggestionFeatureConfig_sync] +from google.cloud import dialogflow_v2 + + +def sample_set_suggestion_feature_config(): + # Create a client + client = dialogflow_v2.ConversationProfilesClient() + + # Initialize request argument(s) + request = dialogflow_v2.SetSuggestionFeatureConfigRequest( + conversation_profile="conversation_profile_value", + participant_role="END_USER", + ) + + # Make the request + operation = client.set_suggestion_feature_config(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationProfiles_SetSuggestionFeatureConfig_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_update_conversation_profile_async.py b/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_update_conversation_profile_async.py new file mode 100644 index 000000000..0666c79d9 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_update_conversation_profile_async.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateConversationProfile +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationProfiles_UpdateConversationProfile_async] +from google.cloud import dialogflow_v2 + + +async def sample_update_conversation_profile(): + # Create a client + client = dialogflow_v2.ConversationProfilesAsyncClient() + + # Initialize request argument(s) + conversation_profile = dialogflow_v2.ConversationProfile() + conversation_profile.display_name = "display_name_value" + + request = dialogflow_v2.UpdateConversationProfileRequest( + conversation_profile=conversation_profile, + ) + + # Make the request + response = await client.update_conversation_profile(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationProfiles_UpdateConversationProfile_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_update_conversation_profile_sync.py b/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_update_conversation_profile_sync.py new file mode 100644 index 000000000..1c160cc7a --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversation_profiles_update_conversation_profile_sync.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateConversationProfile +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_ConversationProfiles_UpdateConversationProfile_sync] +from google.cloud import dialogflow_v2 + + +def sample_update_conversation_profile(): + # Create a client + client = dialogflow_v2.ConversationProfilesClient() + + # Initialize request argument(s) + conversation_profile = dialogflow_v2.ConversationProfile() + conversation_profile.display_name = "display_name_value" + + request = dialogflow_v2.UpdateConversationProfileRequest( + conversation_profile=conversation_profile, + ) + + # Make the request + response = client.update_conversation_profile(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_ConversationProfiles_UpdateConversationProfile_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversations_complete_conversation_async.py b/samples/generated_samples/dialogflow_v2_generated_conversations_complete_conversation_async.py new file mode 100644 index 000000000..47d162a96 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversations_complete_conversation_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CompleteConversation +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Conversations_CompleteConversation_async] +from google.cloud import dialogflow_v2 + + +async def sample_complete_conversation(): + # Create a client + client = dialogflow_v2.ConversationsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.CompleteConversationRequest( + name="name_value", + ) + + # Make the request + response = await client.complete_conversation(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Conversations_CompleteConversation_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversations_complete_conversation_sync.py b/samples/generated_samples/dialogflow_v2_generated_conversations_complete_conversation_sync.py new file mode 100644 index 000000000..ea409a8a4 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversations_complete_conversation_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CompleteConversation +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Conversations_CompleteConversation_sync] +from google.cloud import dialogflow_v2 + + +def sample_complete_conversation(): + # Create a client + client = dialogflow_v2.ConversationsClient() + + # Initialize request argument(s) + request = dialogflow_v2.CompleteConversationRequest( + name="name_value", + ) + + # Make the request + response = client.complete_conversation(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Conversations_CompleteConversation_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversations_create_conversation_async.py b/samples/generated_samples/dialogflow_v2_generated_conversations_create_conversation_async.py new file mode 100644 index 000000000..f0d084d70 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversations_create_conversation_async.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateConversation +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Conversations_CreateConversation_async] +from google.cloud import dialogflow_v2 + + +async def sample_create_conversation(): + # Create a client + client = dialogflow_v2.ConversationsAsyncClient() + + # Initialize request argument(s) + conversation = dialogflow_v2.Conversation() + conversation.conversation_profile = "conversation_profile_value" + + request = dialogflow_v2.CreateConversationRequest( + parent="parent_value", + conversation=conversation, + ) + + # Make the request + response = await client.create_conversation(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Conversations_CreateConversation_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversations_create_conversation_sync.py b/samples/generated_samples/dialogflow_v2_generated_conversations_create_conversation_sync.py new file mode 100644 index 000000000..ad7693992 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversations_create_conversation_sync.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateConversation +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Conversations_CreateConversation_sync] +from google.cloud import dialogflow_v2 + + +def sample_create_conversation(): + # Create a client + client = dialogflow_v2.ConversationsClient() + + # Initialize request argument(s) + conversation = dialogflow_v2.Conversation() + conversation.conversation_profile = "conversation_profile_value" + + request = dialogflow_v2.CreateConversationRequest( + parent="parent_value", + conversation=conversation, + ) + + # Make the request + response = client.create_conversation(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Conversations_CreateConversation_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversations_get_conversation_async.py b/samples/generated_samples/dialogflow_v2_generated_conversations_get_conversation_async.py new file mode 100644 index 000000000..9719e6271 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversations_get_conversation_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetConversation +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Conversations_GetConversation_async] +from google.cloud import dialogflow_v2 + + +async def sample_get_conversation(): + # Create a client + client = dialogflow_v2.ConversationsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetConversationRequest( + name="name_value", + ) + + # Make the request + response = await client.get_conversation(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Conversations_GetConversation_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversations_get_conversation_sync.py b/samples/generated_samples/dialogflow_v2_generated_conversations_get_conversation_sync.py new file mode 100644 index 000000000..f4d68bcfb --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversations_get_conversation_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetConversation +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Conversations_GetConversation_sync] +from google.cloud import dialogflow_v2 + + +def sample_get_conversation(): + # Create a client + client = dialogflow_v2.ConversationsClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetConversationRequest( + name="name_value", + ) + + # Make the request + response = client.get_conversation(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Conversations_GetConversation_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversations_list_conversations_async.py b/samples/generated_samples/dialogflow_v2_generated_conversations_list_conversations_async.py new file mode 100644 index 000000000..85895f630 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversations_list_conversations_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListConversations +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Conversations_ListConversations_async] +from google.cloud import dialogflow_v2 + + +async def sample_list_conversations(): + # Create a client + client = dialogflow_v2.ConversationsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListConversationsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_conversations(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2_generated_Conversations_ListConversations_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversations_list_conversations_sync.py b/samples/generated_samples/dialogflow_v2_generated_conversations_list_conversations_sync.py new file mode 100644 index 000000000..fabb8a565 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversations_list_conversations_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListConversations +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Conversations_ListConversations_sync] +from google.cloud import dialogflow_v2 + + +def sample_list_conversations(): + # Create a client + client = dialogflow_v2.ConversationsClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListConversationsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_conversations(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2_generated_Conversations_ListConversations_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversations_list_messages_async.py b/samples/generated_samples/dialogflow_v2_generated_conversations_list_messages_async.py new file mode 100644 index 000000000..fe2af0a86 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversations_list_messages_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListMessages +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Conversations_ListMessages_async] +from google.cloud import dialogflow_v2 + + +async def sample_list_messages(): + # Create a client + client = dialogflow_v2.ConversationsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListMessagesRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_messages(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2_generated_Conversations_ListMessages_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_conversations_list_messages_sync.py b/samples/generated_samples/dialogflow_v2_generated_conversations_list_messages_sync.py new file mode 100644 index 000000000..737ecbd9d --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_conversations_list_messages_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListMessages +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Conversations_ListMessages_sync] +from google.cloud import dialogflow_v2 + + +def sample_list_messages(): + # Create a client + client = dialogflow_v2.ConversationsClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListMessagesRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_messages(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2_generated_Conversations_ListMessages_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_documents_create_document_async.py b/samples/generated_samples/dialogflow_v2_generated_documents_create_document_async.py new file mode 100644 index 000000000..68eb9d01c --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_documents_create_document_async.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateDocument +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Documents_CreateDocument_async] +from google.cloud import dialogflow_v2 + + +async def sample_create_document(): + # Create a client + client = dialogflow_v2.DocumentsAsyncClient() + + # Initialize request argument(s) + document = dialogflow_v2.Document() + document.content_uri = "content_uri_value" + document.display_name = "display_name_value" + document.mime_type = "mime_type_value" + document.knowledge_types = "AGENT_FACING_SMART_REPLY" + + request = dialogflow_v2.CreateDocumentRequest( + parent="parent_value", + document=document, + ) + + # Make the request + operation = client.create_document(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Documents_CreateDocument_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_documents_create_document_sync.py b/samples/generated_samples/dialogflow_v2_generated_documents_create_document_sync.py new file mode 100644 index 000000000..1a2ea31bf --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_documents_create_document_sync.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateDocument +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Documents_CreateDocument_sync] +from google.cloud import dialogflow_v2 + + +def sample_create_document(): + # Create a client + client = dialogflow_v2.DocumentsClient() + + # Initialize request argument(s) + document = dialogflow_v2.Document() + document.content_uri = "content_uri_value" + document.display_name = "display_name_value" + document.mime_type = "mime_type_value" + document.knowledge_types = "AGENT_FACING_SMART_REPLY" + + request = dialogflow_v2.CreateDocumentRequest( + parent="parent_value", + document=document, + ) + + # Make the request + operation = client.create_document(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Documents_CreateDocument_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_documents_delete_document_async.py b/samples/generated_samples/dialogflow_v2_generated_documents_delete_document_async.py new file mode 100644 index 000000000..aaf55b1ea --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_documents_delete_document_async.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteDocument +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Documents_DeleteDocument_async] +from google.cloud import dialogflow_v2 + + +async def sample_delete_document(): + # Create a client + client = dialogflow_v2.DocumentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteDocumentRequest( + name="name_value", + ) + + # Make the request + operation = client.delete_document(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Documents_DeleteDocument_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_documents_delete_document_sync.py b/samples/generated_samples/dialogflow_v2_generated_documents_delete_document_sync.py new file mode 100644 index 000000000..a76d30a6c --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_documents_delete_document_sync.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteDocument +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Documents_DeleteDocument_sync] +from google.cloud import dialogflow_v2 + + +def sample_delete_document(): + # Create a client + client = dialogflow_v2.DocumentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteDocumentRequest( + name="name_value", + ) + + # Make the request + operation = client.delete_document(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Documents_DeleteDocument_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_documents_export_document_async.py b/samples/generated_samples/dialogflow_v2_generated_documents_export_document_async.py new file mode 100644 index 000000000..0965dd874 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_documents_export_document_async.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ExportDocument +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Documents_ExportDocument_async] +from google.cloud import dialogflow_v2 + + +async def sample_export_document(): + # Create a client + client = dialogflow_v2.DocumentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.ExportDocumentRequest( + name="name_value", + ) + + # Make the request + operation = client.export_document(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Documents_ExportDocument_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_documents_export_document_sync.py b/samples/generated_samples/dialogflow_v2_generated_documents_export_document_sync.py new file mode 100644 index 000000000..ba9ea6369 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_documents_export_document_sync.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ExportDocument +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Documents_ExportDocument_sync] +from google.cloud import dialogflow_v2 + + +def sample_export_document(): + # Create a client + client = dialogflow_v2.DocumentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.ExportDocumentRequest( + name="name_value", + ) + + # Make the request + operation = client.export_document(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Documents_ExportDocument_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_documents_get_document_async.py b/samples/generated_samples/dialogflow_v2_generated_documents_get_document_async.py new file mode 100644 index 000000000..b0891d275 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_documents_get_document_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetDocument +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Documents_GetDocument_async] +from google.cloud import dialogflow_v2 + + +async def sample_get_document(): + # Create a client + client = dialogflow_v2.DocumentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetDocumentRequest( + name="name_value", + ) + + # Make the request + response = await client.get_document(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Documents_GetDocument_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_documents_get_document_sync.py b/samples/generated_samples/dialogflow_v2_generated_documents_get_document_sync.py new file mode 100644 index 000000000..dbebfe467 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_documents_get_document_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetDocument +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Documents_GetDocument_sync] +from google.cloud import dialogflow_v2 + + +def sample_get_document(): + # Create a client + client = dialogflow_v2.DocumentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetDocumentRequest( + name="name_value", + ) + + # Make the request + response = client.get_document(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Documents_GetDocument_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_documents_import_documents_async.py b/samples/generated_samples/dialogflow_v2_generated_documents_import_documents_async.py new file mode 100644 index 000000000..34fa8a7a0 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_documents_import_documents_async.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ImportDocuments +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Documents_ImportDocuments_async] +from google.cloud import dialogflow_v2 + + +async def sample_import_documents(): + # Create a client + client = dialogflow_v2.DocumentsAsyncClient() + + # Initialize request argument(s) + gcs_source = dialogflow_v2.GcsSources() + gcs_source.uris = ['uris_value_1', 'uris_value_2'] + + document_template = dialogflow_v2.ImportDocumentTemplate() + document_template.mime_type = "mime_type_value" + document_template.knowledge_types = "AGENT_FACING_SMART_REPLY" + + request = dialogflow_v2.ImportDocumentsRequest( + gcs_source=gcs_source, + parent="parent_value", + document_template=document_template, + ) + + # Make the request + operation = client.import_documents(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Documents_ImportDocuments_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_documents_import_documents_sync.py b/samples/generated_samples/dialogflow_v2_generated_documents_import_documents_sync.py new file mode 100644 index 000000000..e587532ae --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_documents_import_documents_sync.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ImportDocuments +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Documents_ImportDocuments_sync] +from google.cloud import dialogflow_v2 + + +def sample_import_documents(): + # Create a client + client = dialogflow_v2.DocumentsClient() + + # Initialize request argument(s) + gcs_source = dialogflow_v2.GcsSources() + gcs_source.uris = ['uris_value_1', 'uris_value_2'] + + document_template = dialogflow_v2.ImportDocumentTemplate() + document_template.mime_type = "mime_type_value" + document_template.knowledge_types = "AGENT_FACING_SMART_REPLY" + + request = dialogflow_v2.ImportDocumentsRequest( + gcs_source=gcs_source, + parent="parent_value", + document_template=document_template, + ) + + # Make the request + operation = client.import_documents(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Documents_ImportDocuments_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_documents_list_documents_async.py b/samples/generated_samples/dialogflow_v2_generated_documents_list_documents_async.py new file mode 100644 index 000000000..81050af66 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_documents_list_documents_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListDocuments +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Documents_ListDocuments_async] +from google.cloud import dialogflow_v2 + + +async def sample_list_documents(): + # Create a client + client = dialogflow_v2.DocumentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListDocumentsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_documents(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2_generated_Documents_ListDocuments_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_documents_list_documents_sync.py b/samples/generated_samples/dialogflow_v2_generated_documents_list_documents_sync.py new file mode 100644 index 000000000..44b69be33 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_documents_list_documents_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListDocuments +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Documents_ListDocuments_sync] +from google.cloud import dialogflow_v2 + + +def sample_list_documents(): + # Create a client + client = dialogflow_v2.DocumentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListDocumentsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_documents(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2_generated_Documents_ListDocuments_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_documents_reload_document_async.py b/samples/generated_samples/dialogflow_v2_generated_documents_reload_document_async.py new file mode 100644 index 000000000..0bea1f135 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_documents_reload_document_async.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ReloadDocument +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Documents_ReloadDocument_async] +from google.cloud import dialogflow_v2 + + +async def sample_reload_document(): + # Create a client + client = dialogflow_v2.DocumentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.ReloadDocumentRequest( + content_uri="content_uri_value", + name="name_value", + ) + + # Make the request + operation = client.reload_document(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Documents_ReloadDocument_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_documents_reload_document_sync.py b/samples/generated_samples/dialogflow_v2_generated_documents_reload_document_sync.py new file mode 100644 index 000000000..d6576b385 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_documents_reload_document_sync.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ReloadDocument +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Documents_ReloadDocument_sync] +from google.cloud import dialogflow_v2 + + +def sample_reload_document(): + # Create a client + client = dialogflow_v2.DocumentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.ReloadDocumentRequest( + content_uri="content_uri_value", + name="name_value", + ) + + # Make the request + operation = client.reload_document(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Documents_ReloadDocument_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_documents_update_document_async.py b/samples/generated_samples/dialogflow_v2_generated_documents_update_document_async.py new file mode 100644 index 000000000..3a77af163 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_documents_update_document_async.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateDocument +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Documents_UpdateDocument_async] +from google.cloud import dialogflow_v2 + + +async def sample_update_document(): + # Create a client + client = dialogflow_v2.DocumentsAsyncClient() + + # Initialize request argument(s) + document = dialogflow_v2.Document() + document.content_uri = "content_uri_value" + document.display_name = "display_name_value" + document.mime_type = "mime_type_value" + document.knowledge_types = "AGENT_FACING_SMART_REPLY" + + request = dialogflow_v2.UpdateDocumentRequest( + document=document, + ) + + # Make the request + operation = client.update_document(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Documents_UpdateDocument_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_documents_update_document_sync.py b/samples/generated_samples/dialogflow_v2_generated_documents_update_document_sync.py new file mode 100644 index 000000000..4202b8881 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_documents_update_document_sync.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateDocument +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Documents_UpdateDocument_sync] +from google.cloud import dialogflow_v2 + + +def sample_update_document(): + # Create a client + client = dialogflow_v2.DocumentsClient() + + # Initialize request argument(s) + document = dialogflow_v2.Document() + document.content_uri = "content_uri_value" + document.display_name = "display_name_value" + document.mime_type = "mime_type_value" + document.knowledge_types = "AGENT_FACING_SMART_REPLY" + + request = dialogflow_v2.UpdateDocumentRequest( + document=document, + ) + + # Make the request + operation = client.update_document(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Documents_UpdateDocument_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_create_entities_async.py b/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_create_entities_async.py new file mode 100644 index 000000000..d1a55b948 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_create_entities_async.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchCreateEntities +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_EntityTypes_BatchCreateEntities_async] +from google.cloud import dialogflow_v2 + + +async def sample_batch_create_entities(): + # Create a client + client = dialogflow_v2.EntityTypesAsyncClient() + + # Initialize request argument(s) + entities = dialogflow_v2.Entity() + entities.value = "value_value" + entities.synonyms = ['synonyms_value_1', 'synonyms_value_2'] + + request = dialogflow_v2.BatchCreateEntitiesRequest( + parent="parent_value", + entities=entities, + ) + + # Make the request + operation = client.batch_create_entities(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_EntityTypes_BatchCreateEntities_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_create_entities_sync.py b/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_create_entities_sync.py new file mode 100644 index 000000000..7df001468 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_create_entities_sync.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchCreateEntities +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_EntityTypes_BatchCreateEntities_sync] +from google.cloud import dialogflow_v2 + + +def sample_batch_create_entities(): + # Create a client + client = dialogflow_v2.EntityTypesClient() + + # Initialize request argument(s) + entities = dialogflow_v2.Entity() + entities.value = "value_value" + entities.synonyms = ['synonyms_value_1', 'synonyms_value_2'] + + request = dialogflow_v2.BatchCreateEntitiesRequest( + parent="parent_value", + entities=entities, + ) + + # Make the request + operation = client.batch_create_entities(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_EntityTypes_BatchCreateEntities_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_delete_entities_async.py b/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_delete_entities_async.py new file mode 100644 index 000000000..a15aa7c5c --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_delete_entities_async.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchDeleteEntities +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_EntityTypes_BatchDeleteEntities_async] +from google.cloud import dialogflow_v2 + + +async def sample_batch_delete_entities(): + # Create a client + client = dialogflow_v2.EntityTypesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.BatchDeleteEntitiesRequest( + parent="parent_value", + entity_values=['entity_values_value_1', 'entity_values_value_2'], + ) + + # Make the request + operation = client.batch_delete_entities(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_EntityTypes_BatchDeleteEntities_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_delete_entities_sync.py b/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_delete_entities_sync.py new file mode 100644 index 000000000..44cb0a2ec --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_delete_entities_sync.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchDeleteEntities +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_EntityTypes_BatchDeleteEntities_sync] +from google.cloud import dialogflow_v2 + + +def sample_batch_delete_entities(): + # Create a client + client = dialogflow_v2.EntityTypesClient() + + # Initialize request argument(s) + request = dialogflow_v2.BatchDeleteEntitiesRequest( + parent="parent_value", + entity_values=['entity_values_value_1', 'entity_values_value_2'], + ) + + # Make the request + operation = client.batch_delete_entities(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_EntityTypes_BatchDeleteEntities_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_delete_entity_types_async.py b/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_delete_entity_types_async.py new file mode 100644 index 000000000..d211d3a7e --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_delete_entity_types_async.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchDeleteEntityTypes +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_EntityTypes_BatchDeleteEntityTypes_async] +from google.cloud import dialogflow_v2 + + +async def sample_batch_delete_entity_types(): + # Create a client + client = dialogflow_v2.EntityTypesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.BatchDeleteEntityTypesRequest( + parent="parent_value", + entity_type_names=['entity_type_names_value_1', 'entity_type_names_value_2'], + ) + + # Make the request + operation = client.batch_delete_entity_types(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_EntityTypes_BatchDeleteEntityTypes_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_delete_entity_types_sync.py b/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_delete_entity_types_sync.py new file mode 100644 index 000000000..e3736de19 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_delete_entity_types_sync.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchDeleteEntityTypes +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_EntityTypes_BatchDeleteEntityTypes_sync] +from google.cloud import dialogflow_v2 + + +def sample_batch_delete_entity_types(): + # Create a client + client = dialogflow_v2.EntityTypesClient() + + # Initialize request argument(s) + request = dialogflow_v2.BatchDeleteEntityTypesRequest( + parent="parent_value", + entity_type_names=['entity_type_names_value_1', 'entity_type_names_value_2'], + ) + + # Make the request + operation = client.batch_delete_entity_types(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_EntityTypes_BatchDeleteEntityTypes_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_update_entities_async.py b/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_update_entities_async.py new file mode 100644 index 000000000..f7d215926 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_update_entities_async.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchUpdateEntities +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_EntityTypes_BatchUpdateEntities_async] +from google.cloud import dialogflow_v2 + + +async def sample_batch_update_entities(): + # Create a client + client = dialogflow_v2.EntityTypesAsyncClient() + + # Initialize request argument(s) + entities = dialogflow_v2.Entity() + entities.value = "value_value" + entities.synonyms = ['synonyms_value_1', 'synonyms_value_2'] + + request = dialogflow_v2.BatchUpdateEntitiesRequest( + parent="parent_value", + entities=entities, + ) + + # Make the request + operation = client.batch_update_entities(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_EntityTypes_BatchUpdateEntities_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_update_entities_sync.py b/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_update_entities_sync.py new file mode 100644 index 000000000..d56ed3193 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_update_entities_sync.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchUpdateEntities +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_EntityTypes_BatchUpdateEntities_sync] +from google.cloud import dialogflow_v2 + + +def sample_batch_update_entities(): + # Create a client + client = dialogflow_v2.EntityTypesClient() + + # Initialize request argument(s) + entities = dialogflow_v2.Entity() + entities.value = "value_value" + entities.synonyms = ['synonyms_value_1', 'synonyms_value_2'] + + request = dialogflow_v2.BatchUpdateEntitiesRequest( + parent="parent_value", + entities=entities, + ) + + # Make the request + operation = client.batch_update_entities(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_EntityTypes_BatchUpdateEntities_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_update_entity_types_async.py b/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_update_entity_types_async.py new file mode 100644 index 000000000..2439af496 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_update_entity_types_async.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchUpdateEntityTypes +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_EntityTypes_BatchUpdateEntityTypes_async] +from google.cloud import dialogflow_v2 + + +async def sample_batch_update_entity_types(): + # Create a client + client = dialogflow_v2.EntityTypesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.BatchUpdateEntityTypesRequest( + entity_type_batch_uri="entity_type_batch_uri_value", + parent="parent_value", + ) + + # Make the request + operation = client.batch_update_entity_types(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_EntityTypes_BatchUpdateEntityTypes_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_update_entity_types_sync.py b/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_update_entity_types_sync.py new file mode 100644 index 000000000..0e45cdab9 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_entity_types_batch_update_entity_types_sync.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchUpdateEntityTypes +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_EntityTypes_BatchUpdateEntityTypes_sync] +from google.cloud import dialogflow_v2 + + +def sample_batch_update_entity_types(): + # Create a client + client = dialogflow_v2.EntityTypesClient() + + # Initialize request argument(s) + request = dialogflow_v2.BatchUpdateEntityTypesRequest( + entity_type_batch_uri="entity_type_batch_uri_value", + parent="parent_value", + ) + + # Make the request + operation = client.batch_update_entity_types(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_EntityTypes_BatchUpdateEntityTypes_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_entity_types_create_entity_type_async.py b/samples/generated_samples/dialogflow_v2_generated_entity_types_create_entity_type_async.py new file mode 100644 index 000000000..e42e7bd2a --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_entity_types_create_entity_type_async.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_EntityTypes_CreateEntityType_async] +from google.cloud import dialogflow_v2 + + +async def sample_create_entity_type(): + # Create a client + client = dialogflow_v2.EntityTypesAsyncClient() + + # Initialize request argument(s) + entity_type = dialogflow_v2.EntityType() + entity_type.display_name = "display_name_value" + entity_type.kind = "KIND_REGEXP" + + request = dialogflow_v2.CreateEntityTypeRequest( + parent="parent_value", + entity_type=entity_type, + ) + + # Make the request + response = await client.create_entity_type(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_EntityTypes_CreateEntityType_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_entity_types_create_entity_type_sync.py b/samples/generated_samples/dialogflow_v2_generated_entity_types_create_entity_type_sync.py new file mode 100644 index 000000000..e371575c3 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_entity_types_create_entity_type_sync.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_EntityTypes_CreateEntityType_sync] +from google.cloud import dialogflow_v2 + + +def sample_create_entity_type(): + # Create a client + client = dialogflow_v2.EntityTypesClient() + + # Initialize request argument(s) + entity_type = dialogflow_v2.EntityType() + entity_type.display_name = "display_name_value" + entity_type.kind = "KIND_REGEXP" + + request = dialogflow_v2.CreateEntityTypeRequest( + parent="parent_value", + entity_type=entity_type, + ) + + # Make the request + response = client.create_entity_type(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_EntityTypes_CreateEntityType_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_entity_types_delete_entity_type_async.py b/samples/generated_samples/dialogflow_v2_generated_entity_types_delete_entity_type_async.py new file mode 100644 index 000000000..19ab1d56c --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_entity_types_delete_entity_type_async.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_EntityTypes_DeleteEntityType_async] +from google.cloud import dialogflow_v2 + + +async def sample_delete_entity_type(): + # Create a client + client = dialogflow_v2.EntityTypesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteEntityTypeRequest( + name="name_value", + ) + + # Make the request + await client.delete_entity_type(request=request) + + +# [END dialogflow_v2_generated_EntityTypes_DeleteEntityType_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_entity_types_delete_entity_type_sync.py b/samples/generated_samples/dialogflow_v2_generated_entity_types_delete_entity_type_sync.py new file mode 100644 index 000000000..a92538005 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_entity_types_delete_entity_type_sync.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_EntityTypes_DeleteEntityType_sync] +from google.cloud import dialogflow_v2 + + +def sample_delete_entity_type(): + # Create a client + client = dialogflow_v2.EntityTypesClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteEntityTypeRequest( + name="name_value", + ) + + # Make the request + client.delete_entity_type(request=request) + + +# [END dialogflow_v2_generated_EntityTypes_DeleteEntityType_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_entity_types_get_entity_type_async.py b/samples/generated_samples/dialogflow_v2_generated_entity_types_get_entity_type_async.py new file mode 100644 index 000000000..560aca4ae --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_entity_types_get_entity_type_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_EntityTypes_GetEntityType_async] +from google.cloud import dialogflow_v2 + + +async def sample_get_entity_type(): + # Create a client + client = dialogflow_v2.EntityTypesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetEntityTypeRequest( + name="name_value", + ) + + # Make the request + response = await client.get_entity_type(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_EntityTypes_GetEntityType_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_entity_types_get_entity_type_sync.py b/samples/generated_samples/dialogflow_v2_generated_entity_types_get_entity_type_sync.py new file mode 100644 index 000000000..db822347d --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_entity_types_get_entity_type_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_EntityTypes_GetEntityType_sync] +from google.cloud import dialogflow_v2 + + +def sample_get_entity_type(): + # Create a client + client = dialogflow_v2.EntityTypesClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetEntityTypeRequest( + name="name_value", + ) + + # Make the request + response = client.get_entity_type(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_EntityTypes_GetEntityType_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_entity_types_list_entity_types_async.py b/samples/generated_samples/dialogflow_v2_generated_entity_types_list_entity_types_async.py new file mode 100644 index 000000000..2db72fd4e --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_entity_types_list_entity_types_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListEntityTypes +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_EntityTypes_ListEntityTypes_async] +from google.cloud import dialogflow_v2 + + +async def sample_list_entity_types(): + # Create a client + client = dialogflow_v2.EntityTypesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListEntityTypesRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_entity_types(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2_generated_EntityTypes_ListEntityTypes_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_entity_types_list_entity_types_sync.py b/samples/generated_samples/dialogflow_v2_generated_entity_types_list_entity_types_sync.py new file mode 100644 index 000000000..0c45abd3d --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_entity_types_list_entity_types_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListEntityTypes +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_EntityTypes_ListEntityTypes_sync] +from google.cloud import dialogflow_v2 + + +def sample_list_entity_types(): + # Create a client + client = dialogflow_v2.EntityTypesClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListEntityTypesRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_entity_types(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2_generated_EntityTypes_ListEntityTypes_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_entity_types_update_entity_type_async.py b/samples/generated_samples/dialogflow_v2_generated_entity_types_update_entity_type_async.py new file mode 100644 index 000000000..6f5e0f616 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_entity_types_update_entity_type_async.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_EntityTypes_UpdateEntityType_async] +from google.cloud import dialogflow_v2 + + +async def sample_update_entity_type(): + # Create a client + client = dialogflow_v2.EntityTypesAsyncClient() + + # Initialize request argument(s) + entity_type = dialogflow_v2.EntityType() + entity_type.display_name = "display_name_value" + entity_type.kind = "KIND_REGEXP" + + request = dialogflow_v2.UpdateEntityTypeRequest( + entity_type=entity_type, + ) + + # Make the request + response = await client.update_entity_type(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_EntityTypes_UpdateEntityType_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_entity_types_update_entity_type_sync.py b/samples/generated_samples/dialogflow_v2_generated_entity_types_update_entity_type_sync.py new file mode 100644 index 000000000..f78af4566 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_entity_types_update_entity_type_sync.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_EntityTypes_UpdateEntityType_sync] +from google.cloud import dialogflow_v2 + + +def sample_update_entity_type(): + # Create a client + client = dialogflow_v2.EntityTypesClient() + + # Initialize request argument(s) + entity_type = dialogflow_v2.EntityType() + entity_type.display_name = "display_name_value" + entity_type.kind = "KIND_REGEXP" + + request = dialogflow_v2.UpdateEntityTypeRequest( + entity_type=entity_type, + ) + + # Make the request + response = client.update_entity_type(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_EntityTypes_UpdateEntityType_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_environments_create_environment_async.py b/samples/generated_samples/dialogflow_v2_generated_environments_create_environment_async.py new file mode 100644 index 000000000..595c5607e --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_environments_create_environment_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateEnvironment +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Environments_CreateEnvironment_async] +from google.cloud import dialogflow_v2 + + +async def sample_create_environment(): + # Create a client + client = dialogflow_v2.EnvironmentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.CreateEnvironmentRequest( + parent="parent_value", + environment_id="environment_id_value", + ) + + # Make the request + response = await client.create_environment(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Environments_CreateEnvironment_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_environments_create_environment_sync.py b/samples/generated_samples/dialogflow_v2_generated_environments_create_environment_sync.py new file mode 100644 index 000000000..e5433980e --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_environments_create_environment_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateEnvironment +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Environments_CreateEnvironment_sync] +from google.cloud import dialogflow_v2 + + +def sample_create_environment(): + # Create a client + client = dialogflow_v2.EnvironmentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.CreateEnvironmentRequest( + parent="parent_value", + environment_id="environment_id_value", + ) + + # Make the request + response = client.create_environment(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Environments_CreateEnvironment_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_environments_delete_environment_async.py b/samples/generated_samples/dialogflow_v2_generated_environments_delete_environment_async.py new file mode 100644 index 000000000..303a277e7 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_environments_delete_environment_async.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteEnvironment +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Environments_DeleteEnvironment_async] +from google.cloud import dialogflow_v2 + + +async def sample_delete_environment(): + # Create a client + client = dialogflow_v2.EnvironmentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteEnvironmentRequest( + name="name_value", + ) + + # Make the request + await client.delete_environment(request=request) + + +# [END dialogflow_v2_generated_Environments_DeleteEnvironment_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_environments_delete_environment_sync.py b/samples/generated_samples/dialogflow_v2_generated_environments_delete_environment_sync.py new file mode 100644 index 000000000..ad880a41b --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_environments_delete_environment_sync.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteEnvironment +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Environments_DeleteEnvironment_sync] +from google.cloud import dialogflow_v2 + + +def sample_delete_environment(): + # Create a client + client = dialogflow_v2.EnvironmentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteEnvironmentRequest( + name="name_value", + ) + + # Make the request + client.delete_environment(request=request) + + +# [END dialogflow_v2_generated_Environments_DeleteEnvironment_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_environments_get_environment_async.py b/samples/generated_samples/dialogflow_v2_generated_environments_get_environment_async.py new file mode 100644 index 000000000..4471cadad --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_environments_get_environment_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetEnvironment +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Environments_GetEnvironment_async] +from google.cloud import dialogflow_v2 + + +async def sample_get_environment(): + # Create a client + client = dialogflow_v2.EnvironmentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetEnvironmentRequest( + name="name_value", + ) + + # Make the request + response = await client.get_environment(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Environments_GetEnvironment_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_environments_get_environment_history_async.py b/samples/generated_samples/dialogflow_v2_generated_environments_get_environment_history_async.py new file mode 100644 index 000000000..209d6de71 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_environments_get_environment_history_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetEnvironmentHistory +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Environments_GetEnvironmentHistory_async] +from google.cloud import dialogflow_v2 + + +async def sample_get_environment_history(): + # Create a client + client = dialogflow_v2.EnvironmentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetEnvironmentHistoryRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.get_environment_history(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2_generated_Environments_GetEnvironmentHistory_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_environments_get_environment_history_sync.py b/samples/generated_samples/dialogflow_v2_generated_environments_get_environment_history_sync.py new file mode 100644 index 000000000..5ee567b72 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_environments_get_environment_history_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetEnvironmentHistory +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Environments_GetEnvironmentHistory_sync] +from google.cloud import dialogflow_v2 + + +def sample_get_environment_history(): + # Create a client + client = dialogflow_v2.EnvironmentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetEnvironmentHistoryRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.get_environment_history(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2_generated_Environments_GetEnvironmentHistory_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_environments_get_environment_sync.py b/samples/generated_samples/dialogflow_v2_generated_environments_get_environment_sync.py new file mode 100644 index 000000000..b4e67af9b --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_environments_get_environment_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetEnvironment +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Environments_GetEnvironment_sync] +from google.cloud import dialogflow_v2 + + +def sample_get_environment(): + # Create a client + client = dialogflow_v2.EnvironmentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetEnvironmentRequest( + name="name_value", + ) + + # Make the request + response = client.get_environment(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Environments_GetEnvironment_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_environments_list_environments_async.py b/samples/generated_samples/dialogflow_v2_generated_environments_list_environments_async.py new file mode 100644 index 000000000..67515f7f3 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_environments_list_environments_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListEnvironments +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Environments_ListEnvironments_async] +from google.cloud import dialogflow_v2 + + +async def sample_list_environments(): + # Create a client + client = dialogflow_v2.EnvironmentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListEnvironmentsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_environments(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2_generated_Environments_ListEnvironments_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_environments_list_environments_sync.py b/samples/generated_samples/dialogflow_v2_generated_environments_list_environments_sync.py new file mode 100644 index 000000000..635be574d --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_environments_list_environments_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListEnvironments +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Environments_ListEnvironments_sync] +from google.cloud import dialogflow_v2 + + +def sample_list_environments(): + # Create a client + client = dialogflow_v2.EnvironmentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListEnvironmentsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_environments(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2_generated_Environments_ListEnvironments_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_environments_update_environment_async.py b/samples/generated_samples/dialogflow_v2_generated_environments_update_environment_async.py new file mode 100644 index 000000000..8b101f6db --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_environments_update_environment_async.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateEnvironment +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Environments_UpdateEnvironment_async] +from google.cloud import dialogflow_v2 + + +async def sample_update_environment(): + # Create a client + client = dialogflow_v2.EnvironmentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.UpdateEnvironmentRequest( + ) + + # Make the request + response = await client.update_environment(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Environments_UpdateEnvironment_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_environments_update_environment_sync.py b/samples/generated_samples/dialogflow_v2_generated_environments_update_environment_sync.py new file mode 100644 index 000000000..ae0ee2038 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_environments_update_environment_sync.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateEnvironment +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Environments_UpdateEnvironment_sync] +from google.cloud import dialogflow_v2 + + +def sample_update_environment(): + # Create a client + client = dialogflow_v2.EnvironmentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.UpdateEnvironmentRequest( + ) + + # Make the request + response = client.update_environment(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Environments_UpdateEnvironment_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_fulfillments_get_fulfillment_async.py b/samples/generated_samples/dialogflow_v2_generated_fulfillments_get_fulfillment_async.py new file mode 100644 index 000000000..fdc08e7fc --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_fulfillments_get_fulfillment_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetFulfillment +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Fulfillments_GetFulfillment_async] +from google.cloud import dialogflow_v2 + + +async def sample_get_fulfillment(): + # Create a client + client = dialogflow_v2.FulfillmentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetFulfillmentRequest( + name="name_value", + ) + + # Make the request + response = await client.get_fulfillment(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Fulfillments_GetFulfillment_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_fulfillments_get_fulfillment_sync.py b/samples/generated_samples/dialogflow_v2_generated_fulfillments_get_fulfillment_sync.py new file mode 100644 index 000000000..4c4b75943 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_fulfillments_get_fulfillment_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetFulfillment +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Fulfillments_GetFulfillment_sync] +from google.cloud import dialogflow_v2 + + +def sample_get_fulfillment(): + # Create a client + client = dialogflow_v2.FulfillmentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetFulfillmentRequest( + name="name_value", + ) + + # Make the request + response = client.get_fulfillment(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Fulfillments_GetFulfillment_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_fulfillments_update_fulfillment_async.py b/samples/generated_samples/dialogflow_v2_generated_fulfillments_update_fulfillment_async.py new file mode 100644 index 000000000..e2af53916 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_fulfillments_update_fulfillment_async.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateFulfillment +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Fulfillments_UpdateFulfillment_async] +from google.cloud import dialogflow_v2 + + +async def sample_update_fulfillment(): + # Create a client + client = dialogflow_v2.FulfillmentsAsyncClient() + + # Initialize request argument(s) + fulfillment = dialogflow_v2.Fulfillment() + fulfillment.generic_web_service.uri = "uri_value" + fulfillment.name = "name_value" + + request = dialogflow_v2.UpdateFulfillmentRequest( + fulfillment=fulfillment, + ) + + # Make the request + response = await client.update_fulfillment(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Fulfillments_UpdateFulfillment_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_fulfillments_update_fulfillment_sync.py b/samples/generated_samples/dialogflow_v2_generated_fulfillments_update_fulfillment_sync.py new file mode 100644 index 000000000..a29eba691 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_fulfillments_update_fulfillment_sync.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateFulfillment +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Fulfillments_UpdateFulfillment_sync] +from google.cloud import dialogflow_v2 + + +def sample_update_fulfillment(): + # Create a client + client = dialogflow_v2.FulfillmentsClient() + + # Initialize request argument(s) + fulfillment = dialogflow_v2.Fulfillment() + fulfillment.generic_web_service.uri = "uri_value" + fulfillment.name = "name_value" + + request = dialogflow_v2.UpdateFulfillmentRequest( + fulfillment=fulfillment, + ) + + # Make the request + response = client.update_fulfillment(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Fulfillments_UpdateFulfillment_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_intents_batch_delete_intents_async.py b/samples/generated_samples/dialogflow_v2_generated_intents_batch_delete_intents_async.py new file mode 100644 index 000000000..4eecde23d --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_intents_batch_delete_intents_async.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchDeleteIntents +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Intents_BatchDeleteIntents_async] +from google.cloud import dialogflow_v2 + + +async def sample_batch_delete_intents(): + # Create a client + client = dialogflow_v2.IntentsAsyncClient() + + # Initialize request argument(s) + intents = dialogflow_v2.Intent() + intents.display_name = "display_name_value" + + request = dialogflow_v2.BatchDeleteIntentsRequest( + parent="parent_value", + intents=intents, + ) + + # Make the request + operation = client.batch_delete_intents(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Intents_BatchDeleteIntents_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_intents_batch_delete_intents_sync.py b/samples/generated_samples/dialogflow_v2_generated_intents_batch_delete_intents_sync.py new file mode 100644 index 000000000..520561d9b --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_intents_batch_delete_intents_sync.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchDeleteIntents +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Intents_BatchDeleteIntents_sync] +from google.cloud import dialogflow_v2 + + +def sample_batch_delete_intents(): + # Create a client + client = dialogflow_v2.IntentsClient() + + # Initialize request argument(s) + intents = dialogflow_v2.Intent() + intents.display_name = "display_name_value" + + request = dialogflow_v2.BatchDeleteIntentsRequest( + parent="parent_value", + intents=intents, + ) + + # Make the request + operation = client.batch_delete_intents(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Intents_BatchDeleteIntents_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_intents_batch_update_intents_async.py b/samples/generated_samples/dialogflow_v2_generated_intents_batch_update_intents_async.py new file mode 100644 index 000000000..f876c0182 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_intents_batch_update_intents_async.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchUpdateIntents +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Intents_BatchUpdateIntents_async] +from google.cloud import dialogflow_v2 + + +async def sample_batch_update_intents(): + # Create a client + client = dialogflow_v2.IntentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.BatchUpdateIntentsRequest( + intent_batch_uri="intent_batch_uri_value", + parent="parent_value", + ) + + # Make the request + operation = client.batch_update_intents(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Intents_BatchUpdateIntents_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_intents_batch_update_intents_sync.py b/samples/generated_samples/dialogflow_v2_generated_intents_batch_update_intents_sync.py new file mode 100644 index 000000000..83d7877e6 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_intents_batch_update_intents_sync.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchUpdateIntents +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Intents_BatchUpdateIntents_sync] +from google.cloud import dialogflow_v2 + + +def sample_batch_update_intents(): + # Create a client + client = dialogflow_v2.IntentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.BatchUpdateIntentsRequest( + intent_batch_uri="intent_batch_uri_value", + parent="parent_value", + ) + + # Make the request + operation = client.batch_update_intents(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Intents_BatchUpdateIntents_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_intents_create_intent_async.py b/samples/generated_samples/dialogflow_v2_generated_intents_create_intent_async.py new file mode 100644 index 000000000..df9b016d4 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_intents_create_intent_async.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateIntent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Intents_CreateIntent_async] +from google.cloud import dialogflow_v2 + + +async def sample_create_intent(): + # Create a client + client = dialogflow_v2.IntentsAsyncClient() + + # Initialize request argument(s) + intent = dialogflow_v2.Intent() + intent.display_name = "display_name_value" + + request = dialogflow_v2.CreateIntentRequest( + parent="parent_value", + intent=intent, + ) + + # Make the request + response = await client.create_intent(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Intents_CreateIntent_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_intents_create_intent_sync.py b/samples/generated_samples/dialogflow_v2_generated_intents_create_intent_sync.py new file mode 100644 index 000000000..d6b763cbb --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_intents_create_intent_sync.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateIntent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Intents_CreateIntent_sync] +from google.cloud import dialogflow_v2 + + +def sample_create_intent(): + # Create a client + client = dialogflow_v2.IntentsClient() + + # Initialize request argument(s) + intent = dialogflow_v2.Intent() + intent.display_name = "display_name_value" + + request = dialogflow_v2.CreateIntentRequest( + parent="parent_value", + intent=intent, + ) + + # Make the request + response = client.create_intent(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Intents_CreateIntent_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_intents_delete_intent_async.py b/samples/generated_samples/dialogflow_v2_generated_intents_delete_intent_async.py new file mode 100644 index 000000000..7bc748c48 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_intents_delete_intent_async.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteIntent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Intents_DeleteIntent_async] +from google.cloud import dialogflow_v2 + + +async def sample_delete_intent(): + # Create a client + client = dialogflow_v2.IntentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteIntentRequest( + name="name_value", + ) + + # Make the request + await client.delete_intent(request=request) + + +# [END dialogflow_v2_generated_Intents_DeleteIntent_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_intents_delete_intent_sync.py b/samples/generated_samples/dialogflow_v2_generated_intents_delete_intent_sync.py new file mode 100644 index 000000000..6a01c49a7 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_intents_delete_intent_sync.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteIntent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Intents_DeleteIntent_sync] +from google.cloud import dialogflow_v2 + + +def sample_delete_intent(): + # Create a client + client = dialogflow_v2.IntentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteIntentRequest( + name="name_value", + ) + + # Make the request + client.delete_intent(request=request) + + +# [END dialogflow_v2_generated_Intents_DeleteIntent_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_intents_get_intent_async.py b/samples/generated_samples/dialogflow_v2_generated_intents_get_intent_async.py new file mode 100644 index 000000000..a0c725446 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_intents_get_intent_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetIntent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Intents_GetIntent_async] +from google.cloud import dialogflow_v2 + + +async def sample_get_intent(): + # Create a client + client = dialogflow_v2.IntentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetIntentRequest( + name="name_value", + ) + + # Make the request + response = await client.get_intent(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Intents_GetIntent_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_intents_get_intent_sync.py b/samples/generated_samples/dialogflow_v2_generated_intents_get_intent_sync.py new file mode 100644 index 000000000..978abb4e9 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_intents_get_intent_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetIntent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Intents_GetIntent_sync] +from google.cloud import dialogflow_v2 + + +def sample_get_intent(): + # Create a client + client = dialogflow_v2.IntentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetIntentRequest( + name="name_value", + ) + + # Make the request + response = client.get_intent(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Intents_GetIntent_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_intents_list_intents_async.py b/samples/generated_samples/dialogflow_v2_generated_intents_list_intents_async.py new file mode 100644 index 000000000..f69f04adb --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_intents_list_intents_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListIntents +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Intents_ListIntents_async] +from google.cloud import dialogflow_v2 + + +async def sample_list_intents(): + # Create a client + client = dialogflow_v2.IntentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListIntentsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_intents(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2_generated_Intents_ListIntents_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_intents_list_intents_sync.py b/samples/generated_samples/dialogflow_v2_generated_intents_list_intents_sync.py new file mode 100644 index 000000000..f18798968 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_intents_list_intents_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListIntents +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Intents_ListIntents_sync] +from google.cloud import dialogflow_v2 + + +def sample_list_intents(): + # Create a client + client = dialogflow_v2.IntentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListIntentsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_intents(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2_generated_Intents_ListIntents_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_intents_update_intent_async.py b/samples/generated_samples/dialogflow_v2_generated_intents_update_intent_async.py new file mode 100644 index 000000000..4113c5cf8 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_intents_update_intent_async.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateIntent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Intents_UpdateIntent_async] +from google.cloud import dialogflow_v2 + + +async def sample_update_intent(): + # Create a client + client = dialogflow_v2.IntentsAsyncClient() + + # Initialize request argument(s) + intent = dialogflow_v2.Intent() + intent.display_name = "display_name_value" + + request = dialogflow_v2.UpdateIntentRequest( + intent=intent, + ) + + # Make the request + response = await client.update_intent(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Intents_UpdateIntent_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_intents_update_intent_sync.py b/samples/generated_samples/dialogflow_v2_generated_intents_update_intent_sync.py new file mode 100644 index 000000000..42119d9ca --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_intents_update_intent_sync.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateIntent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Intents_UpdateIntent_sync] +from google.cloud import dialogflow_v2 + + +def sample_update_intent(): + # Create a client + client = dialogflow_v2.IntentsClient() + + # Initialize request argument(s) + intent = dialogflow_v2.Intent() + intent.display_name = "display_name_value" + + request = dialogflow_v2.UpdateIntentRequest( + intent=intent, + ) + + # Make the request + response = client.update_intent(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Intents_UpdateIntent_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_create_knowledge_base_async.py b/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_create_knowledge_base_async.py new file mode 100644 index 000000000..ff86b5ac1 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_create_knowledge_base_async.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateKnowledgeBase +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_KnowledgeBases_CreateKnowledgeBase_async] +from google.cloud import dialogflow_v2 + + +async def sample_create_knowledge_base(): + # Create a client + client = dialogflow_v2.KnowledgeBasesAsyncClient() + + # Initialize request argument(s) + knowledge_base = dialogflow_v2.KnowledgeBase() + knowledge_base.display_name = "display_name_value" + + request = dialogflow_v2.CreateKnowledgeBaseRequest( + parent="parent_value", + knowledge_base=knowledge_base, + ) + + # Make the request + response = await client.create_knowledge_base(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_KnowledgeBases_CreateKnowledgeBase_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_create_knowledge_base_sync.py b/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_create_knowledge_base_sync.py new file mode 100644 index 000000000..bdf9b7e86 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_create_knowledge_base_sync.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateKnowledgeBase +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_KnowledgeBases_CreateKnowledgeBase_sync] +from google.cloud import dialogflow_v2 + + +def sample_create_knowledge_base(): + # Create a client + client = dialogflow_v2.KnowledgeBasesClient() + + # Initialize request argument(s) + knowledge_base = dialogflow_v2.KnowledgeBase() + knowledge_base.display_name = "display_name_value" + + request = dialogflow_v2.CreateKnowledgeBaseRequest( + parent="parent_value", + knowledge_base=knowledge_base, + ) + + # Make the request + response = client.create_knowledge_base(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_KnowledgeBases_CreateKnowledgeBase_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_delete_knowledge_base_async.py b/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_delete_knowledge_base_async.py new file mode 100644 index 000000000..d939d6146 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_delete_knowledge_base_async.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteKnowledgeBase +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_KnowledgeBases_DeleteKnowledgeBase_async] +from google.cloud import dialogflow_v2 + + +async def sample_delete_knowledge_base(): + # Create a client + client = dialogflow_v2.KnowledgeBasesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteKnowledgeBaseRequest( + name="name_value", + ) + + # Make the request + await client.delete_knowledge_base(request=request) + + +# [END dialogflow_v2_generated_KnowledgeBases_DeleteKnowledgeBase_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_delete_knowledge_base_sync.py b/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_delete_knowledge_base_sync.py new file mode 100644 index 000000000..bb5b3ee46 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_delete_knowledge_base_sync.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteKnowledgeBase +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_KnowledgeBases_DeleteKnowledgeBase_sync] +from google.cloud import dialogflow_v2 + + +def sample_delete_knowledge_base(): + # Create a client + client = dialogflow_v2.KnowledgeBasesClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteKnowledgeBaseRequest( + name="name_value", + ) + + # Make the request + client.delete_knowledge_base(request=request) + + +# [END dialogflow_v2_generated_KnowledgeBases_DeleteKnowledgeBase_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_get_knowledge_base_async.py b/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_get_knowledge_base_async.py new file mode 100644 index 000000000..93cc578fe --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_get_knowledge_base_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetKnowledgeBase +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_KnowledgeBases_GetKnowledgeBase_async] +from google.cloud import dialogflow_v2 + + +async def sample_get_knowledge_base(): + # Create a client + client = dialogflow_v2.KnowledgeBasesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetKnowledgeBaseRequest( + name="name_value", + ) + + # Make the request + response = await client.get_knowledge_base(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_KnowledgeBases_GetKnowledgeBase_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_get_knowledge_base_sync.py b/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_get_knowledge_base_sync.py new file mode 100644 index 000000000..a282ce65f --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_get_knowledge_base_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetKnowledgeBase +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_KnowledgeBases_GetKnowledgeBase_sync] +from google.cloud import dialogflow_v2 + + +def sample_get_knowledge_base(): + # Create a client + client = dialogflow_v2.KnowledgeBasesClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetKnowledgeBaseRequest( + name="name_value", + ) + + # Make the request + response = client.get_knowledge_base(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_KnowledgeBases_GetKnowledgeBase_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_list_knowledge_bases_async.py b/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_list_knowledge_bases_async.py new file mode 100644 index 000000000..cedc4d077 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_list_knowledge_bases_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListKnowledgeBases +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_KnowledgeBases_ListKnowledgeBases_async] +from google.cloud import dialogflow_v2 + + +async def sample_list_knowledge_bases(): + # Create a client + client = dialogflow_v2.KnowledgeBasesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListKnowledgeBasesRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_knowledge_bases(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2_generated_KnowledgeBases_ListKnowledgeBases_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_list_knowledge_bases_sync.py b/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_list_knowledge_bases_sync.py new file mode 100644 index 000000000..61248b5ba --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_list_knowledge_bases_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListKnowledgeBases +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_KnowledgeBases_ListKnowledgeBases_sync] +from google.cloud import dialogflow_v2 + + +def sample_list_knowledge_bases(): + # Create a client + client = dialogflow_v2.KnowledgeBasesClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListKnowledgeBasesRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_knowledge_bases(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2_generated_KnowledgeBases_ListKnowledgeBases_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_update_knowledge_base_async.py b/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_update_knowledge_base_async.py new file mode 100644 index 000000000..80c92a4f6 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_update_knowledge_base_async.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateKnowledgeBase +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_KnowledgeBases_UpdateKnowledgeBase_async] +from google.cloud import dialogflow_v2 + + +async def sample_update_knowledge_base(): + # Create a client + client = dialogflow_v2.KnowledgeBasesAsyncClient() + + # Initialize request argument(s) + knowledge_base = dialogflow_v2.KnowledgeBase() + knowledge_base.display_name = "display_name_value" + + request = dialogflow_v2.UpdateKnowledgeBaseRequest( + knowledge_base=knowledge_base, + ) + + # Make the request + response = await client.update_knowledge_base(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_KnowledgeBases_UpdateKnowledgeBase_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_update_knowledge_base_sync.py b/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_update_knowledge_base_sync.py new file mode 100644 index 000000000..3947e60ce --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_knowledge_bases_update_knowledge_base_sync.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateKnowledgeBase +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_KnowledgeBases_UpdateKnowledgeBase_sync] +from google.cloud import dialogflow_v2 + + +def sample_update_knowledge_base(): + # Create a client + client = dialogflow_v2.KnowledgeBasesClient() + + # Initialize request argument(s) + knowledge_base = dialogflow_v2.KnowledgeBase() + knowledge_base.display_name = "display_name_value" + + request = dialogflow_v2.UpdateKnowledgeBaseRequest( + knowledge_base=knowledge_base, + ) + + # Make the request + response = client.update_knowledge_base(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_KnowledgeBases_UpdateKnowledgeBase_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_participants_analyze_content_async.py b/samples/generated_samples/dialogflow_v2_generated_participants_analyze_content_async.py new file mode 100644 index 000000000..27d32e9ba --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_participants_analyze_content_async.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for AnalyzeContent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Participants_AnalyzeContent_async] +from google.cloud import dialogflow_v2 + + +async def sample_analyze_content(): + # Create a client + client = dialogflow_v2.ParticipantsAsyncClient() + + # Initialize request argument(s) + text_input = dialogflow_v2.TextInput() + text_input.text = "text_value" + text_input.language_code = "language_code_value" + + request = dialogflow_v2.AnalyzeContentRequest( + text_input=text_input, + participant="participant_value", + ) + + # Make the request + response = await client.analyze_content(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Participants_AnalyzeContent_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_participants_analyze_content_sync.py b/samples/generated_samples/dialogflow_v2_generated_participants_analyze_content_sync.py new file mode 100644 index 000000000..b5a26c585 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_participants_analyze_content_sync.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for AnalyzeContent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Participants_AnalyzeContent_sync] +from google.cloud import dialogflow_v2 + + +def sample_analyze_content(): + # Create a client + client = dialogflow_v2.ParticipantsClient() + + # Initialize request argument(s) + text_input = dialogflow_v2.TextInput() + text_input.text = "text_value" + text_input.language_code = "language_code_value" + + request = dialogflow_v2.AnalyzeContentRequest( + text_input=text_input, + participant="participant_value", + ) + + # Make the request + response = client.analyze_content(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Participants_AnalyzeContent_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_participants_create_participant_async.py b/samples/generated_samples/dialogflow_v2_generated_participants_create_participant_async.py new file mode 100644 index 000000000..a8004563e --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_participants_create_participant_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateParticipant +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Participants_CreateParticipant_async] +from google.cloud import dialogflow_v2 + + +async def sample_create_participant(): + # Create a client + client = dialogflow_v2.ParticipantsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.CreateParticipantRequest( + parent="parent_value", + ) + + # Make the request + response = await client.create_participant(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Participants_CreateParticipant_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_participants_create_participant_sync.py b/samples/generated_samples/dialogflow_v2_generated_participants_create_participant_sync.py new file mode 100644 index 000000000..1e18c8a59 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_participants_create_participant_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateParticipant +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Participants_CreateParticipant_sync] +from google.cloud import dialogflow_v2 + + +def sample_create_participant(): + # Create a client + client = dialogflow_v2.ParticipantsClient() + + # Initialize request argument(s) + request = dialogflow_v2.CreateParticipantRequest( + parent="parent_value", + ) + + # Make the request + response = client.create_participant(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Participants_CreateParticipant_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_participants_get_participant_async.py b/samples/generated_samples/dialogflow_v2_generated_participants_get_participant_async.py new file mode 100644 index 000000000..0f5161e40 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_participants_get_participant_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetParticipant +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Participants_GetParticipant_async] +from google.cloud import dialogflow_v2 + + +async def sample_get_participant(): + # Create a client + client = dialogflow_v2.ParticipantsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetParticipantRequest( + name="name_value", + ) + + # Make the request + response = await client.get_participant(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Participants_GetParticipant_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_participants_get_participant_sync.py b/samples/generated_samples/dialogflow_v2_generated_participants_get_participant_sync.py new file mode 100644 index 000000000..a96e74ce3 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_participants_get_participant_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetParticipant +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Participants_GetParticipant_sync] +from google.cloud import dialogflow_v2 + + +def sample_get_participant(): + # Create a client + client = dialogflow_v2.ParticipantsClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetParticipantRequest( + name="name_value", + ) + + # Make the request + response = client.get_participant(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Participants_GetParticipant_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_participants_list_participants_async.py b/samples/generated_samples/dialogflow_v2_generated_participants_list_participants_async.py new file mode 100644 index 000000000..9f001764a --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_participants_list_participants_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListParticipants +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Participants_ListParticipants_async] +from google.cloud import dialogflow_v2 + + +async def sample_list_participants(): + # Create a client + client = dialogflow_v2.ParticipantsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListParticipantsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_participants(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2_generated_Participants_ListParticipants_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_participants_list_participants_sync.py b/samples/generated_samples/dialogflow_v2_generated_participants_list_participants_sync.py new file mode 100644 index 000000000..6b84b8ab0 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_participants_list_participants_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListParticipants +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Participants_ListParticipants_sync] +from google.cloud import dialogflow_v2 + + +def sample_list_participants(): + # Create a client + client = dialogflow_v2.ParticipantsClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListParticipantsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_participants(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2_generated_Participants_ListParticipants_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_participants_suggest_articles_async.py b/samples/generated_samples/dialogflow_v2_generated_participants_suggest_articles_async.py new file mode 100644 index 000000000..2dea6d0a7 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_participants_suggest_articles_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for SuggestArticles +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Participants_SuggestArticles_async] +from google.cloud import dialogflow_v2 + + +async def sample_suggest_articles(): + # Create a client + client = dialogflow_v2.ParticipantsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.SuggestArticlesRequest( + parent="parent_value", + ) + + # Make the request + response = await client.suggest_articles(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Participants_SuggestArticles_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_participants_suggest_articles_sync.py b/samples/generated_samples/dialogflow_v2_generated_participants_suggest_articles_sync.py new file mode 100644 index 000000000..e3e5c2aee --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_participants_suggest_articles_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for SuggestArticles +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Participants_SuggestArticles_sync] +from google.cloud import dialogflow_v2 + + +def sample_suggest_articles(): + # Create a client + client = dialogflow_v2.ParticipantsClient() + + # Initialize request argument(s) + request = dialogflow_v2.SuggestArticlesRequest( + parent="parent_value", + ) + + # Make the request + response = client.suggest_articles(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Participants_SuggestArticles_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_participants_suggest_faq_answers_async.py b/samples/generated_samples/dialogflow_v2_generated_participants_suggest_faq_answers_async.py new file mode 100644 index 000000000..8c088efb1 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_participants_suggest_faq_answers_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for SuggestFaqAnswers +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Participants_SuggestFaqAnswers_async] +from google.cloud import dialogflow_v2 + + +async def sample_suggest_faq_answers(): + # Create a client + client = dialogflow_v2.ParticipantsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.SuggestFaqAnswersRequest( + parent="parent_value", + ) + + # Make the request + response = await client.suggest_faq_answers(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Participants_SuggestFaqAnswers_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_participants_suggest_faq_answers_sync.py b/samples/generated_samples/dialogflow_v2_generated_participants_suggest_faq_answers_sync.py new file mode 100644 index 000000000..23272a9e3 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_participants_suggest_faq_answers_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for SuggestFaqAnswers +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Participants_SuggestFaqAnswers_sync] +from google.cloud import dialogflow_v2 + + +def sample_suggest_faq_answers(): + # Create a client + client = dialogflow_v2.ParticipantsClient() + + # Initialize request argument(s) + request = dialogflow_v2.SuggestFaqAnswersRequest( + parent="parent_value", + ) + + # Make the request + response = client.suggest_faq_answers(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Participants_SuggestFaqAnswers_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_participants_suggest_smart_replies_async.py b/samples/generated_samples/dialogflow_v2_generated_participants_suggest_smart_replies_async.py new file mode 100644 index 000000000..d3f53f096 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_participants_suggest_smart_replies_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for SuggestSmartReplies +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Participants_SuggestSmartReplies_async] +from google.cloud import dialogflow_v2 + + +async def sample_suggest_smart_replies(): + # Create a client + client = dialogflow_v2.ParticipantsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.SuggestSmartRepliesRequest( + parent="parent_value", + ) + + # Make the request + response = await client.suggest_smart_replies(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Participants_SuggestSmartReplies_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_participants_suggest_smart_replies_sync.py b/samples/generated_samples/dialogflow_v2_generated_participants_suggest_smart_replies_sync.py new file mode 100644 index 000000000..f16879eef --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_participants_suggest_smart_replies_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for SuggestSmartReplies +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Participants_SuggestSmartReplies_sync] +from google.cloud import dialogflow_v2 + + +def sample_suggest_smart_replies(): + # Create a client + client = dialogflow_v2.ParticipantsClient() + + # Initialize request argument(s) + request = dialogflow_v2.SuggestSmartRepliesRequest( + parent="parent_value", + ) + + # Make the request + response = client.suggest_smart_replies(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Participants_SuggestSmartReplies_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_participants_update_participant_async.py b/samples/generated_samples/dialogflow_v2_generated_participants_update_participant_async.py new file mode 100644 index 000000000..7f6b70a07 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_participants_update_participant_async.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateParticipant +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Participants_UpdateParticipant_async] +from google.cloud import dialogflow_v2 + + +async def sample_update_participant(): + # Create a client + client = dialogflow_v2.ParticipantsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.UpdateParticipantRequest( + ) + + # Make the request + response = await client.update_participant(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Participants_UpdateParticipant_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_participants_update_participant_sync.py b/samples/generated_samples/dialogflow_v2_generated_participants_update_participant_sync.py new file mode 100644 index 000000000..f1e71dccf --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_participants_update_participant_sync.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateParticipant +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Participants_UpdateParticipant_sync] +from google.cloud import dialogflow_v2 + + +def sample_update_participant(): + # Create a client + client = dialogflow_v2.ParticipantsClient() + + # Initialize request argument(s) + request = dialogflow_v2.UpdateParticipantRequest( + ) + + # Make the request + response = client.update_participant(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Participants_UpdateParticipant_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_session_entity_types_create_session_entity_type_async.py b/samples/generated_samples/dialogflow_v2_generated_session_entity_types_create_session_entity_type_async.py new file mode 100644 index 000000000..9ea04bffe --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_session_entity_types_create_session_entity_type_async.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateSessionEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_SessionEntityTypes_CreateSessionEntityType_async] +from google.cloud import dialogflow_v2 + + +async def sample_create_session_entity_type(): + # Create a client + client = dialogflow_v2.SessionEntityTypesAsyncClient() + + # Initialize request argument(s) + session_entity_type = dialogflow_v2.SessionEntityType() + session_entity_type.name = "name_value" + session_entity_type.entity_override_mode = "ENTITY_OVERRIDE_MODE_SUPPLEMENT" + session_entity_type.entities.value = "value_value" + session_entity_type.entities.synonyms = ['synonyms_value_1', 'synonyms_value_2'] + + request = dialogflow_v2.CreateSessionEntityTypeRequest( + parent="parent_value", + session_entity_type=session_entity_type, + ) + + # Make the request + response = await client.create_session_entity_type(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_SessionEntityTypes_CreateSessionEntityType_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_session_entity_types_create_session_entity_type_sync.py b/samples/generated_samples/dialogflow_v2_generated_session_entity_types_create_session_entity_type_sync.py new file mode 100644 index 000000000..7131321a4 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_session_entity_types_create_session_entity_type_sync.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateSessionEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_SessionEntityTypes_CreateSessionEntityType_sync] +from google.cloud import dialogflow_v2 + + +def sample_create_session_entity_type(): + # Create a client + client = dialogflow_v2.SessionEntityTypesClient() + + # Initialize request argument(s) + session_entity_type = dialogflow_v2.SessionEntityType() + session_entity_type.name = "name_value" + session_entity_type.entity_override_mode = "ENTITY_OVERRIDE_MODE_SUPPLEMENT" + session_entity_type.entities.value = "value_value" + session_entity_type.entities.synonyms = ['synonyms_value_1', 'synonyms_value_2'] + + request = dialogflow_v2.CreateSessionEntityTypeRequest( + parent="parent_value", + session_entity_type=session_entity_type, + ) + + # Make the request + response = client.create_session_entity_type(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_SessionEntityTypes_CreateSessionEntityType_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_session_entity_types_delete_session_entity_type_async.py b/samples/generated_samples/dialogflow_v2_generated_session_entity_types_delete_session_entity_type_async.py new file mode 100644 index 000000000..aaf526492 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_session_entity_types_delete_session_entity_type_async.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteSessionEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_SessionEntityTypes_DeleteSessionEntityType_async] +from google.cloud import dialogflow_v2 + + +async def sample_delete_session_entity_type(): + # Create a client + client = dialogflow_v2.SessionEntityTypesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteSessionEntityTypeRequest( + name="name_value", + ) + + # Make the request + await client.delete_session_entity_type(request=request) + + +# [END dialogflow_v2_generated_SessionEntityTypes_DeleteSessionEntityType_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_session_entity_types_delete_session_entity_type_sync.py b/samples/generated_samples/dialogflow_v2_generated_session_entity_types_delete_session_entity_type_sync.py new file mode 100644 index 000000000..d22b1c2f5 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_session_entity_types_delete_session_entity_type_sync.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteSessionEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_SessionEntityTypes_DeleteSessionEntityType_sync] +from google.cloud import dialogflow_v2 + + +def sample_delete_session_entity_type(): + # Create a client + client = dialogflow_v2.SessionEntityTypesClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteSessionEntityTypeRequest( + name="name_value", + ) + + # Make the request + client.delete_session_entity_type(request=request) + + +# [END dialogflow_v2_generated_SessionEntityTypes_DeleteSessionEntityType_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_session_entity_types_get_session_entity_type_async.py b/samples/generated_samples/dialogflow_v2_generated_session_entity_types_get_session_entity_type_async.py new file mode 100644 index 000000000..dfca1efc0 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_session_entity_types_get_session_entity_type_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetSessionEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_SessionEntityTypes_GetSessionEntityType_async] +from google.cloud import dialogflow_v2 + + +async def sample_get_session_entity_type(): + # Create a client + client = dialogflow_v2.SessionEntityTypesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetSessionEntityTypeRequest( + name="name_value", + ) + + # Make the request + response = await client.get_session_entity_type(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_SessionEntityTypes_GetSessionEntityType_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_session_entity_types_get_session_entity_type_sync.py b/samples/generated_samples/dialogflow_v2_generated_session_entity_types_get_session_entity_type_sync.py new file mode 100644 index 000000000..2bead6113 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_session_entity_types_get_session_entity_type_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetSessionEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_SessionEntityTypes_GetSessionEntityType_sync] +from google.cloud import dialogflow_v2 + + +def sample_get_session_entity_type(): + # Create a client + client = dialogflow_v2.SessionEntityTypesClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetSessionEntityTypeRequest( + name="name_value", + ) + + # Make the request + response = client.get_session_entity_type(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_SessionEntityTypes_GetSessionEntityType_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_session_entity_types_list_session_entity_types_async.py b/samples/generated_samples/dialogflow_v2_generated_session_entity_types_list_session_entity_types_async.py new file mode 100644 index 000000000..e192f3c51 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_session_entity_types_list_session_entity_types_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListSessionEntityTypes +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_SessionEntityTypes_ListSessionEntityTypes_async] +from google.cloud import dialogflow_v2 + + +async def sample_list_session_entity_types(): + # Create a client + client = dialogflow_v2.SessionEntityTypesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListSessionEntityTypesRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_session_entity_types(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2_generated_SessionEntityTypes_ListSessionEntityTypes_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_session_entity_types_list_session_entity_types_sync.py b/samples/generated_samples/dialogflow_v2_generated_session_entity_types_list_session_entity_types_sync.py new file mode 100644 index 000000000..1f8511c77 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_session_entity_types_list_session_entity_types_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListSessionEntityTypes +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_SessionEntityTypes_ListSessionEntityTypes_sync] +from google.cloud import dialogflow_v2 + + +def sample_list_session_entity_types(): + # Create a client + client = dialogflow_v2.SessionEntityTypesClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListSessionEntityTypesRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_session_entity_types(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2_generated_SessionEntityTypes_ListSessionEntityTypes_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_session_entity_types_update_session_entity_type_async.py b/samples/generated_samples/dialogflow_v2_generated_session_entity_types_update_session_entity_type_async.py new file mode 100644 index 000000000..daf141a97 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_session_entity_types_update_session_entity_type_async.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateSessionEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_SessionEntityTypes_UpdateSessionEntityType_async] +from google.cloud import dialogflow_v2 + + +async def sample_update_session_entity_type(): + # Create a client + client = dialogflow_v2.SessionEntityTypesAsyncClient() + + # Initialize request argument(s) + session_entity_type = dialogflow_v2.SessionEntityType() + session_entity_type.name = "name_value" + session_entity_type.entity_override_mode = "ENTITY_OVERRIDE_MODE_SUPPLEMENT" + session_entity_type.entities.value = "value_value" + session_entity_type.entities.synonyms = ['synonyms_value_1', 'synonyms_value_2'] + + request = dialogflow_v2.UpdateSessionEntityTypeRequest( + session_entity_type=session_entity_type, + ) + + # Make the request + response = await client.update_session_entity_type(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_SessionEntityTypes_UpdateSessionEntityType_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_session_entity_types_update_session_entity_type_sync.py b/samples/generated_samples/dialogflow_v2_generated_session_entity_types_update_session_entity_type_sync.py new file mode 100644 index 000000000..be6324227 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_session_entity_types_update_session_entity_type_sync.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateSessionEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_SessionEntityTypes_UpdateSessionEntityType_sync] +from google.cloud import dialogflow_v2 + + +def sample_update_session_entity_type(): + # Create a client + client = dialogflow_v2.SessionEntityTypesClient() + + # Initialize request argument(s) + session_entity_type = dialogflow_v2.SessionEntityType() + session_entity_type.name = "name_value" + session_entity_type.entity_override_mode = "ENTITY_OVERRIDE_MODE_SUPPLEMENT" + session_entity_type.entities.value = "value_value" + session_entity_type.entities.synonyms = ['synonyms_value_1', 'synonyms_value_2'] + + request = dialogflow_v2.UpdateSessionEntityTypeRequest( + session_entity_type=session_entity_type, + ) + + # Make the request + response = client.update_session_entity_type(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_SessionEntityTypes_UpdateSessionEntityType_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_sessions_detect_intent_async.py b/samples/generated_samples/dialogflow_v2_generated_sessions_detect_intent_async.py new file mode 100644 index 000000000..c5cf3059f --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_sessions_detect_intent_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DetectIntent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Sessions_DetectIntent_async] +from google.cloud import dialogflow_v2 + + +async def sample_detect_intent(): + # Create a client + client = dialogflow_v2.SessionsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.DetectIntentRequest( + session="session_value", + ) + + # Make the request + response = await client.detect_intent(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Sessions_DetectIntent_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_sessions_detect_intent_sync.py b/samples/generated_samples/dialogflow_v2_generated_sessions_detect_intent_sync.py new file mode 100644 index 000000000..51c2a5c10 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_sessions_detect_intent_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DetectIntent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Sessions_DetectIntent_sync] +from google.cloud import dialogflow_v2 + + +def sample_detect_intent(): + # Create a client + client = dialogflow_v2.SessionsClient() + + # Initialize request argument(s) + request = dialogflow_v2.DetectIntentRequest( + session="session_value", + ) + + # Make the request + response = client.detect_intent(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Sessions_DetectIntent_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_sessions_streaming_detect_intent_async.py b/samples/generated_samples/dialogflow_v2_generated_sessions_streaming_detect_intent_async.py new file mode 100644 index 000000000..8da2c0bd8 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_sessions_streaming_detect_intent_async.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for StreamingDetectIntent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Sessions_StreamingDetectIntent_async] +from google.cloud import dialogflow_v2 + + +async def sample_streaming_detect_intent(): + # Create a client + client = dialogflow_v2.SessionsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.StreamingDetectIntentRequest( + session="session_value", + ) + + # This method expects an iterator which contains + # 'dialogflow_v2.StreamingDetectIntentRequest' objects + # Here we create a generator that yields a single `request` for + # demonstrative purposes. + requests = [request] + + def request_generator(): + for request in requests: + yield request + + # Make the request + stream = await client.streaming_detect_intent(requests=request_generator()) + + # Handle the response + async for response in stream: + print(response) + +# [END dialogflow_v2_generated_Sessions_StreamingDetectIntent_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_sessions_streaming_detect_intent_sync.py b/samples/generated_samples/dialogflow_v2_generated_sessions_streaming_detect_intent_sync.py new file mode 100644 index 000000000..e69a61f31 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_sessions_streaming_detect_intent_sync.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for StreamingDetectIntent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Sessions_StreamingDetectIntent_sync] +from google.cloud import dialogflow_v2 + + +def sample_streaming_detect_intent(): + # Create a client + client = dialogflow_v2.SessionsClient() + + # Initialize request argument(s) + request = dialogflow_v2.StreamingDetectIntentRequest( + session="session_value", + ) + + # This method expects an iterator which contains + # 'dialogflow_v2.StreamingDetectIntentRequest' objects + # Here we create a generator that yields a single `request` for + # demonstrative purposes. + requests = [request] + + def request_generator(): + for request in requests: + yield request + + # Make the request + stream = client.streaming_detect_intent(requests=request_generator()) + + # Handle the response + for response in stream: + print(response) + +# [END dialogflow_v2_generated_Sessions_StreamingDetectIntent_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_versions_create_version_async.py b/samples/generated_samples/dialogflow_v2_generated_versions_create_version_async.py new file mode 100644 index 000000000..ed5c151b5 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_versions_create_version_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateVersion +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Versions_CreateVersion_async] +from google.cloud import dialogflow_v2 + + +async def sample_create_version(): + # Create a client + client = dialogflow_v2.VersionsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.CreateVersionRequest( + parent="parent_value", + ) + + # Make the request + response = await client.create_version(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Versions_CreateVersion_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_versions_create_version_sync.py b/samples/generated_samples/dialogflow_v2_generated_versions_create_version_sync.py new file mode 100644 index 000000000..4fd226288 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_versions_create_version_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateVersion +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Versions_CreateVersion_sync] +from google.cloud import dialogflow_v2 + + +def sample_create_version(): + # Create a client + client = dialogflow_v2.VersionsClient() + + # Initialize request argument(s) + request = dialogflow_v2.CreateVersionRequest( + parent="parent_value", + ) + + # Make the request + response = client.create_version(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Versions_CreateVersion_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_versions_delete_version_async.py b/samples/generated_samples/dialogflow_v2_generated_versions_delete_version_async.py new file mode 100644 index 000000000..f8cae3043 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_versions_delete_version_async.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteVersion +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Versions_DeleteVersion_async] +from google.cloud import dialogflow_v2 + + +async def sample_delete_version(): + # Create a client + client = dialogflow_v2.VersionsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteVersionRequest( + name="name_value", + ) + + # Make the request + await client.delete_version(request=request) + + +# [END dialogflow_v2_generated_Versions_DeleteVersion_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_versions_delete_version_sync.py b/samples/generated_samples/dialogflow_v2_generated_versions_delete_version_sync.py new file mode 100644 index 000000000..db21ea985 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_versions_delete_version_sync.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteVersion +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Versions_DeleteVersion_sync] +from google.cloud import dialogflow_v2 + + +def sample_delete_version(): + # Create a client + client = dialogflow_v2.VersionsClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteVersionRequest( + name="name_value", + ) + + # Make the request + client.delete_version(request=request) + + +# [END dialogflow_v2_generated_Versions_DeleteVersion_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_versions_get_version_async.py b/samples/generated_samples/dialogflow_v2_generated_versions_get_version_async.py new file mode 100644 index 000000000..1c4753eff --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_versions_get_version_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetVersion +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Versions_GetVersion_async] +from google.cloud import dialogflow_v2 + + +async def sample_get_version(): + # Create a client + client = dialogflow_v2.VersionsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetVersionRequest( + name="name_value", + ) + + # Make the request + response = await client.get_version(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Versions_GetVersion_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_versions_get_version_sync.py b/samples/generated_samples/dialogflow_v2_generated_versions_get_version_sync.py new file mode 100644 index 000000000..968031d3a --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_versions_get_version_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetVersion +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Versions_GetVersion_sync] +from google.cloud import dialogflow_v2 + + +def sample_get_version(): + # Create a client + client = dialogflow_v2.VersionsClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetVersionRequest( + name="name_value", + ) + + # Make the request + response = client.get_version(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Versions_GetVersion_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_versions_list_versions_async.py b/samples/generated_samples/dialogflow_v2_generated_versions_list_versions_async.py new file mode 100644 index 000000000..4f7e52a7c --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_versions_list_versions_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListVersions +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Versions_ListVersions_async] +from google.cloud import dialogflow_v2 + + +async def sample_list_versions(): + # Create a client + client = dialogflow_v2.VersionsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListVersionsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_versions(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2_generated_Versions_ListVersions_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_versions_list_versions_sync.py b/samples/generated_samples/dialogflow_v2_generated_versions_list_versions_sync.py new file mode 100644 index 000000000..eb0b434dd --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_versions_list_versions_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListVersions +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Versions_ListVersions_sync] +from google.cloud import dialogflow_v2 + + +def sample_list_versions(): + # Create a client + client = dialogflow_v2.VersionsClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListVersionsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_versions(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2_generated_Versions_ListVersions_sync] diff --git a/samples/generated_samples/dialogflow_v2_generated_versions_update_version_async.py b/samples/generated_samples/dialogflow_v2_generated_versions_update_version_async.py new file mode 100644 index 000000000..2f439fdd9 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_versions_update_version_async.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateVersion +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Versions_UpdateVersion_async] +from google.cloud import dialogflow_v2 + + +async def sample_update_version(): + # Create a client + client = dialogflow_v2.VersionsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.UpdateVersionRequest( + ) + + # Make the request + response = await client.update_version(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Versions_UpdateVersion_async] diff --git a/samples/generated_samples/dialogflow_v2_generated_versions_update_version_sync.py b/samples/generated_samples/dialogflow_v2_generated_versions_update_version_sync.py new file mode 100644 index 000000000..a279d5137 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2_generated_versions_update_version_sync.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateVersion +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2_generated_Versions_UpdateVersion_sync] +from google.cloud import dialogflow_v2 + + +def sample_update_version(): + # Create a client + client = dialogflow_v2.VersionsClient() + + # Initialize request argument(s) + request = dialogflow_v2.UpdateVersionRequest( + ) + + # Make the request + response = client.update_version(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2_generated_Versions_UpdateVersion_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_agents_delete_agent_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_agents_delete_agent_async.py new file mode 100644 index 000000000..92ae15af9 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_agents_delete_agent_async.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteAgent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Agents_DeleteAgent_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_delete_agent(): + # Create a client + client = dialogflow_v2beta1.AgentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.DeleteAgentRequest( + parent="parent_value", + ) + + # Make the request + await client.delete_agent(request=request) + + +# [END dialogflow_v2beta1_generated_Agents_DeleteAgent_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_agents_delete_agent_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_agents_delete_agent_sync.py new file mode 100644 index 000000000..9bf7d422d --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_agents_delete_agent_sync.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteAgent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Agents_DeleteAgent_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_delete_agent(): + # Create a client + client = dialogflow_v2beta1.AgentsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.DeleteAgentRequest( + parent="parent_value", + ) + + # Make the request + client.delete_agent(request=request) + + +# [END dialogflow_v2beta1_generated_Agents_DeleteAgent_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_agents_export_agent_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_agents_export_agent_async.py new file mode 100644 index 000000000..c6a237ffe --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_agents_export_agent_async.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ExportAgent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Agents_ExportAgent_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_export_agent(): + # Create a client + client = dialogflow_v2beta1.AgentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ExportAgentRequest( + parent="parent_value", + ) + + # Make the request + operation = client.export_agent(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Agents_ExportAgent_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_agents_export_agent_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_agents_export_agent_sync.py new file mode 100644 index 000000000..0dfd0404f --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_agents_export_agent_sync.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ExportAgent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Agents_ExportAgent_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_export_agent(): + # Create a client + client = dialogflow_v2beta1.AgentsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ExportAgentRequest( + parent="parent_value", + ) + + # Make the request + operation = client.export_agent(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Agents_ExportAgent_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_agents_get_agent_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_agents_get_agent_async.py new file mode 100644 index 000000000..882997403 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_agents_get_agent_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetAgent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Agents_GetAgent_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_get_agent(): + # Create a client + client = dialogflow_v2beta1.AgentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetAgentRequest( + parent="parent_value", + ) + + # Make the request + response = await client.get_agent(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Agents_GetAgent_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_agents_get_agent_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_agents_get_agent_sync.py new file mode 100644 index 000000000..680502072 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_agents_get_agent_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetAgent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Agents_GetAgent_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_get_agent(): + # Create a client + client = dialogflow_v2beta1.AgentsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetAgentRequest( + parent="parent_value", + ) + + # Make the request + response = client.get_agent(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Agents_GetAgent_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_agents_get_validation_result_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_agents_get_validation_result_async.py new file mode 100644 index 000000000..ff441e8a7 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_agents_get_validation_result_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetValidationResult +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Agents_GetValidationResult_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_get_validation_result(): + # Create a client + client = dialogflow_v2beta1.AgentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetValidationResultRequest( + parent="parent_value", + ) + + # Make the request + response = await client.get_validation_result(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Agents_GetValidationResult_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_agents_get_validation_result_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_agents_get_validation_result_sync.py new file mode 100644 index 000000000..892f2806b --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_agents_get_validation_result_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetValidationResult +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Agents_GetValidationResult_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_get_validation_result(): + # Create a client + client = dialogflow_v2beta1.AgentsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetValidationResultRequest( + parent="parent_value", + ) + + # Make the request + response = client.get_validation_result(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Agents_GetValidationResult_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_agents_import_agent_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_agents_import_agent_async.py new file mode 100644 index 000000000..e886815df --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_agents_import_agent_async.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ImportAgent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Agents_ImportAgent_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_import_agent(): + # Create a client + client = dialogflow_v2beta1.AgentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ImportAgentRequest( + agent_uri="agent_uri_value", + parent="parent_value", + ) + + # Make the request + operation = client.import_agent(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Agents_ImportAgent_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_agents_import_agent_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_agents_import_agent_sync.py new file mode 100644 index 000000000..a7cfd910d --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_agents_import_agent_sync.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ImportAgent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Agents_ImportAgent_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_import_agent(): + # Create a client + client = dialogflow_v2beta1.AgentsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ImportAgentRequest( + agent_uri="agent_uri_value", + parent="parent_value", + ) + + # Make the request + operation = client.import_agent(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Agents_ImportAgent_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_agents_restore_agent_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_agents_restore_agent_async.py new file mode 100644 index 000000000..65cf67a1d --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_agents_restore_agent_async.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for RestoreAgent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Agents_RestoreAgent_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_restore_agent(): + # Create a client + client = dialogflow_v2beta1.AgentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.RestoreAgentRequest( + agent_uri="agent_uri_value", + parent="parent_value", + ) + + # Make the request + operation = client.restore_agent(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Agents_RestoreAgent_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_agents_restore_agent_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_agents_restore_agent_sync.py new file mode 100644 index 000000000..73c662cd4 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_agents_restore_agent_sync.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for RestoreAgent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Agents_RestoreAgent_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_restore_agent(): + # Create a client + client = dialogflow_v2beta1.AgentsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.RestoreAgentRequest( + agent_uri="agent_uri_value", + parent="parent_value", + ) + + # Make the request + operation = client.restore_agent(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Agents_RestoreAgent_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_agents_search_agents_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_agents_search_agents_async.py new file mode 100644 index 000000000..5ad7f101d --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_agents_search_agents_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for SearchAgents +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Agents_SearchAgents_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_search_agents(): + # Create a client + client = dialogflow_v2beta1.AgentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.SearchAgentsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.search_agents(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_Agents_SearchAgents_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_agents_search_agents_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_agents_search_agents_sync.py new file mode 100644 index 000000000..a663c8722 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_agents_search_agents_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for SearchAgents +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Agents_SearchAgents_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_search_agents(): + # Create a client + client = dialogflow_v2beta1.AgentsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.SearchAgentsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.search_agents(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_Agents_SearchAgents_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_agents_set_agent_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_agents_set_agent_async.py new file mode 100644 index 000000000..267ce2454 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_agents_set_agent_async.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for SetAgent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Agents_SetAgent_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_set_agent(): + # Create a client + client = dialogflow_v2beta1.AgentsAsyncClient() + + # Initialize request argument(s) + agent = dialogflow_v2beta1.Agent() + agent.parent = "parent_value" + + request = dialogflow_v2beta1.SetAgentRequest( + agent=agent, + ) + + # Make the request + response = await client.set_agent(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Agents_SetAgent_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_agents_set_agent_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_agents_set_agent_sync.py new file mode 100644 index 000000000..4ea54befb --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_agents_set_agent_sync.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for SetAgent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Agents_SetAgent_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_set_agent(): + # Create a client + client = dialogflow_v2beta1.AgentsClient() + + # Initialize request argument(s) + agent = dialogflow_v2beta1.Agent() + agent.parent = "parent_value" + + request = dialogflow_v2beta1.SetAgentRequest( + agent=agent, + ) + + # Make the request + response = client.set_agent(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Agents_SetAgent_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_agents_train_agent_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_agents_train_agent_async.py new file mode 100644 index 000000000..e881161e9 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_agents_train_agent_async.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for TrainAgent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Agents_TrainAgent_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_train_agent(): + # Create a client + client = dialogflow_v2beta1.AgentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.TrainAgentRequest( + parent="parent_value", + ) + + # Make the request + operation = client.train_agent(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Agents_TrainAgent_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_agents_train_agent_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_agents_train_agent_sync.py new file mode 100644 index 000000000..9e941da2c --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_agents_train_agent_sync.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for TrainAgent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Agents_TrainAgent_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_train_agent(): + # Create a client + client = dialogflow_v2beta1.AgentsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.TrainAgentRequest( + parent="parent_value", + ) + + # Make the request + operation = client.train_agent(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Agents_TrainAgent_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_answer_records_get_answer_record_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_answer_records_get_answer_record_async.py new file mode 100644 index 000000000..8f184b906 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_answer_records_get_answer_record_async.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetAnswerRecord +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_AnswerRecords_GetAnswerRecord_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_get_answer_record(): + # Create a client + client = dialogflow_v2beta1.AnswerRecordsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetAnswerRecordRequest( + ) + + # Make the request + response = await client.get_answer_record(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_AnswerRecords_GetAnswerRecord_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_answer_records_get_answer_record_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_answer_records_get_answer_record_sync.py new file mode 100644 index 000000000..164fd9bf5 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_answer_records_get_answer_record_sync.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetAnswerRecord +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_AnswerRecords_GetAnswerRecord_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_get_answer_record(): + # Create a client + client = dialogflow_v2beta1.AnswerRecordsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetAnswerRecordRequest( + ) + + # Make the request + response = client.get_answer_record(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_AnswerRecords_GetAnswerRecord_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_answer_records_list_answer_records_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_answer_records_list_answer_records_async.py new file mode 100644 index 000000000..198f98e2d --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_answer_records_list_answer_records_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListAnswerRecords +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_AnswerRecords_ListAnswerRecords_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_list_answer_records(): + # Create a client + client = dialogflow_v2beta1.AnswerRecordsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ListAnswerRecordsRequest( + ) + + # Make the request + page_result = client.list_answer_records(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_AnswerRecords_ListAnswerRecords_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_answer_records_list_answer_records_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_answer_records_list_answer_records_sync.py new file mode 100644 index 000000000..97cb51c86 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_answer_records_list_answer_records_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListAnswerRecords +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_AnswerRecords_ListAnswerRecords_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_list_answer_records(): + # Create a client + client = dialogflow_v2beta1.AnswerRecordsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ListAnswerRecordsRequest( + ) + + # Make the request + page_result = client.list_answer_records(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_AnswerRecords_ListAnswerRecords_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_answer_records_update_answer_record_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_answer_records_update_answer_record_async.py new file mode 100644 index 000000000..b0fc6eccf --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_answer_records_update_answer_record_async.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateAnswerRecord +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_AnswerRecords_UpdateAnswerRecord_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_update_answer_record(): + # Create a client + client = dialogflow_v2beta1.AnswerRecordsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.UpdateAnswerRecordRequest( + ) + + # Make the request + response = await client.update_answer_record(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_AnswerRecords_UpdateAnswerRecord_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_answer_records_update_answer_record_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_answer_records_update_answer_record_sync.py new file mode 100644 index 000000000..b8a3785a3 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_answer_records_update_answer_record_sync.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateAnswerRecord +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_AnswerRecords_UpdateAnswerRecord_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_update_answer_record(): + # Create a client + client = dialogflow_v2beta1.AnswerRecordsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.UpdateAnswerRecordRequest( + ) + + # Make the request + response = client.update_answer_record(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_AnswerRecords_UpdateAnswerRecord_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_contexts_create_context_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_contexts_create_context_async.py new file mode 100644 index 000000000..2c708037c --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_contexts_create_context_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateContext +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Contexts_CreateContext_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_create_context(): + # Create a client + client = dialogflow_v2beta1.ContextsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.CreateContextRequest( + parent="parent_value", + ) + + # Make the request + response = await client.create_context(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Contexts_CreateContext_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_contexts_create_context_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_contexts_create_context_sync.py new file mode 100644 index 000000000..ec26ae4b1 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_contexts_create_context_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateContext +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Contexts_CreateContext_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_create_context(): + # Create a client + client = dialogflow_v2beta1.ContextsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.CreateContextRequest( + parent="parent_value", + ) + + # Make the request + response = client.create_context(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Contexts_CreateContext_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_contexts_delete_all_contexts_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_contexts_delete_all_contexts_async.py new file mode 100644 index 000000000..5de739646 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_contexts_delete_all_contexts_async.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteAllContexts +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Contexts_DeleteAllContexts_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_delete_all_contexts(): + # Create a client + client = dialogflow_v2beta1.ContextsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.DeleteAllContextsRequest( + parent="parent_value", + ) + + # Make the request + await client.delete_all_contexts(request=request) + + +# [END dialogflow_v2beta1_generated_Contexts_DeleteAllContexts_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_contexts_delete_all_contexts_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_contexts_delete_all_contexts_sync.py new file mode 100644 index 000000000..1374e32c7 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_contexts_delete_all_contexts_sync.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteAllContexts +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Contexts_DeleteAllContexts_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_delete_all_contexts(): + # Create a client + client = dialogflow_v2beta1.ContextsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.DeleteAllContextsRequest( + parent="parent_value", + ) + + # Make the request + client.delete_all_contexts(request=request) + + +# [END dialogflow_v2beta1_generated_Contexts_DeleteAllContexts_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_contexts_delete_context_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_contexts_delete_context_async.py new file mode 100644 index 000000000..2975fe58f --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_contexts_delete_context_async.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteContext +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Contexts_DeleteContext_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_delete_context(): + # Create a client + client = dialogflow_v2beta1.ContextsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.DeleteContextRequest( + name="name_value", + ) + + # Make the request + await client.delete_context(request=request) + + +# [END dialogflow_v2beta1_generated_Contexts_DeleteContext_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_contexts_delete_context_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_contexts_delete_context_sync.py new file mode 100644 index 000000000..16be65f0a --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_contexts_delete_context_sync.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteContext +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Contexts_DeleteContext_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_delete_context(): + # Create a client + client = dialogflow_v2beta1.ContextsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.DeleteContextRequest( + name="name_value", + ) + + # Make the request + client.delete_context(request=request) + + +# [END dialogflow_v2beta1_generated_Contexts_DeleteContext_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_contexts_get_context_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_contexts_get_context_async.py new file mode 100644 index 000000000..7a75416b9 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_contexts_get_context_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetContext +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Contexts_GetContext_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_get_context(): + # Create a client + client = dialogflow_v2beta1.ContextsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetContextRequest( + name="name_value", + ) + + # Make the request + response = await client.get_context(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Contexts_GetContext_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_contexts_get_context_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_contexts_get_context_sync.py new file mode 100644 index 000000000..56fcc93ff --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_contexts_get_context_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetContext +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Contexts_GetContext_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_get_context(): + # Create a client + client = dialogflow_v2beta1.ContextsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetContextRequest( + name="name_value", + ) + + # Make the request + response = client.get_context(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Contexts_GetContext_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_contexts_list_contexts_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_contexts_list_contexts_async.py new file mode 100644 index 000000000..f01d33604 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_contexts_list_contexts_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListContexts +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Contexts_ListContexts_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_list_contexts(): + # Create a client + client = dialogflow_v2beta1.ContextsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ListContextsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_contexts(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_Contexts_ListContexts_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_contexts_list_contexts_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_contexts_list_contexts_sync.py new file mode 100644 index 000000000..8cd34679c --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_contexts_list_contexts_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListContexts +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Contexts_ListContexts_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_list_contexts(): + # Create a client + client = dialogflow_v2beta1.ContextsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ListContextsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_contexts(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_Contexts_ListContexts_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_contexts_update_context_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_contexts_update_context_async.py new file mode 100644 index 000000000..71db88053 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_contexts_update_context_async.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateContext +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Contexts_UpdateContext_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_update_context(): + # Create a client + client = dialogflow_v2beta1.ContextsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.UpdateContextRequest( + ) + + # Make the request + response = await client.update_context(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Contexts_UpdateContext_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_contexts_update_context_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_contexts_update_context_sync.py new file mode 100644 index 000000000..f1fa717e0 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_contexts_update_context_sync.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateContext +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Contexts_UpdateContext_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_update_context(): + # Create a client + client = dialogflow_v2beta1.ContextsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.UpdateContextRequest( + ) + + # Make the request + response = client.update_context(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Contexts_UpdateContext_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_create_conversation_profile_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_create_conversation_profile_async.py new file mode 100644 index 000000000..bf2917353 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_create_conversation_profile_async.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateConversationProfile +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_ConversationProfiles_CreateConversationProfile_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_create_conversation_profile(): + # Create a client + client = dialogflow_v2beta1.ConversationProfilesAsyncClient() + + # Initialize request argument(s) + conversation_profile = dialogflow_v2beta1.ConversationProfile() + conversation_profile.display_name = "display_name_value" + + request = dialogflow_v2beta1.CreateConversationProfileRequest( + parent="parent_value", + conversation_profile=conversation_profile, + ) + + # Make the request + response = await client.create_conversation_profile(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_ConversationProfiles_CreateConversationProfile_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_create_conversation_profile_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_create_conversation_profile_sync.py new file mode 100644 index 000000000..a0d6bec0e --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_create_conversation_profile_sync.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateConversationProfile +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_ConversationProfiles_CreateConversationProfile_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_create_conversation_profile(): + # Create a client + client = dialogflow_v2beta1.ConversationProfilesClient() + + # Initialize request argument(s) + conversation_profile = dialogflow_v2beta1.ConversationProfile() + conversation_profile.display_name = "display_name_value" + + request = dialogflow_v2beta1.CreateConversationProfileRequest( + parent="parent_value", + conversation_profile=conversation_profile, + ) + + # Make the request + response = client.create_conversation_profile(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_ConversationProfiles_CreateConversationProfile_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_delete_conversation_profile_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_delete_conversation_profile_async.py new file mode 100644 index 000000000..384657f4c --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_delete_conversation_profile_async.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteConversationProfile +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_ConversationProfiles_DeleteConversationProfile_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_delete_conversation_profile(): + # Create a client + client = dialogflow_v2beta1.ConversationProfilesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.DeleteConversationProfileRequest( + name="name_value", + ) + + # Make the request + await client.delete_conversation_profile(request=request) + + +# [END dialogflow_v2beta1_generated_ConversationProfiles_DeleteConversationProfile_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_delete_conversation_profile_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_delete_conversation_profile_sync.py new file mode 100644 index 000000000..12861e13b --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_delete_conversation_profile_sync.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteConversationProfile +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_ConversationProfiles_DeleteConversationProfile_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_delete_conversation_profile(): + # Create a client + client = dialogflow_v2beta1.ConversationProfilesClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.DeleteConversationProfileRequest( + name="name_value", + ) + + # Make the request + client.delete_conversation_profile(request=request) + + +# [END dialogflow_v2beta1_generated_ConversationProfiles_DeleteConversationProfile_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_get_conversation_profile_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_get_conversation_profile_async.py new file mode 100644 index 000000000..1e736812c --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_get_conversation_profile_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetConversationProfile +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_ConversationProfiles_GetConversationProfile_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_get_conversation_profile(): + # Create a client + client = dialogflow_v2beta1.ConversationProfilesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetConversationProfileRequest( + name="name_value", + ) + + # Make the request + response = await client.get_conversation_profile(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_ConversationProfiles_GetConversationProfile_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_get_conversation_profile_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_get_conversation_profile_sync.py new file mode 100644 index 000000000..105b529a4 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_get_conversation_profile_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetConversationProfile +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_ConversationProfiles_GetConversationProfile_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_get_conversation_profile(): + # Create a client + client = dialogflow_v2beta1.ConversationProfilesClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetConversationProfileRequest( + name="name_value", + ) + + # Make the request + response = client.get_conversation_profile(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_ConversationProfiles_GetConversationProfile_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_list_conversation_profiles_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_list_conversation_profiles_async.py new file mode 100644 index 000000000..3ac8daf3a --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_list_conversation_profiles_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListConversationProfiles +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_ConversationProfiles_ListConversationProfiles_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_list_conversation_profiles(): + # Create a client + client = dialogflow_v2beta1.ConversationProfilesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ListConversationProfilesRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_conversation_profiles(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_ConversationProfiles_ListConversationProfiles_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_list_conversation_profiles_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_list_conversation_profiles_sync.py new file mode 100644 index 000000000..b2aa7a4de --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_list_conversation_profiles_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListConversationProfiles +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_ConversationProfiles_ListConversationProfiles_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_list_conversation_profiles(): + # Create a client + client = dialogflow_v2beta1.ConversationProfilesClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ListConversationProfilesRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_conversation_profiles(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_ConversationProfiles_ListConversationProfiles_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_update_conversation_profile_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_update_conversation_profile_async.py new file mode 100644 index 000000000..399ed21ee --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_update_conversation_profile_async.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateConversationProfile +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_ConversationProfiles_UpdateConversationProfile_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_update_conversation_profile(): + # Create a client + client = dialogflow_v2beta1.ConversationProfilesAsyncClient() + + # Initialize request argument(s) + conversation_profile = dialogflow_v2beta1.ConversationProfile() + conversation_profile.display_name = "display_name_value" + + request = dialogflow_v2beta1.UpdateConversationProfileRequest( + conversation_profile=conversation_profile, + ) + + # Make the request + response = await client.update_conversation_profile(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_ConversationProfiles_UpdateConversationProfile_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_update_conversation_profile_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_update_conversation_profile_sync.py new file mode 100644 index 000000000..e6325a793 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_conversation_profiles_update_conversation_profile_sync.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateConversationProfile +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_ConversationProfiles_UpdateConversationProfile_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_update_conversation_profile(): + # Create a client + client = dialogflow_v2beta1.ConversationProfilesClient() + + # Initialize request argument(s) + conversation_profile = dialogflow_v2beta1.ConversationProfile() + conversation_profile.display_name = "display_name_value" + + request = dialogflow_v2beta1.UpdateConversationProfileRequest( + conversation_profile=conversation_profile, + ) + + # Make the request + response = client.update_conversation_profile(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_ConversationProfiles_UpdateConversationProfile_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_conversations_batch_create_messages_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_conversations_batch_create_messages_async.py new file mode 100644 index 000000000..77ccfaeae --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_conversations_batch_create_messages_async.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchCreateMessages +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Conversations_BatchCreateMessages_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_batch_create_messages(): + # Create a client + client = dialogflow_v2beta1.ConversationsAsyncClient() + + # Initialize request argument(s) + requests = dialogflow_v2beta1.CreateMessageRequest() + requests.parent = "parent_value" + requests.message.content = "content_value" + + request = dialogflow_v2beta1.BatchCreateMessagesRequest( + parent="parent_value", + requests=requests, + ) + + # Make the request + response = await client.batch_create_messages(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Conversations_BatchCreateMessages_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_conversations_batch_create_messages_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_conversations_batch_create_messages_sync.py new file mode 100644 index 000000000..1d944ff7e --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_conversations_batch_create_messages_sync.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchCreateMessages +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Conversations_BatchCreateMessages_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_batch_create_messages(): + # Create a client + client = dialogflow_v2beta1.ConversationsClient() + + # Initialize request argument(s) + requests = dialogflow_v2beta1.CreateMessageRequest() + requests.parent = "parent_value" + requests.message.content = "content_value" + + request = dialogflow_v2beta1.BatchCreateMessagesRequest( + parent="parent_value", + requests=requests, + ) + + # Make the request + response = client.batch_create_messages(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Conversations_BatchCreateMessages_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_conversations_complete_conversation_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_conversations_complete_conversation_async.py new file mode 100644 index 000000000..533cc694f --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_conversations_complete_conversation_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CompleteConversation +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Conversations_CompleteConversation_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_complete_conversation(): + # Create a client + client = dialogflow_v2beta1.ConversationsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.CompleteConversationRequest( + name="name_value", + ) + + # Make the request + response = await client.complete_conversation(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Conversations_CompleteConversation_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_conversations_complete_conversation_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_conversations_complete_conversation_sync.py new file mode 100644 index 000000000..f447d7c26 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_conversations_complete_conversation_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CompleteConversation +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Conversations_CompleteConversation_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_complete_conversation(): + # Create a client + client = dialogflow_v2beta1.ConversationsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.CompleteConversationRequest( + name="name_value", + ) + + # Make the request + response = client.complete_conversation(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Conversations_CompleteConversation_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_conversations_create_conversation_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_conversations_create_conversation_async.py new file mode 100644 index 000000000..81aa334ca --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_conversations_create_conversation_async.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateConversation +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Conversations_CreateConversation_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_create_conversation(): + # Create a client + client = dialogflow_v2beta1.ConversationsAsyncClient() + + # Initialize request argument(s) + conversation = dialogflow_v2beta1.Conversation() + conversation.conversation_profile = "conversation_profile_value" + + request = dialogflow_v2beta1.CreateConversationRequest( + parent="parent_value", + conversation=conversation, + ) + + # Make the request + response = await client.create_conversation(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Conversations_CreateConversation_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_conversations_create_conversation_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_conversations_create_conversation_sync.py new file mode 100644 index 000000000..8231a5abb --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_conversations_create_conversation_sync.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateConversation +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Conversations_CreateConversation_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_create_conversation(): + # Create a client + client = dialogflow_v2beta1.ConversationsClient() + + # Initialize request argument(s) + conversation = dialogflow_v2beta1.Conversation() + conversation.conversation_profile = "conversation_profile_value" + + request = dialogflow_v2beta1.CreateConversationRequest( + parent="parent_value", + conversation=conversation, + ) + + # Make the request + response = client.create_conversation(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Conversations_CreateConversation_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_conversations_get_conversation_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_conversations_get_conversation_async.py new file mode 100644 index 000000000..4c93668de --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_conversations_get_conversation_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetConversation +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Conversations_GetConversation_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_get_conversation(): + # Create a client + client = dialogflow_v2beta1.ConversationsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetConversationRequest( + name="name_value", + ) + + # Make the request + response = await client.get_conversation(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Conversations_GetConversation_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_conversations_get_conversation_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_conversations_get_conversation_sync.py new file mode 100644 index 000000000..2b5dbaa7a --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_conversations_get_conversation_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetConversation +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Conversations_GetConversation_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_get_conversation(): + # Create a client + client = dialogflow_v2beta1.ConversationsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetConversationRequest( + name="name_value", + ) + + # Make the request + response = client.get_conversation(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Conversations_GetConversation_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_conversations_list_conversations_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_conversations_list_conversations_async.py new file mode 100644 index 000000000..7f0edf342 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_conversations_list_conversations_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListConversations +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Conversations_ListConversations_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_list_conversations(): + # Create a client + client = dialogflow_v2beta1.ConversationsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ListConversationsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_conversations(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_Conversations_ListConversations_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_conversations_list_conversations_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_conversations_list_conversations_sync.py new file mode 100644 index 000000000..dbd79e8a0 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_conversations_list_conversations_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListConversations +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Conversations_ListConversations_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_list_conversations(): + # Create a client + client = dialogflow_v2beta1.ConversationsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ListConversationsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_conversations(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_Conversations_ListConversations_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_conversations_list_messages_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_conversations_list_messages_async.py new file mode 100644 index 000000000..336724657 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_conversations_list_messages_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListMessages +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Conversations_ListMessages_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_list_messages(): + # Create a client + client = dialogflow_v2beta1.ConversationsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ListMessagesRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_messages(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_Conversations_ListMessages_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_conversations_list_messages_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_conversations_list_messages_sync.py new file mode 100644 index 000000000..9eeb7ad97 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_conversations_list_messages_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListMessages +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Conversations_ListMessages_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_list_messages(): + # Create a client + client = dialogflow_v2beta1.ConversationsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ListMessagesRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_messages(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_Conversations_ListMessages_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_documents_create_document_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_documents_create_document_async.py new file mode 100644 index 000000000..318e924f8 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_documents_create_document_async.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateDocument +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Documents_CreateDocument_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_create_document(): + # Create a client + client = dialogflow_v2beta1.DocumentsAsyncClient() + + # Initialize request argument(s) + document = dialogflow_v2beta1.Document() + document.content_uri = "content_uri_value" + document.display_name = "display_name_value" + document.mime_type = "mime_type_value" + document.knowledge_types = "SMART_REPLY" + + request = dialogflow_v2beta1.CreateDocumentRequest( + parent="parent_value", + document=document, + ) + + # Make the request + operation = client.create_document(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Documents_CreateDocument_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_documents_create_document_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_documents_create_document_sync.py new file mode 100644 index 000000000..e9864e930 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_documents_create_document_sync.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateDocument +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Documents_CreateDocument_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_create_document(): + # Create a client + client = dialogflow_v2beta1.DocumentsClient() + + # Initialize request argument(s) + document = dialogflow_v2beta1.Document() + document.content_uri = "content_uri_value" + document.display_name = "display_name_value" + document.mime_type = "mime_type_value" + document.knowledge_types = "SMART_REPLY" + + request = dialogflow_v2beta1.CreateDocumentRequest( + parent="parent_value", + document=document, + ) + + # Make the request + operation = client.create_document(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Documents_CreateDocument_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_documents_delete_document_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_documents_delete_document_async.py new file mode 100644 index 000000000..48b917cb9 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_documents_delete_document_async.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteDocument +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Documents_DeleteDocument_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_delete_document(): + # Create a client + client = dialogflow_v2beta1.DocumentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.DeleteDocumentRequest( + name="name_value", + ) + + # Make the request + operation = client.delete_document(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Documents_DeleteDocument_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_documents_delete_document_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_documents_delete_document_sync.py new file mode 100644 index 000000000..1656713b3 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_documents_delete_document_sync.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteDocument +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Documents_DeleteDocument_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_delete_document(): + # Create a client + client = dialogflow_v2beta1.DocumentsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.DeleteDocumentRequest( + name="name_value", + ) + + # Make the request + operation = client.delete_document(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Documents_DeleteDocument_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_documents_get_document_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_documents_get_document_async.py new file mode 100644 index 000000000..86c322e6f --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_documents_get_document_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetDocument +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Documents_GetDocument_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_get_document(): + # Create a client + client = dialogflow_v2beta1.DocumentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetDocumentRequest( + name="name_value", + ) + + # Make the request + response = await client.get_document(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Documents_GetDocument_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_documents_get_document_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_documents_get_document_sync.py new file mode 100644 index 000000000..cdedc5f14 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_documents_get_document_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetDocument +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Documents_GetDocument_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_get_document(): + # Create a client + client = dialogflow_v2beta1.DocumentsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetDocumentRequest( + name="name_value", + ) + + # Make the request + response = client.get_document(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Documents_GetDocument_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_documents_import_documents_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_documents_import_documents_async.py new file mode 100644 index 000000000..8fcf1178f --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_documents_import_documents_async.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ImportDocuments +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Documents_ImportDocuments_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_import_documents(): + # Create a client + client = dialogflow_v2beta1.DocumentsAsyncClient() + + # Initialize request argument(s) + gcs_source = dialogflow_v2beta1.GcsSources() + gcs_source.uris = ['uris_value_1', 'uris_value_2'] + + document_template = dialogflow_v2beta1.ImportDocumentTemplate() + document_template.mime_type = "mime_type_value" + document_template.knowledge_types = "SMART_REPLY" + + request = dialogflow_v2beta1.ImportDocumentsRequest( + gcs_source=gcs_source, + parent="parent_value", + document_template=document_template, + ) + + # Make the request + operation = client.import_documents(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Documents_ImportDocuments_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_documents_import_documents_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_documents_import_documents_sync.py new file mode 100644 index 000000000..4905eeaf5 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_documents_import_documents_sync.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ImportDocuments +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Documents_ImportDocuments_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_import_documents(): + # Create a client + client = dialogflow_v2beta1.DocumentsClient() + + # Initialize request argument(s) + gcs_source = dialogflow_v2beta1.GcsSources() + gcs_source.uris = ['uris_value_1', 'uris_value_2'] + + document_template = dialogflow_v2beta1.ImportDocumentTemplate() + document_template.mime_type = "mime_type_value" + document_template.knowledge_types = "SMART_REPLY" + + request = dialogflow_v2beta1.ImportDocumentsRequest( + gcs_source=gcs_source, + parent="parent_value", + document_template=document_template, + ) + + # Make the request + operation = client.import_documents(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Documents_ImportDocuments_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_documents_list_documents_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_documents_list_documents_async.py new file mode 100644 index 000000000..13c19c05f --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_documents_list_documents_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListDocuments +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Documents_ListDocuments_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_list_documents(): + # Create a client + client = dialogflow_v2beta1.DocumentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ListDocumentsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_documents(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_Documents_ListDocuments_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_documents_list_documents_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_documents_list_documents_sync.py new file mode 100644 index 000000000..ed50c8039 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_documents_list_documents_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListDocuments +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Documents_ListDocuments_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_list_documents(): + # Create a client + client = dialogflow_v2beta1.DocumentsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ListDocumentsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_documents(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_Documents_ListDocuments_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_documents_reload_document_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_documents_reload_document_async.py new file mode 100644 index 000000000..a2e392cd5 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_documents_reload_document_async.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ReloadDocument +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Documents_ReloadDocument_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_reload_document(): + # Create a client + client = dialogflow_v2beta1.DocumentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ReloadDocumentRequest( + name="name_value", + ) + + # Make the request + operation = client.reload_document(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Documents_ReloadDocument_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_documents_reload_document_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_documents_reload_document_sync.py new file mode 100644 index 000000000..44342194e --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_documents_reload_document_sync.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ReloadDocument +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Documents_ReloadDocument_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_reload_document(): + # Create a client + client = dialogflow_v2beta1.DocumentsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ReloadDocumentRequest( + name="name_value", + ) + + # Make the request + operation = client.reload_document(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Documents_ReloadDocument_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_documents_update_document_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_documents_update_document_async.py new file mode 100644 index 000000000..00007c04a --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_documents_update_document_async.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateDocument +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Documents_UpdateDocument_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_update_document(): + # Create a client + client = dialogflow_v2beta1.DocumentsAsyncClient() + + # Initialize request argument(s) + document = dialogflow_v2beta1.Document() + document.content_uri = "content_uri_value" + document.display_name = "display_name_value" + document.mime_type = "mime_type_value" + document.knowledge_types = "SMART_REPLY" + + request = dialogflow_v2beta1.UpdateDocumentRequest( + document=document, + ) + + # Make the request + operation = client.update_document(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Documents_UpdateDocument_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_documents_update_document_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_documents_update_document_sync.py new file mode 100644 index 000000000..881ffd302 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_documents_update_document_sync.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateDocument +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Documents_UpdateDocument_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_update_document(): + # Create a client + client = dialogflow_v2beta1.DocumentsClient() + + # Initialize request argument(s) + document = dialogflow_v2beta1.Document() + document.content_uri = "content_uri_value" + document.display_name = "display_name_value" + document.mime_type = "mime_type_value" + document.knowledge_types = "SMART_REPLY" + + request = dialogflow_v2beta1.UpdateDocumentRequest( + document=document, + ) + + # Make the request + operation = client.update_document(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Documents_UpdateDocument_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_create_entities_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_create_entities_async.py new file mode 100644 index 000000000..bf719f642 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_create_entities_async.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchCreateEntities +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_EntityTypes_BatchCreateEntities_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_batch_create_entities(): + # Create a client + client = dialogflow_v2beta1.EntityTypesAsyncClient() + + # Initialize request argument(s) + entities = dialogflow_v2beta1.Entity() + entities.value = "value_value" + + request = dialogflow_v2beta1.BatchCreateEntitiesRequest( + parent="parent_value", + entities=entities, + ) + + # Make the request + operation = client.batch_create_entities(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_EntityTypes_BatchCreateEntities_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_create_entities_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_create_entities_sync.py new file mode 100644 index 000000000..fdc41fa55 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_create_entities_sync.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchCreateEntities +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_EntityTypes_BatchCreateEntities_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_batch_create_entities(): + # Create a client + client = dialogflow_v2beta1.EntityTypesClient() + + # Initialize request argument(s) + entities = dialogflow_v2beta1.Entity() + entities.value = "value_value" + + request = dialogflow_v2beta1.BatchCreateEntitiesRequest( + parent="parent_value", + entities=entities, + ) + + # Make the request + operation = client.batch_create_entities(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_EntityTypes_BatchCreateEntities_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_delete_entities_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_delete_entities_async.py new file mode 100644 index 000000000..21e6ba2af --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_delete_entities_async.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchDeleteEntities +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_EntityTypes_BatchDeleteEntities_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_batch_delete_entities(): + # Create a client + client = dialogflow_v2beta1.EntityTypesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.BatchDeleteEntitiesRequest( + parent="parent_value", + entity_values=['entity_values_value_1', 'entity_values_value_2'], + ) + + # Make the request + operation = client.batch_delete_entities(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_EntityTypes_BatchDeleteEntities_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_delete_entities_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_delete_entities_sync.py new file mode 100644 index 000000000..e772d7544 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_delete_entities_sync.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchDeleteEntities +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_EntityTypes_BatchDeleteEntities_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_batch_delete_entities(): + # Create a client + client = dialogflow_v2beta1.EntityTypesClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.BatchDeleteEntitiesRequest( + parent="parent_value", + entity_values=['entity_values_value_1', 'entity_values_value_2'], + ) + + # Make the request + operation = client.batch_delete_entities(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_EntityTypes_BatchDeleteEntities_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_delete_entity_types_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_delete_entity_types_async.py new file mode 100644 index 000000000..10cd37dd5 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_delete_entity_types_async.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchDeleteEntityTypes +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_EntityTypes_BatchDeleteEntityTypes_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_batch_delete_entity_types(): + # Create a client + client = dialogflow_v2beta1.EntityTypesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.BatchDeleteEntityTypesRequest( + parent="parent_value", + entity_type_names=['entity_type_names_value_1', 'entity_type_names_value_2'], + ) + + # Make the request + operation = client.batch_delete_entity_types(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_EntityTypes_BatchDeleteEntityTypes_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_delete_entity_types_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_delete_entity_types_sync.py new file mode 100644 index 000000000..712aeb028 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_delete_entity_types_sync.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchDeleteEntityTypes +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_EntityTypes_BatchDeleteEntityTypes_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_batch_delete_entity_types(): + # Create a client + client = dialogflow_v2beta1.EntityTypesClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.BatchDeleteEntityTypesRequest( + parent="parent_value", + entity_type_names=['entity_type_names_value_1', 'entity_type_names_value_2'], + ) + + # Make the request + operation = client.batch_delete_entity_types(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_EntityTypes_BatchDeleteEntityTypes_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_update_entities_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_update_entities_async.py new file mode 100644 index 000000000..c7469f9f9 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_update_entities_async.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchUpdateEntities +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_EntityTypes_BatchUpdateEntities_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_batch_update_entities(): + # Create a client + client = dialogflow_v2beta1.EntityTypesAsyncClient() + + # Initialize request argument(s) + entities = dialogflow_v2beta1.Entity() + entities.value = "value_value" + + request = dialogflow_v2beta1.BatchUpdateEntitiesRequest( + parent="parent_value", + entities=entities, + ) + + # Make the request + operation = client.batch_update_entities(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_EntityTypes_BatchUpdateEntities_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_update_entities_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_update_entities_sync.py new file mode 100644 index 000000000..732fadb29 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_update_entities_sync.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchUpdateEntities +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_EntityTypes_BatchUpdateEntities_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_batch_update_entities(): + # Create a client + client = dialogflow_v2beta1.EntityTypesClient() + + # Initialize request argument(s) + entities = dialogflow_v2beta1.Entity() + entities.value = "value_value" + + request = dialogflow_v2beta1.BatchUpdateEntitiesRequest( + parent="parent_value", + entities=entities, + ) + + # Make the request + operation = client.batch_update_entities(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_EntityTypes_BatchUpdateEntities_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_update_entity_types_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_update_entity_types_async.py new file mode 100644 index 000000000..4efc69428 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_update_entity_types_async.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchUpdateEntityTypes +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_EntityTypes_BatchUpdateEntityTypes_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_batch_update_entity_types(): + # Create a client + client = dialogflow_v2beta1.EntityTypesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.BatchUpdateEntityTypesRequest( + entity_type_batch_uri="entity_type_batch_uri_value", + parent="parent_value", + ) + + # Make the request + operation = client.batch_update_entity_types(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_EntityTypes_BatchUpdateEntityTypes_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_update_entity_types_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_update_entity_types_sync.py new file mode 100644 index 000000000..4b9043e05 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_batch_update_entity_types_sync.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchUpdateEntityTypes +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_EntityTypes_BatchUpdateEntityTypes_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_batch_update_entity_types(): + # Create a client + client = dialogflow_v2beta1.EntityTypesClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.BatchUpdateEntityTypesRequest( + entity_type_batch_uri="entity_type_batch_uri_value", + parent="parent_value", + ) + + # Make the request + operation = client.batch_update_entity_types(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_EntityTypes_BatchUpdateEntityTypes_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_create_entity_type_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_create_entity_type_async.py new file mode 100644 index 000000000..fa4e46dc0 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_create_entity_type_async.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_EntityTypes_CreateEntityType_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_create_entity_type(): + # Create a client + client = dialogflow_v2beta1.EntityTypesAsyncClient() + + # Initialize request argument(s) + entity_type = dialogflow_v2beta1.EntityType() + entity_type.display_name = "display_name_value" + entity_type.kind = "KIND_REGEXP" + + request = dialogflow_v2beta1.CreateEntityTypeRequest( + parent="parent_value", + entity_type=entity_type, + ) + + # Make the request + response = await client.create_entity_type(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_EntityTypes_CreateEntityType_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_create_entity_type_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_create_entity_type_sync.py new file mode 100644 index 000000000..ea60fce68 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_create_entity_type_sync.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_EntityTypes_CreateEntityType_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_create_entity_type(): + # Create a client + client = dialogflow_v2beta1.EntityTypesClient() + + # Initialize request argument(s) + entity_type = dialogflow_v2beta1.EntityType() + entity_type.display_name = "display_name_value" + entity_type.kind = "KIND_REGEXP" + + request = dialogflow_v2beta1.CreateEntityTypeRequest( + parent="parent_value", + entity_type=entity_type, + ) + + # Make the request + response = client.create_entity_type(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_EntityTypes_CreateEntityType_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_delete_entity_type_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_delete_entity_type_async.py new file mode 100644 index 000000000..45f38f8a7 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_delete_entity_type_async.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_EntityTypes_DeleteEntityType_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_delete_entity_type(): + # Create a client + client = dialogflow_v2beta1.EntityTypesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.DeleteEntityTypeRequest( + name="name_value", + ) + + # Make the request + await client.delete_entity_type(request=request) + + +# [END dialogflow_v2beta1_generated_EntityTypes_DeleteEntityType_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_delete_entity_type_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_delete_entity_type_sync.py new file mode 100644 index 000000000..8d3a5e2c4 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_delete_entity_type_sync.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_EntityTypes_DeleteEntityType_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_delete_entity_type(): + # Create a client + client = dialogflow_v2beta1.EntityTypesClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.DeleteEntityTypeRequest( + name="name_value", + ) + + # Make the request + client.delete_entity_type(request=request) + + +# [END dialogflow_v2beta1_generated_EntityTypes_DeleteEntityType_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_get_entity_type_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_get_entity_type_async.py new file mode 100644 index 000000000..b8ed3206e --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_get_entity_type_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_EntityTypes_GetEntityType_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_get_entity_type(): + # Create a client + client = dialogflow_v2beta1.EntityTypesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetEntityTypeRequest( + name="name_value", + ) + + # Make the request + response = await client.get_entity_type(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_EntityTypes_GetEntityType_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_get_entity_type_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_get_entity_type_sync.py new file mode 100644 index 000000000..304b41c92 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_get_entity_type_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_EntityTypes_GetEntityType_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_get_entity_type(): + # Create a client + client = dialogflow_v2beta1.EntityTypesClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetEntityTypeRequest( + name="name_value", + ) + + # Make the request + response = client.get_entity_type(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_EntityTypes_GetEntityType_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_list_entity_types_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_list_entity_types_async.py new file mode 100644 index 000000000..0109d87b4 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_list_entity_types_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListEntityTypes +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_EntityTypes_ListEntityTypes_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_list_entity_types(): + # Create a client + client = dialogflow_v2beta1.EntityTypesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ListEntityTypesRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_entity_types(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_EntityTypes_ListEntityTypes_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_list_entity_types_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_list_entity_types_sync.py new file mode 100644 index 000000000..3da8154f8 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_list_entity_types_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListEntityTypes +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_EntityTypes_ListEntityTypes_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_list_entity_types(): + # Create a client + client = dialogflow_v2beta1.EntityTypesClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ListEntityTypesRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_entity_types(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_EntityTypes_ListEntityTypes_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_update_entity_type_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_update_entity_type_async.py new file mode 100644 index 000000000..57fd11147 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_update_entity_type_async.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_EntityTypes_UpdateEntityType_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_update_entity_type(): + # Create a client + client = dialogflow_v2beta1.EntityTypesAsyncClient() + + # Initialize request argument(s) + entity_type = dialogflow_v2beta1.EntityType() + entity_type.display_name = "display_name_value" + entity_type.kind = "KIND_REGEXP" + + request = dialogflow_v2beta1.UpdateEntityTypeRequest( + entity_type=entity_type, + ) + + # Make the request + response = await client.update_entity_type(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_EntityTypes_UpdateEntityType_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_update_entity_type_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_update_entity_type_sync.py new file mode 100644 index 000000000..40b2c2137 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_entity_types_update_entity_type_sync.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_EntityTypes_UpdateEntityType_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_update_entity_type(): + # Create a client + client = dialogflow_v2beta1.EntityTypesClient() + + # Initialize request argument(s) + entity_type = dialogflow_v2beta1.EntityType() + entity_type.display_name = "display_name_value" + entity_type.kind = "KIND_REGEXP" + + request = dialogflow_v2beta1.UpdateEntityTypeRequest( + entity_type=entity_type, + ) + + # Make the request + response = client.update_entity_type(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_EntityTypes_UpdateEntityType_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_environments_create_environment_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_environments_create_environment_async.py new file mode 100644 index 000000000..df677f15a --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_environments_create_environment_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateEnvironment +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Environments_CreateEnvironment_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_create_environment(): + # Create a client + client = dialogflow_v2beta1.EnvironmentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.CreateEnvironmentRequest( + parent="parent_value", + environment_id="environment_id_value", + ) + + # Make the request + response = await client.create_environment(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Environments_CreateEnvironment_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_environments_create_environment_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_environments_create_environment_sync.py new file mode 100644 index 000000000..74ea62393 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_environments_create_environment_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateEnvironment +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Environments_CreateEnvironment_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_create_environment(): + # Create a client + client = dialogflow_v2beta1.EnvironmentsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.CreateEnvironmentRequest( + parent="parent_value", + environment_id="environment_id_value", + ) + + # Make the request + response = client.create_environment(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Environments_CreateEnvironment_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_environments_delete_environment_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_environments_delete_environment_async.py new file mode 100644 index 000000000..9585af009 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_environments_delete_environment_async.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteEnvironment +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Environments_DeleteEnvironment_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_delete_environment(): + # Create a client + client = dialogflow_v2beta1.EnvironmentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.DeleteEnvironmentRequest( + name="name_value", + ) + + # Make the request + await client.delete_environment(request=request) + + +# [END dialogflow_v2beta1_generated_Environments_DeleteEnvironment_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_environments_delete_environment_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_environments_delete_environment_sync.py new file mode 100644 index 000000000..1960336e3 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_environments_delete_environment_sync.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteEnvironment +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Environments_DeleteEnvironment_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_delete_environment(): + # Create a client + client = dialogflow_v2beta1.EnvironmentsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.DeleteEnvironmentRequest( + name="name_value", + ) + + # Make the request + client.delete_environment(request=request) + + +# [END dialogflow_v2beta1_generated_Environments_DeleteEnvironment_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_environments_get_environment_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_environments_get_environment_async.py new file mode 100644 index 000000000..ad8fd85b4 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_environments_get_environment_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetEnvironment +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Environments_GetEnvironment_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_get_environment(): + # Create a client + client = dialogflow_v2beta1.EnvironmentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetEnvironmentRequest( + name="name_value", + ) + + # Make the request + response = await client.get_environment(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Environments_GetEnvironment_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_environments_get_environment_history_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_environments_get_environment_history_async.py new file mode 100644 index 000000000..2dfd49d18 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_environments_get_environment_history_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetEnvironmentHistory +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Environments_GetEnvironmentHistory_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_get_environment_history(): + # Create a client + client = dialogflow_v2beta1.EnvironmentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetEnvironmentHistoryRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.get_environment_history(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_Environments_GetEnvironmentHistory_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_environments_get_environment_history_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_environments_get_environment_history_sync.py new file mode 100644 index 000000000..d3679e5ef --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_environments_get_environment_history_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetEnvironmentHistory +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Environments_GetEnvironmentHistory_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_get_environment_history(): + # Create a client + client = dialogflow_v2beta1.EnvironmentsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetEnvironmentHistoryRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.get_environment_history(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_Environments_GetEnvironmentHistory_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_environments_get_environment_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_environments_get_environment_sync.py new file mode 100644 index 000000000..b4c0e84c0 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_environments_get_environment_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetEnvironment +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Environments_GetEnvironment_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_get_environment(): + # Create a client + client = dialogflow_v2beta1.EnvironmentsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetEnvironmentRequest( + name="name_value", + ) + + # Make the request + response = client.get_environment(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Environments_GetEnvironment_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_environments_list_environments_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_environments_list_environments_async.py new file mode 100644 index 000000000..664e92ab8 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_environments_list_environments_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListEnvironments +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Environments_ListEnvironments_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_list_environments(): + # Create a client + client = dialogflow_v2beta1.EnvironmentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ListEnvironmentsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_environments(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_Environments_ListEnvironments_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_environments_list_environments_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_environments_list_environments_sync.py new file mode 100644 index 000000000..da35bf05c --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_environments_list_environments_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListEnvironments +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Environments_ListEnvironments_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_list_environments(): + # Create a client + client = dialogflow_v2beta1.EnvironmentsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ListEnvironmentsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_environments(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_Environments_ListEnvironments_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_environments_update_environment_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_environments_update_environment_async.py new file mode 100644 index 000000000..f555064e2 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_environments_update_environment_async.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateEnvironment +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Environments_UpdateEnvironment_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_update_environment(): + # Create a client + client = dialogflow_v2beta1.EnvironmentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.UpdateEnvironmentRequest( + ) + + # Make the request + response = await client.update_environment(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Environments_UpdateEnvironment_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_environments_update_environment_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_environments_update_environment_sync.py new file mode 100644 index 000000000..c4996f946 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_environments_update_environment_sync.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateEnvironment +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Environments_UpdateEnvironment_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_update_environment(): + # Create a client + client = dialogflow_v2beta1.EnvironmentsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.UpdateEnvironmentRequest( + ) + + # Make the request + response = client.update_environment(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Environments_UpdateEnvironment_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_fulfillments_get_fulfillment_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_fulfillments_get_fulfillment_async.py new file mode 100644 index 000000000..99d992444 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_fulfillments_get_fulfillment_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetFulfillment +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Fulfillments_GetFulfillment_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_get_fulfillment(): + # Create a client + client = dialogflow_v2beta1.FulfillmentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetFulfillmentRequest( + name="name_value", + ) + + # Make the request + response = await client.get_fulfillment(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Fulfillments_GetFulfillment_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_fulfillments_get_fulfillment_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_fulfillments_get_fulfillment_sync.py new file mode 100644 index 000000000..137a231e0 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_fulfillments_get_fulfillment_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetFulfillment +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Fulfillments_GetFulfillment_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_get_fulfillment(): + # Create a client + client = dialogflow_v2beta1.FulfillmentsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetFulfillmentRequest( + name="name_value", + ) + + # Make the request + response = client.get_fulfillment(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Fulfillments_GetFulfillment_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_fulfillments_update_fulfillment_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_fulfillments_update_fulfillment_async.py new file mode 100644 index 000000000..2b782e0b4 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_fulfillments_update_fulfillment_async.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateFulfillment +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Fulfillments_UpdateFulfillment_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_update_fulfillment(): + # Create a client + client = dialogflow_v2beta1.FulfillmentsAsyncClient() + + # Initialize request argument(s) + fulfillment = dialogflow_v2beta1.Fulfillment() + fulfillment.generic_web_service.uri = "uri_value" + fulfillment.name = "name_value" + + request = dialogflow_v2beta1.UpdateFulfillmentRequest( + fulfillment=fulfillment, + ) + + # Make the request + response = await client.update_fulfillment(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Fulfillments_UpdateFulfillment_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_fulfillments_update_fulfillment_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_fulfillments_update_fulfillment_sync.py new file mode 100644 index 000000000..2669c9cda --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_fulfillments_update_fulfillment_sync.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateFulfillment +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Fulfillments_UpdateFulfillment_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_update_fulfillment(): + # Create a client + client = dialogflow_v2beta1.FulfillmentsClient() + + # Initialize request argument(s) + fulfillment = dialogflow_v2beta1.Fulfillment() + fulfillment.generic_web_service.uri = "uri_value" + fulfillment.name = "name_value" + + request = dialogflow_v2beta1.UpdateFulfillmentRequest( + fulfillment=fulfillment, + ) + + # Make the request + response = client.update_fulfillment(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Fulfillments_UpdateFulfillment_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_intents_batch_delete_intents_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_intents_batch_delete_intents_async.py new file mode 100644 index 000000000..5906135f6 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_intents_batch_delete_intents_async.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchDeleteIntents +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Intents_BatchDeleteIntents_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_batch_delete_intents(): + # Create a client + client = dialogflow_v2beta1.IntentsAsyncClient() + + # Initialize request argument(s) + intents = dialogflow_v2beta1.Intent() + intents.display_name = "display_name_value" + + request = dialogflow_v2beta1.BatchDeleteIntentsRequest( + parent="parent_value", + intents=intents, + ) + + # Make the request + operation = client.batch_delete_intents(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Intents_BatchDeleteIntents_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_intents_batch_delete_intents_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_intents_batch_delete_intents_sync.py new file mode 100644 index 000000000..12e547187 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_intents_batch_delete_intents_sync.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchDeleteIntents +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Intents_BatchDeleteIntents_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_batch_delete_intents(): + # Create a client + client = dialogflow_v2beta1.IntentsClient() + + # Initialize request argument(s) + intents = dialogflow_v2beta1.Intent() + intents.display_name = "display_name_value" + + request = dialogflow_v2beta1.BatchDeleteIntentsRequest( + parent="parent_value", + intents=intents, + ) + + # Make the request + operation = client.batch_delete_intents(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Intents_BatchDeleteIntents_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_intents_batch_update_intents_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_intents_batch_update_intents_async.py new file mode 100644 index 000000000..d509f6cfa --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_intents_batch_update_intents_async.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchUpdateIntents +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Intents_BatchUpdateIntents_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_batch_update_intents(): + # Create a client + client = dialogflow_v2beta1.IntentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.BatchUpdateIntentsRequest( + intent_batch_uri="intent_batch_uri_value", + parent="parent_value", + ) + + # Make the request + operation = client.batch_update_intents(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Intents_BatchUpdateIntents_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_intents_batch_update_intents_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_intents_batch_update_intents_sync.py new file mode 100644 index 000000000..ac3cb5a25 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_intents_batch_update_intents_sync.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for BatchUpdateIntents +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Intents_BatchUpdateIntents_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_batch_update_intents(): + # Create a client + client = dialogflow_v2beta1.IntentsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.BatchUpdateIntentsRequest( + intent_batch_uri="intent_batch_uri_value", + parent="parent_value", + ) + + # Make the request + operation = client.batch_update_intents(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Intents_BatchUpdateIntents_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_intents_create_intent_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_intents_create_intent_async.py new file mode 100644 index 000000000..12e004f25 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_intents_create_intent_async.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateIntent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Intents_CreateIntent_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_create_intent(): + # Create a client + client = dialogflow_v2beta1.IntentsAsyncClient() + + # Initialize request argument(s) + intent = dialogflow_v2beta1.Intent() + intent.display_name = "display_name_value" + + request = dialogflow_v2beta1.CreateIntentRequest( + parent="parent_value", + intent=intent, + ) + + # Make the request + response = await client.create_intent(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Intents_CreateIntent_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_intents_create_intent_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_intents_create_intent_sync.py new file mode 100644 index 000000000..3985efd5a --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_intents_create_intent_sync.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateIntent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Intents_CreateIntent_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_create_intent(): + # Create a client + client = dialogflow_v2beta1.IntentsClient() + + # Initialize request argument(s) + intent = dialogflow_v2beta1.Intent() + intent.display_name = "display_name_value" + + request = dialogflow_v2beta1.CreateIntentRequest( + parent="parent_value", + intent=intent, + ) + + # Make the request + response = client.create_intent(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Intents_CreateIntent_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_intents_delete_intent_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_intents_delete_intent_async.py new file mode 100644 index 000000000..1861f0faa --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_intents_delete_intent_async.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteIntent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Intents_DeleteIntent_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_delete_intent(): + # Create a client + client = dialogflow_v2beta1.IntentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.DeleteIntentRequest( + name="name_value", + ) + + # Make the request + await client.delete_intent(request=request) + + +# [END dialogflow_v2beta1_generated_Intents_DeleteIntent_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_intents_delete_intent_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_intents_delete_intent_sync.py new file mode 100644 index 000000000..c1a31b086 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_intents_delete_intent_sync.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteIntent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Intents_DeleteIntent_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_delete_intent(): + # Create a client + client = dialogflow_v2beta1.IntentsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.DeleteIntentRequest( + name="name_value", + ) + + # Make the request + client.delete_intent(request=request) + + +# [END dialogflow_v2beta1_generated_Intents_DeleteIntent_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_intents_get_intent_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_intents_get_intent_async.py new file mode 100644 index 000000000..8bf7afe50 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_intents_get_intent_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetIntent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Intents_GetIntent_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_get_intent(): + # Create a client + client = dialogflow_v2beta1.IntentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetIntentRequest( + name="name_value", + ) + + # Make the request + response = await client.get_intent(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Intents_GetIntent_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_intents_get_intent_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_intents_get_intent_sync.py new file mode 100644 index 000000000..5e40161ae --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_intents_get_intent_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetIntent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Intents_GetIntent_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_get_intent(): + # Create a client + client = dialogflow_v2beta1.IntentsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetIntentRequest( + name="name_value", + ) + + # Make the request + response = client.get_intent(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Intents_GetIntent_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_intents_list_intents_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_intents_list_intents_async.py new file mode 100644 index 000000000..5cf051a88 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_intents_list_intents_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListIntents +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Intents_ListIntents_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_list_intents(): + # Create a client + client = dialogflow_v2beta1.IntentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ListIntentsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_intents(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_Intents_ListIntents_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_intents_list_intents_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_intents_list_intents_sync.py new file mode 100644 index 000000000..0372e2887 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_intents_list_intents_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListIntents +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Intents_ListIntents_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_list_intents(): + # Create a client + client = dialogflow_v2beta1.IntentsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ListIntentsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_intents(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_Intents_ListIntents_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_intents_update_intent_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_intents_update_intent_async.py new file mode 100644 index 000000000..c4d544cad --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_intents_update_intent_async.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateIntent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Intents_UpdateIntent_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_update_intent(): + # Create a client + client = dialogflow_v2beta1.IntentsAsyncClient() + + # Initialize request argument(s) + intent = dialogflow_v2beta1.Intent() + intent.display_name = "display_name_value" + + request = dialogflow_v2beta1.UpdateIntentRequest( + intent=intent, + ) + + # Make the request + response = await client.update_intent(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Intents_UpdateIntent_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_intents_update_intent_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_intents_update_intent_sync.py new file mode 100644 index 000000000..5b96bca6f --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_intents_update_intent_sync.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateIntent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Intents_UpdateIntent_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_update_intent(): + # Create a client + client = dialogflow_v2beta1.IntentsClient() + + # Initialize request argument(s) + intent = dialogflow_v2beta1.Intent() + intent.display_name = "display_name_value" + + request = dialogflow_v2beta1.UpdateIntentRequest( + intent=intent, + ) + + # Make the request + response = client.update_intent(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Intents_UpdateIntent_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_create_knowledge_base_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_create_knowledge_base_async.py new file mode 100644 index 000000000..5cdc435c4 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_create_knowledge_base_async.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateKnowledgeBase +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_KnowledgeBases_CreateKnowledgeBase_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_create_knowledge_base(): + # Create a client + client = dialogflow_v2beta1.KnowledgeBasesAsyncClient() + + # Initialize request argument(s) + knowledge_base = dialogflow_v2beta1.KnowledgeBase() + knowledge_base.display_name = "display_name_value" + + request = dialogflow_v2beta1.CreateKnowledgeBaseRequest( + parent="parent_value", + knowledge_base=knowledge_base, + ) + + # Make the request + response = await client.create_knowledge_base(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_KnowledgeBases_CreateKnowledgeBase_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_create_knowledge_base_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_create_knowledge_base_sync.py new file mode 100644 index 000000000..88640260b --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_create_knowledge_base_sync.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateKnowledgeBase +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_KnowledgeBases_CreateKnowledgeBase_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_create_knowledge_base(): + # Create a client + client = dialogflow_v2beta1.KnowledgeBasesClient() + + # Initialize request argument(s) + knowledge_base = dialogflow_v2beta1.KnowledgeBase() + knowledge_base.display_name = "display_name_value" + + request = dialogflow_v2beta1.CreateKnowledgeBaseRequest( + parent="parent_value", + knowledge_base=knowledge_base, + ) + + # Make the request + response = client.create_knowledge_base(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_KnowledgeBases_CreateKnowledgeBase_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_delete_knowledge_base_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_delete_knowledge_base_async.py new file mode 100644 index 000000000..e0d6ae0df --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_delete_knowledge_base_async.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteKnowledgeBase +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_KnowledgeBases_DeleteKnowledgeBase_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_delete_knowledge_base(): + # Create a client + client = dialogflow_v2beta1.KnowledgeBasesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.DeleteKnowledgeBaseRequest( + name="name_value", + ) + + # Make the request + await client.delete_knowledge_base(request=request) + + +# [END dialogflow_v2beta1_generated_KnowledgeBases_DeleteKnowledgeBase_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_delete_knowledge_base_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_delete_knowledge_base_sync.py new file mode 100644 index 000000000..4fcffbdf6 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_delete_knowledge_base_sync.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteKnowledgeBase +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_KnowledgeBases_DeleteKnowledgeBase_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_delete_knowledge_base(): + # Create a client + client = dialogflow_v2beta1.KnowledgeBasesClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.DeleteKnowledgeBaseRequest( + name="name_value", + ) + + # Make the request + client.delete_knowledge_base(request=request) + + +# [END dialogflow_v2beta1_generated_KnowledgeBases_DeleteKnowledgeBase_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_get_knowledge_base_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_get_knowledge_base_async.py new file mode 100644 index 000000000..dd6d3795b --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_get_knowledge_base_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetKnowledgeBase +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_KnowledgeBases_GetKnowledgeBase_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_get_knowledge_base(): + # Create a client + client = dialogflow_v2beta1.KnowledgeBasesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetKnowledgeBaseRequest( + name="name_value", + ) + + # Make the request + response = await client.get_knowledge_base(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_KnowledgeBases_GetKnowledgeBase_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_get_knowledge_base_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_get_knowledge_base_sync.py new file mode 100644 index 000000000..d68c1de4f --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_get_knowledge_base_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetKnowledgeBase +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_KnowledgeBases_GetKnowledgeBase_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_get_knowledge_base(): + # Create a client + client = dialogflow_v2beta1.KnowledgeBasesClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetKnowledgeBaseRequest( + name="name_value", + ) + + # Make the request + response = client.get_knowledge_base(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_KnowledgeBases_GetKnowledgeBase_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_list_knowledge_bases_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_list_knowledge_bases_async.py new file mode 100644 index 000000000..80a331b81 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_list_knowledge_bases_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListKnowledgeBases +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_KnowledgeBases_ListKnowledgeBases_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_list_knowledge_bases(): + # Create a client + client = dialogflow_v2beta1.KnowledgeBasesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ListKnowledgeBasesRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_knowledge_bases(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_KnowledgeBases_ListKnowledgeBases_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_list_knowledge_bases_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_list_knowledge_bases_sync.py new file mode 100644 index 000000000..b99a77119 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_list_knowledge_bases_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListKnowledgeBases +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_KnowledgeBases_ListKnowledgeBases_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_list_knowledge_bases(): + # Create a client + client = dialogflow_v2beta1.KnowledgeBasesClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ListKnowledgeBasesRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_knowledge_bases(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_KnowledgeBases_ListKnowledgeBases_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_update_knowledge_base_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_update_knowledge_base_async.py new file mode 100644 index 000000000..1cbf4da59 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_update_knowledge_base_async.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateKnowledgeBase +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_KnowledgeBases_UpdateKnowledgeBase_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_update_knowledge_base(): + # Create a client + client = dialogflow_v2beta1.KnowledgeBasesAsyncClient() + + # Initialize request argument(s) + knowledge_base = dialogflow_v2beta1.KnowledgeBase() + knowledge_base.display_name = "display_name_value" + + request = dialogflow_v2beta1.UpdateKnowledgeBaseRequest( + knowledge_base=knowledge_base, + ) + + # Make the request + response = await client.update_knowledge_base(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_KnowledgeBases_UpdateKnowledgeBase_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_update_knowledge_base_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_update_knowledge_base_sync.py new file mode 100644 index 000000000..2756317e7 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_knowledge_bases_update_knowledge_base_sync.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateKnowledgeBase +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_KnowledgeBases_UpdateKnowledgeBase_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_update_knowledge_base(): + # Create a client + client = dialogflow_v2beta1.KnowledgeBasesClient() + + # Initialize request argument(s) + knowledge_base = dialogflow_v2beta1.KnowledgeBase() + knowledge_base.display_name = "display_name_value" + + request = dialogflow_v2beta1.UpdateKnowledgeBaseRequest( + knowledge_base=knowledge_base, + ) + + # Make the request + response = client.update_knowledge_base(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_KnowledgeBases_UpdateKnowledgeBase_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_participants_analyze_content_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_participants_analyze_content_async.py new file mode 100644 index 000000000..0fcf97261 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_participants_analyze_content_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for AnalyzeContent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Participants_AnalyzeContent_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_analyze_content(): + # Create a client + client = dialogflow_v2beta1.ParticipantsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.AnalyzeContentRequest( + participant="participant_value", + ) + + # Make the request + response = await client.analyze_content(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Participants_AnalyzeContent_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_participants_analyze_content_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_participants_analyze_content_sync.py new file mode 100644 index 000000000..ddf1f72e3 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_participants_analyze_content_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for AnalyzeContent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Participants_AnalyzeContent_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_analyze_content(): + # Create a client + client = dialogflow_v2beta1.ParticipantsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.AnalyzeContentRequest( + participant="participant_value", + ) + + # Make the request + response = client.analyze_content(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Participants_AnalyzeContent_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_participants_compile_suggestion_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_participants_compile_suggestion_async.py new file mode 100644 index 000000000..88f4e42a8 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_participants_compile_suggestion_async.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CompileSuggestion +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Participants_CompileSuggestion_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_compile_suggestion(): + # Create a client + client = dialogflow_v2beta1.ParticipantsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.CompileSuggestionRequest( + ) + + # Make the request + response = await client.compile_suggestion(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Participants_CompileSuggestion_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_participants_compile_suggestion_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_participants_compile_suggestion_sync.py new file mode 100644 index 000000000..4ed8e046f --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_participants_compile_suggestion_sync.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CompileSuggestion +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Participants_CompileSuggestion_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_compile_suggestion(): + # Create a client + client = dialogflow_v2beta1.ParticipantsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.CompileSuggestionRequest( + ) + + # Make the request + response = client.compile_suggestion(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Participants_CompileSuggestion_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_participants_create_participant_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_participants_create_participant_async.py new file mode 100644 index 000000000..b3baaca70 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_participants_create_participant_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateParticipant +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Participants_CreateParticipant_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_create_participant(): + # Create a client + client = dialogflow_v2beta1.ParticipantsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.CreateParticipantRequest( + parent="parent_value", + ) + + # Make the request + response = await client.create_participant(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Participants_CreateParticipant_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_participants_create_participant_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_participants_create_participant_sync.py new file mode 100644 index 000000000..03bd2e98d --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_participants_create_participant_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateParticipant +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Participants_CreateParticipant_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_create_participant(): + # Create a client + client = dialogflow_v2beta1.ParticipantsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.CreateParticipantRequest( + parent="parent_value", + ) + + # Make the request + response = client.create_participant(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Participants_CreateParticipant_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_participants_get_participant_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_participants_get_participant_async.py new file mode 100644 index 000000000..aa5097698 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_participants_get_participant_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetParticipant +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Participants_GetParticipant_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_get_participant(): + # Create a client + client = dialogflow_v2beta1.ParticipantsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetParticipantRequest( + name="name_value", + ) + + # Make the request + response = await client.get_participant(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Participants_GetParticipant_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_participants_get_participant_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_participants_get_participant_sync.py new file mode 100644 index 000000000..ff7bc549e --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_participants_get_participant_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetParticipant +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Participants_GetParticipant_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_get_participant(): + # Create a client + client = dialogflow_v2beta1.ParticipantsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetParticipantRequest( + name="name_value", + ) + + # Make the request + response = client.get_participant(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Participants_GetParticipant_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_participants_list_participants_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_participants_list_participants_async.py new file mode 100644 index 000000000..7d7301e53 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_participants_list_participants_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListParticipants +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Participants_ListParticipants_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_list_participants(): + # Create a client + client = dialogflow_v2beta1.ParticipantsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ListParticipantsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_participants(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_Participants_ListParticipants_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_participants_list_participants_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_participants_list_participants_sync.py new file mode 100644 index 000000000..855054d07 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_participants_list_participants_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListParticipants +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Participants_ListParticipants_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_list_participants(): + # Create a client + client = dialogflow_v2beta1.ParticipantsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ListParticipantsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_participants(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_Participants_ListParticipants_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_participants_list_suggestions_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_participants_list_suggestions_async.py new file mode 100644 index 000000000..d22b1cdfe --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_participants_list_suggestions_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListSuggestions +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Participants_ListSuggestions_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_list_suggestions(): + # Create a client + client = dialogflow_v2beta1.ParticipantsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ListSuggestionsRequest( + ) + + # Make the request + page_result = client.list_suggestions(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_Participants_ListSuggestions_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_participants_list_suggestions_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_participants_list_suggestions_sync.py new file mode 100644 index 000000000..6dd34c8be --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_participants_list_suggestions_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListSuggestions +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Participants_ListSuggestions_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_list_suggestions(): + # Create a client + client = dialogflow_v2beta1.ParticipantsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ListSuggestionsRequest( + ) + + # Make the request + page_result = client.list_suggestions(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_Participants_ListSuggestions_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_participants_suggest_articles_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_participants_suggest_articles_async.py new file mode 100644 index 000000000..b735b7f5d --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_participants_suggest_articles_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for SuggestArticles +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Participants_SuggestArticles_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_suggest_articles(): + # Create a client + client = dialogflow_v2beta1.ParticipantsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.SuggestArticlesRequest( + parent="parent_value", + ) + + # Make the request + response = await client.suggest_articles(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Participants_SuggestArticles_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_participants_suggest_articles_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_participants_suggest_articles_sync.py new file mode 100644 index 000000000..1c4dda6eb --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_participants_suggest_articles_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for SuggestArticles +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Participants_SuggestArticles_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_suggest_articles(): + # Create a client + client = dialogflow_v2beta1.ParticipantsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.SuggestArticlesRequest( + parent="parent_value", + ) + + # Make the request + response = client.suggest_articles(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Participants_SuggestArticles_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_participants_suggest_faq_answers_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_participants_suggest_faq_answers_async.py new file mode 100644 index 000000000..fb8f22aa9 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_participants_suggest_faq_answers_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for SuggestFaqAnswers +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Participants_SuggestFaqAnswers_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_suggest_faq_answers(): + # Create a client + client = dialogflow_v2beta1.ParticipantsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.SuggestFaqAnswersRequest( + parent="parent_value", + ) + + # Make the request + response = await client.suggest_faq_answers(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Participants_SuggestFaqAnswers_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_participants_suggest_faq_answers_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_participants_suggest_faq_answers_sync.py new file mode 100644 index 000000000..1efd87cc5 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_participants_suggest_faq_answers_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for SuggestFaqAnswers +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Participants_SuggestFaqAnswers_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_suggest_faq_answers(): + # Create a client + client = dialogflow_v2beta1.ParticipantsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.SuggestFaqAnswersRequest( + parent="parent_value", + ) + + # Make the request + response = client.suggest_faq_answers(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Participants_SuggestFaqAnswers_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_participants_suggest_smart_replies_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_participants_suggest_smart_replies_async.py new file mode 100644 index 000000000..fab0c0069 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_participants_suggest_smart_replies_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for SuggestSmartReplies +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Participants_SuggestSmartReplies_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_suggest_smart_replies(): + # Create a client + client = dialogflow_v2beta1.ParticipantsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.SuggestSmartRepliesRequest( + parent="parent_value", + ) + + # Make the request + response = await client.suggest_smart_replies(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Participants_SuggestSmartReplies_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_participants_suggest_smart_replies_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_participants_suggest_smart_replies_sync.py new file mode 100644 index 000000000..2ca8d8172 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_participants_suggest_smart_replies_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for SuggestSmartReplies +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Participants_SuggestSmartReplies_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_suggest_smart_replies(): + # Create a client + client = dialogflow_v2beta1.ParticipantsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.SuggestSmartRepliesRequest( + parent="parent_value", + ) + + # Make the request + response = client.suggest_smart_replies(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Participants_SuggestSmartReplies_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_participants_update_participant_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_participants_update_participant_async.py new file mode 100644 index 000000000..fff4927c8 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_participants_update_participant_async.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateParticipant +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Participants_UpdateParticipant_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_update_participant(): + # Create a client + client = dialogflow_v2beta1.ParticipantsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.UpdateParticipantRequest( + ) + + # Make the request + response = await client.update_participant(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Participants_UpdateParticipant_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_participants_update_participant_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_participants_update_participant_sync.py new file mode 100644 index 000000000..ecd0ea3f9 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_participants_update_participant_sync.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateParticipant +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Participants_UpdateParticipant_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_update_participant(): + # Create a client + client = dialogflow_v2beta1.ParticipantsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.UpdateParticipantRequest( + ) + + # Make the request + response = client.update_participant(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Participants_UpdateParticipant_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_create_session_entity_type_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_create_session_entity_type_async.py new file mode 100644 index 000000000..cf5305033 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_create_session_entity_type_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateSessionEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_SessionEntityTypes_CreateSessionEntityType_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_create_session_entity_type(): + # Create a client + client = dialogflow_v2beta1.SessionEntityTypesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.CreateSessionEntityTypeRequest( + parent="parent_value", + ) + + # Make the request + response = await client.create_session_entity_type(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_SessionEntityTypes_CreateSessionEntityType_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_create_session_entity_type_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_create_session_entity_type_sync.py new file mode 100644 index 000000000..b76969b04 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_create_session_entity_type_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateSessionEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_SessionEntityTypes_CreateSessionEntityType_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_create_session_entity_type(): + # Create a client + client = dialogflow_v2beta1.SessionEntityTypesClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.CreateSessionEntityTypeRequest( + parent="parent_value", + ) + + # Make the request + response = client.create_session_entity_type(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_SessionEntityTypes_CreateSessionEntityType_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_delete_session_entity_type_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_delete_session_entity_type_async.py new file mode 100644 index 000000000..4ddc40ea4 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_delete_session_entity_type_async.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteSessionEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_SessionEntityTypes_DeleteSessionEntityType_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_delete_session_entity_type(): + # Create a client + client = dialogflow_v2beta1.SessionEntityTypesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.DeleteSessionEntityTypeRequest( + name="name_value", + ) + + # Make the request + await client.delete_session_entity_type(request=request) + + +# [END dialogflow_v2beta1_generated_SessionEntityTypes_DeleteSessionEntityType_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_delete_session_entity_type_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_delete_session_entity_type_sync.py new file mode 100644 index 000000000..785dba003 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_delete_session_entity_type_sync.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteSessionEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_SessionEntityTypes_DeleteSessionEntityType_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_delete_session_entity_type(): + # Create a client + client = dialogflow_v2beta1.SessionEntityTypesClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.DeleteSessionEntityTypeRequest( + name="name_value", + ) + + # Make the request + client.delete_session_entity_type(request=request) + + +# [END dialogflow_v2beta1_generated_SessionEntityTypes_DeleteSessionEntityType_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_get_session_entity_type_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_get_session_entity_type_async.py new file mode 100644 index 000000000..1d4a9ada6 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_get_session_entity_type_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetSessionEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_SessionEntityTypes_GetSessionEntityType_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_get_session_entity_type(): + # Create a client + client = dialogflow_v2beta1.SessionEntityTypesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetSessionEntityTypeRequest( + name="name_value", + ) + + # Make the request + response = await client.get_session_entity_type(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_SessionEntityTypes_GetSessionEntityType_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_get_session_entity_type_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_get_session_entity_type_sync.py new file mode 100644 index 000000000..6bc0325e5 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_get_session_entity_type_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetSessionEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_SessionEntityTypes_GetSessionEntityType_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_get_session_entity_type(): + # Create a client + client = dialogflow_v2beta1.SessionEntityTypesClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetSessionEntityTypeRequest( + name="name_value", + ) + + # Make the request + response = client.get_session_entity_type(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_SessionEntityTypes_GetSessionEntityType_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_list_session_entity_types_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_list_session_entity_types_async.py new file mode 100644 index 000000000..5f8ba1ccf --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_list_session_entity_types_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListSessionEntityTypes +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_SessionEntityTypes_ListSessionEntityTypes_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_list_session_entity_types(): + # Create a client + client = dialogflow_v2beta1.SessionEntityTypesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ListSessionEntityTypesRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_session_entity_types(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_SessionEntityTypes_ListSessionEntityTypes_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_list_session_entity_types_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_list_session_entity_types_sync.py new file mode 100644 index 000000000..7f5872ac4 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_list_session_entity_types_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListSessionEntityTypes +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_SessionEntityTypes_ListSessionEntityTypes_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_list_session_entity_types(): + # Create a client + client = dialogflow_v2beta1.SessionEntityTypesClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ListSessionEntityTypesRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_session_entity_types(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_SessionEntityTypes_ListSessionEntityTypes_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_update_session_entity_type_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_update_session_entity_type_async.py new file mode 100644 index 000000000..dfa13e9c2 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_update_session_entity_type_async.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateSessionEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_SessionEntityTypes_UpdateSessionEntityType_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_update_session_entity_type(): + # Create a client + client = dialogflow_v2beta1.SessionEntityTypesAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.UpdateSessionEntityTypeRequest( + ) + + # Make the request + response = await client.update_session_entity_type(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_SessionEntityTypes_UpdateSessionEntityType_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_update_session_entity_type_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_update_session_entity_type_sync.py new file mode 100644 index 000000000..6875cde15 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_session_entity_types_update_session_entity_type_sync.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateSessionEntityType +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_SessionEntityTypes_UpdateSessionEntityType_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_update_session_entity_type(): + # Create a client + client = dialogflow_v2beta1.SessionEntityTypesClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.UpdateSessionEntityTypeRequest( + ) + + # Make the request + response = client.update_session_entity_type(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_SessionEntityTypes_UpdateSessionEntityType_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_sessions_detect_intent_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_sessions_detect_intent_async.py new file mode 100644 index 000000000..732b5606f --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_sessions_detect_intent_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DetectIntent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Sessions_DetectIntent_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_detect_intent(): + # Create a client + client = dialogflow_v2beta1.SessionsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.DetectIntentRequest( + session="session_value", + ) + + # Make the request + response = await client.detect_intent(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Sessions_DetectIntent_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_sessions_detect_intent_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_sessions_detect_intent_sync.py new file mode 100644 index 000000000..f252a1f86 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_sessions_detect_intent_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DetectIntent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Sessions_DetectIntent_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_detect_intent(): + # Create a client + client = dialogflow_v2beta1.SessionsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.DetectIntentRequest( + session="session_value", + ) + + # Make the request + response = client.detect_intent(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Sessions_DetectIntent_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_sessions_streaming_detect_intent_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_sessions_streaming_detect_intent_async.py new file mode 100644 index 000000000..ad5eeb5cb --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_sessions_streaming_detect_intent_async.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for StreamingDetectIntent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Sessions_StreamingDetectIntent_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_streaming_detect_intent(): + # Create a client + client = dialogflow_v2beta1.SessionsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.StreamingDetectIntentRequest( + session="session_value", + ) + + # This method expects an iterator which contains + # 'dialogflow_v2beta1.StreamingDetectIntentRequest' objects + # Here we create a generator that yields a single `request` for + # demonstrative purposes. + requests = [request] + + def request_generator(): + for request in requests: + yield request + + # Make the request + stream = await client.streaming_detect_intent(requests=request_generator()) + + # Handle the response + async for response in stream: + print(response) + +# [END dialogflow_v2beta1_generated_Sessions_StreamingDetectIntent_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_sessions_streaming_detect_intent_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_sessions_streaming_detect_intent_sync.py new file mode 100644 index 000000000..64f1a4a8d --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_sessions_streaming_detect_intent_sync.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for StreamingDetectIntent +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Sessions_StreamingDetectIntent_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_streaming_detect_intent(): + # Create a client + client = dialogflow_v2beta1.SessionsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.StreamingDetectIntentRequest( + session="session_value", + ) + + # This method expects an iterator which contains + # 'dialogflow_v2beta1.StreamingDetectIntentRequest' objects + # Here we create a generator that yields a single `request` for + # demonstrative purposes. + requests = [request] + + def request_generator(): + for request in requests: + yield request + + # Make the request + stream = client.streaming_detect_intent(requests=request_generator()) + + # Handle the response + for response in stream: + print(response) + +# [END dialogflow_v2beta1_generated_Sessions_StreamingDetectIntent_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_versions_create_version_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_versions_create_version_async.py new file mode 100644 index 000000000..c0a4ab63b --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_versions_create_version_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateVersion +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Versions_CreateVersion_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_create_version(): + # Create a client + client = dialogflow_v2beta1.VersionsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.CreateVersionRequest( + parent="parent_value", + ) + + # Make the request + response = await client.create_version(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Versions_CreateVersion_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_versions_create_version_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_versions_create_version_sync.py new file mode 100644 index 000000000..35b2fa45d --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_versions_create_version_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for CreateVersion +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Versions_CreateVersion_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_create_version(): + # Create a client + client = dialogflow_v2beta1.VersionsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.CreateVersionRequest( + parent="parent_value", + ) + + # Make the request + response = client.create_version(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Versions_CreateVersion_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_versions_delete_version_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_versions_delete_version_async.py new file mode 100644 index 000000000..9fc436ec2 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_versions_delete_version_async.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteVersion +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Versions_DeleteVersion_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_delete_version(): + # Create a client + client = dialogflow_v2beta1.VersionsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.DeleteVersionRequest( + name="name_value", + ) + + # Make the request + await client.delete_version(request=request) + + +# [END dialogflow_v2beta1_generated_Versions_DeleteVersion_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_versions_delete_version_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_versions_delete_version_sync.py new file mode 100644 index 000000000..4fc2659a4 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_versions_delete_version_sync.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for DeleteVersion +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Versions_DeleteVersion_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_delete_version(): + # Create a client + client = dialogflow_v2beta1.VersionsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.DeleteVersionRequest( + name="name_value", + ) + + # Make the request + client.delete_version(request=request) + + +# [END dialogflow_v2beta1_generated_Versions_DeleteVersion_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_versions_get_version_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_versions_get_version_async.py new file mode 100644 index 000000000..d8e0104b4 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_versions_get_version_async.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetVersion +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Versions_GetVersion_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_get_version(): + # Create a client + client = dialogflow_v2beta1.VersionsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetVersionRequest( + name="name_value", + ) + + # Make the request + response = await client.get_version(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Versions_GetVersion_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_versions_get_version_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_versions_get_version_sync.py new file mode 100644 index 000000000..c4d6b74ce --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_versions_get_version_sync.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for GetVersion +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Versions_GetVersion_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_get_version(): + # Create a client + client = dialogflow_v2beta1.VersionsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.GetVersionRequest( + name="name_value", + ) + + # Make the request + response = client.get_version(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Versions_GetVersion_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_versions_list_versions_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_versions_list_versions_async.py new file mode 100644 index 000000000..f2818d3e2 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_versions_list_versions_async.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListVersions +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Versions_ListVersions_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_list_versions(): + # Create a client + client = dialogflow_v2beta1.VersionsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ListVersionsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_versions(request=request) + + # Handle the response + async for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_Versions_ListVersions_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_versions_list_versions_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_versions_list_versions_sync.py new file mode 100644 index 000000000..d7a041777 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_versions_list_versions_sync.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for ListVersions +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Versions_ListVersions_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_list_versions(): + # Create a client + client = dialogflow_v2beta1.VersionsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.ListVersionsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_versions(request=request) + + # Handle the response + for response in page_result: + print(response) + +# [END dialogflow_v2beta1_generated_Versions_ListVersions_sync] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_versions_update_version_async.py b/samples/generated_samples/dialogflow_v2beta1_generated_versions_update_version_async.py new file mode 100644 index 000000000..4f0724a70 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_versions_update_version_async.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateVersion +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Versions_UpdateVersion_async] +from google.cloud import dialogflow_v2beta1 + + +async def sample_update_version(): + # Create a client + client = dialogflow_v2beta1.VersionsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.UpdateVersionRequest( + ) + + # Make the request + response = await client.update_version(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Versions_UpdateVersion_async] diff --git a/samples/generated_samples/dialogflow_v2beta1_generated_versions_update_version_sync.py b/samples/generated_samples/dialogflow_v2beta1_generated_versions_update_version_sync.py new file mode 100644 index 000000000..55253b669 --- /dev/null +++ b/samples/generated_samples/dialogflow_v2beta1_generated_versions_update_version_sync.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpdateVersion +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-dialogflow + + +# [START dialogflow_v2beta1_generated_Versions_UpdateVersion_sync] +from google.cloud import dialogflow_v2beta1 + + +def sample_update_version(): + # Create a client + client = dialogflow_v2beta1.VersionsClient() + + # Initialize request argument(s) + request = dialogflow_v2beta1.UpdateVersionRequest( + ) + + # Make the request + response = client.update_version(request=request) + + # Handle the response + print(response) + +# [END dialogflow_v2beta1_generated_Versions_UpdateVersion_sync] diff --git a/samples/generated_samples/snippet_metadata_dialogflow_v2.json b/samples/generated_samples/snippet_metadata_dialogflow_v2.json index 3209701df..90414cfed 100644 --- a/samples/generated_samples/snippet_metadata_dialogflow_v2.json +++ b/samples/generated_samples/snippet_metadata_dialogflow_v2.json @@ -10,8 +10,8 @@ "shortName": "DeleteAgent" } }, - "file": "dialogflow_generated_dialogflow_v2_agents_delete_agent_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Agents_DeleteAgent_async", + "file": "dialogflow_v2_generated_agents_delete_agent_async.py", + "regionTag": "dialogflow_v2_generated_Agents_DeleteAgent_async", "segments": [ { "end": 42, @@ -52,8 +52,8 @@ "shortName": "DeleteAgent" } }, - "file": "dialogflow_generated_dialogflow_v2_agents_delete_agent_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Agents_DeleteAgent_sync", + "file": "dialogflow_v2_generated_agents_delete_agent_sync.py", + "regionTag": "dialogflow_v2_generated_Agents_DeleteAgent_sync", "segments": [ { "end": 42, @@ -95,8 +95,8 @@ "shortName": "ExportAgent" } }, - "file": "dialogflow_generated_dialogflow_v2_agents_export_agent_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Agents_ExportAgent_async", + "file": "dialogflow_v2_generated_agents_export_agent_async.py", + "regionTag": "dialogflow_v2_generated_Agents_ExportAgent_async", "segments": [ { "end": 49, @@ -139,8 +139,8 @@ "shortName": "ExportAgent" } }, - "file": "dialogflow_generated_dialogflow_v2_agents_export_agent_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Agents_ExportAgent_sync", + "file": "dialogflow_v2_generated_agents_export_agent_sync.py", + "regionTag": "dialogflow_v2_generated_Agents_ExportAgent_sync", "segments": [ { "end": 49, @@ -184,8 +184,8 @@ "shortName": "GetAgent" } }, - "file": "dialogflow_generated_dialogflow_v2_agents_get_agent_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Agents_GetAgent_async", + "file": "dialogflow_v2_generated_agents_get_agent_async.py", + "regionTag": "dialogflow_v2_generated_Agents_GetAgent_async", "segments": [ { "end": 44, @@ -228,8 +228,8 @@ "shortName": "GetAgent" } }, - "file": "dialogflow_generated_dialogflow_v2_agents_get_agent_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Agents_GetAgent_sync", + "file": "dialogflow_v2_generated_agents_get_agent_sync.py", + "regionTag": "dialogflow_v2_generated_Agents_GetAgent_sync", "segments": [ { "end": 44, @@ -273,8 +273,8 @@ "shortName": "GetValidationResult" } }, - "file": "dialogflow_generated_dialogflow_v2_agents_get_validation_result_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Agents_GetValidationResult_async", + "file": "dialogflow_v2_generated_agents_get_validation_result_async.py", + "regionTag": "dialogflow_v2_generated_Agents_GetValidationResult_async", "segments": [ { "end": 44, @@ -317,8 +317,8 @@ "shortName": "GetValidationResult" } }, - "file": "dialogflow_generated_dialogflow_v2_agents_get_validation_result_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Agents_GetValidationResult_sync", + "file": "dialogflow_v2_generated_agents_get_validation_result_sync.py", + "regionTag": "dialogflow_v2_generated_Agents_GetValidationResult_sync", "segments": [ { "end": 44, @@ -362,8 +362,8 @@ "shortName": "ImportAgent" } }, - "file": "dialogflow_generated_dialogflow_v2_agents_import_agent_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Agents_ImportAgent_async", + "file": "dialogflow_v2_generated_agents_import_agent_async.py", + "regionTag": "dialogflow_v2_generated_Agents_ImportAgent_async", "segments": [ { "end": 49, @@ -406,8 +406,8 @@ "shortName": "ImportAgent" } }, - "file": "dialogflow_generated_dialogflow_v2_agents_import_agent_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Agents_ImportAgent_sync", + "file": "dialogflow_v2_generated_agents_import_agent_sync.py", + "regionTag": "dialogflow_v2_generated_Agents_ImportAgent_sync", "segments": [ { "end": 49, @@ -451,8 +451,8 @@ "shortName": "RestoreAgent" } }, - "file": "dialogflow_generated_dialogflow_v2_agents_restore_agent_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Agents_RestoreAgent_async", + "file": "dialogflow_v2_generated_agents_restore_agent_async.py", + "regionTag": "dialogflow_v2_generated_Agents_RestoreAgent_async", "segments": [ { "end": 49, @@ -495,8 +495,8 @@ "shortName": "RestoreAgent" } }, - "file": "dialogflow_generated_dialogflow_v2_agents_restore_agent_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Agents_RestoreAgent_sync", + "file": "dialogflow_v2_generated_agents_restore_agent_sync.py", + "regionTag": "dialogflow_v2_generated_Agents_RestoreAgent_sync", "segments": [ { "end": 49, @@ -540,8 +540,8 @@ "shortName": "SearchAgents" } }, - "file": "dialogflow_generated_dialogflow_v2_agents_search_agents_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Agents_SearchAgents_async", + "file": "dialogflow_v2_generated_agents_search_agents_async.py", + "regionTag": "dialogflow_v2_generated_Agents_SearchAgents_async", "segments": [ { "end": 45, @@ -584,8 +584,8 @@ "shortName": "SearchAgents" } }, - "file": "dialogflow_generated_dialogflow_v2_agents_search_agents_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Agents_SearchAgents_sync", + "file": "dialogflow_v2_generated_agents_search_agents_sync.py", + "regionTag": "dialogflow_v2_generated_Agents_SearchAgents_sync", "segments": [ { "end": 45, @@ -629,8 +629,8 @@ "shortName": "SetAgent" } }, - "file": "dialogflow_generated_dialogflow_v2_agents_set_agent_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Agents_SetAgent_async", + "file": "dialogflow_v2_generated_agents_set_agent_async.py", + "regionTag": "dialogflow_v2_generated_Agents_SetAgent_async", "segments": [ { "end": 50, @@ -673,8 +673,8 @@ "shortName": "SetAgent" } }, - "file": "dialogflow_generated_dialogflow_v2_agents_set_agent_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Agents_SetAgent_sync", + "file": "dialogflow_v2_generated_agents_set_agent_sync.py", + "regionTag": "dialogflow_v2_generated_Agents_SetAgent_sync", "segments": [ { "end": 50, @@ -718,8 +718,8 @@ "shortName": "TrainAgent" } }, - "file": "dialogflow_generated_dialogflow_v2_agents_train_agent_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Agents_TrainAgent_async", + "file": "dialogflow_v2_generated_agents_train_agent_async.py", + "regionTag": "dialogflow_v2_generated_Agents_TrainAgent_async", "segments": [ { "end": 48, @@ -762,8 +762,8 @@ "shortName": "TrainAgent" } }, - "file": "dialogflow_generated_dialogflow_v2_agents_train_agent_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Agents_TrainAgent_sync", + "file": "dialogflow_v2_generated_agents_train_agent_sync.py", + "regionTag": "dialogflow_v2_generated_Agents_TrainAgent_sync", "segments": [ { "end": 48, @@ -807,8 +807,8 @@ "shortName": "ListAnswerRecords" } }, - "file": "dialogflow_generated_dialogflow_v2_answer_records_list_answer_records_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_AnswerRecords_ListAnswerRecords_async", + "file": "dialogflow_v2_generated_answer_records_list_answer_records_async.py", + "regionTag": "dialogflow_v2_generated_AnswerRecords_ListAnswerRecords_async", "segments": [ { "end": 46, @@ -851,8 +851,8 @@ "shortName": "ListAnswerRecords" } }, - "file": "dialogflow_generated_dialogflow_v2_answer_records_list_answer_records_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_AnswerRecords_ListAnswerRecords_sync", + "file": "dialogflow_v2_generated_answer_records_list_answer_records_sync.py", + "regionTag": "dialogflow_v2_generated_AnswerRecords_ListAnswerRecords_sync", "segments": [ { "end": 46, @@ -896,8 +896,8 @@ "shortName": "UpdateAnswerRecord" } }, - "file": "dialogflow_generated_dialogflow_v2_answer_records_update_answer_record_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_AnswerRecords_UpdateAnswerRecord_async", + "file": "dialogflow_v2_generated_answer_records_update_answer_record_async.py", + "regionTag": "dialogflow_v2_generated_AnswerRecords_UpdateAnswerRecord_async", "segments": [ { "end": 43, @@ -940,8 +940,8 @@ "shortName": "UpdateAnswerRecord" } }, - "file": "dialogflow_generated_dialogflow_v2_answer_records_update_answer_record_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_AnswerRecords_UpdateAnswerRecord_sync", + "file": "dialogflow_v2_generated_answer_records_update_answer_record_sync.py", + "regionTag": "dialogflow_v2_generated_AnswerRecords_UpdateAnswerRecord_sync", "segments": [ { "end": 43, @@ -985,8 +985,8 @@ "shortName": "CreateContext" } }, - "file": "dialogflow_generated_dialogflow_v2_contexts_create_context_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Contexts_CreateContext_async", + "file": "dialogflow_v2_generated_contexts_create_context_async.py", + "regionTag": "dialogflow_v2_generated_Contexts_CreateContext_async", "segments": [ { "end": 48, @@ -1029,8 +1029,8 @@ "shortName": "CreateContext" } }, - "file": "dialogflow_generated_dialogflow_v2_contexts_create_context_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Contexts_CreateContext_sync", + "file": "dialogflow_v2_generated_contexts_create_context_sync.py", + "regionTag": "dialogflow_v2_generated_Contexts_CreateContext_sync", "segments": [ { "end": 48, @@ -1074,8 +1074,8 @@ "shortName": "DeleteAllContexts" } }, - "file": "dialogflow_generated_dialogflow_v2_contexts_delete_all_contexts_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Contexts_DeleteAllContexts_async", + "file": "dialogflow_v2_generated_contexts_delete_all_contexts_async.py", + "regionTag": "dialogflow_v2_generated_Contexts_DeleteAllContexts_async", "segments": [ { "end": 42, @@ -1116,8 +1116,8 @@ "shortName": "DeleteAllContexts" } }, - "file": "dialogflow_generated_dialogflow_v2_contexts_delete_all_contexts_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Contexts_DeleteAllContexts_sync", + "file": "dialogflow_v2_generated_contexts_delete_all_contexts_sync.py", + "regionTag": "dialogflow_v2_generated_Contexts_DeleteAllContexts_sync", "segments": [ { "end": 42, @@ -1159,8 +1159,8 @@ "shortName": "DeleteContext" } }, - "file": "dialogflow_generated_dialogflow_v2_contexts_delete_context_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Contexts_DeleteContext_async", + "file": "dialogflow_v2_generated_contexts_delete_context_async.py", + "regionTag": "dialogflow_v2_generated_Contexts_DeleteContext_async", "segments": [ { "end": 42, @@ -1201,8 +1201,8 @@ "shortName": "DeleteContext" } }, - "file": "dialogflow_generated_dialogflow_v2_contexts_delete_context_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Contexts_DeleteContext_sync", + "file": "dialogflow_v2_generated_contexts_delete_context_sync.py", + "regionTag": "dialogflow_v2_generated_Contexts_DeleteContext_sync", "segments": [ { "end": 42, @@ -1244,8 +1244,8 @@ "shortName": "GetContext" } }, - "file": "dialogflow_generated_dialogflow_v2_contexts_get_context_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Contexts_GetContext_async", + "file": "dialogflow_v2_generated_contexts_get_context_async.py", + "regionTag": "dialogflow_v2_generated_Contexts_GetContext_async", "segments": [ { "end": 44, @@ -1288,8 +1288,8 @@ "shortName": "GetContext" } }, - "file": "dialogflow_generated_dialogflow_v2_contexts_get_context_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Contexts_GetContext_sync", + "file": "dialogflow_v2_generated_contexts_get_context_sync.py", + "regionTag": "dialogflow_v2_generated_Contexts_GetContext_sync", "segments": [ { "end": 44, @@ -1333,8 +1333,8 @@ "shortName": "ListContexts" } }, - "file": "dialogflow_generated_dialogflow_v2_contexts_list_contexts_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Contexts_ListContexts_async", + "file": "dialogflow_v2_generated_contexts_list_contexts_async.py", + "regionTag": "dialogflow_v2_generated_Contexts_ListContexts_async", "segments": [ { "end": 45, @@ -1377,8 +1377,8 @@ "shortName": "ListContexts" } }, - "file": "dialogflow_generated_dialogflow_v2_contexts_list_contexts_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Contexts_ListContexts_sync", + "file": "dialogflow_v2_generated_contexts_list_contexts_sync.py", + "regionTag": "dialogflow_v2_generated_Contexts_ListContexts_sync", "segments": [ { "end": 45, @@ -1422,8 +1422,8 @@ "shortName": "UpdateContext" } }, - "file": "dialogflow_generated_dialogflow_v2_contexts_update_context_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Contexts_UpdateContext_async", + "file": "dialogflow_v2_generated_contexts_update_context_async.py", + "regionTag": "dialogflow_v2_generated_Contexts_UpdateContext_async", "segments": [ { "end": 47, @@ -1466,8 +1466,8 @@ "shortName": "UpdateContext" } }, - "file": "dialogflow_generated_dialogflow_v2_contexts_update_context_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Contexts_UpdateContext_sync", + "file": "dialogflow_v2_generated_contexts_update_context_sync.py", + "regionTag": "dialogflow_v2_generated_Contexts_UpdateContext_sync", "segments": [ { "end": 47, @@ -1501,6 +1501,1341 @@ } ] }, + { + "clientMethod": { + "async": true, + "method": { + "service": { + "shortName": "ConversationDatasets" + }, + "shortName": "CreateConversationDataset" + } + }, + "file": "dialogflow_v2_generated_conversation_datasets_create_conversation_dataset_async.py", + "regionTag": "dialogflow_v2_generated_ConversationDatasets_CreateConversationDataset_async", + "segments": [ + { + "end": 52, + "start": 27, + "type": "FULL" + }, + { + "end": 52, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 42, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 49, + "start": 43, + "type": "REQUEST_EXECUTION" + }, + { + "end": 53, + "start": 50, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "method": { + "service": { + "shortName": "ConversationDatasets" + }, + "shortName": "CreateConversationDataset" + } + }, + "file": "dialogflow_v2_generated_conversation_datasets_create_conversation_dataset_sync.py", + "regionTag": "dialogflow_v2_generated_ConversationDatasets_CreateConversationDataset_sync", + "segments": [ + { + "end": 52, + "start": 27, + "type": "FULL" + }, + { + "end": 52, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 42, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 49, + "start": 43, + "type": "REQUEST_EXECUTION" + }, + { + "end": 53, + "start": 50, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "async": true, + "method": { + "service": { + "shortName": "ConversationDatasets" + }, + "shortName": "DeleteConversationDataset" + } + }, + "file": "dialogflow_v2_generated_conversation_datasets_delete_conversation_dataset_async.py", + "regionTag": "dialogflow_v2_generated_ConversationDatasets_DeleteConversationDataset_async", + "segments": [ + { + "end": 48, + "start": 27, + "type": "FULL" + }, + { + "end": 48, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 38, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 45, + "start": 39, + "type": "REQUEST_EXECUTION" + }, + { + "end": 49, + "start": 46, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "method": { + "service": { + "shortName": "ConversationDatasets" + }, + "shortName": "DeleteConversationDataset" + } + }, + "file": "dialogflow_v2_generated_conversation_datasets_delete_conversation_dataset_sync.py", + "regionTag": "dialogflow_v2_generated_ConversationDatasets_DeleteConversationDataset_sync", + "segments": [ + { + "end": 48, + "start": 27, + "type": "FULL" + }, + { + "end": 48, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 38, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 45, + "start": 39, + "type": "REQUEST_EXECUTION" + }, + { + "end": 49, + "start": 46, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "async": true, + "method": { + "service": { + "shortName": "ConversationDatasets" + }, + "shortName": "GetConversationDataset" + } + }, + "file": "dialogflow_v2_generated_conversation_datasets_get_conversation_dataset_async.py", + "regionTag": "dialogflow_v2_generated_ConversationDatasets_GetConversationDataset_async", + "segments": [ + { + "end": 44, + "start": 27, + "type": "FULL" + }, + { + "end": 44, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 38, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 41, + "start": 39, + "type": "REQUEST_EXECUTION" + }, + { + "end": 45, + "start": 42, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "method": { + "service": { + "shortName": "ConversationDatasets" + }, + "shortName": "GetConversationDataset" + } + }, + "file": "dialogflow_v2_generated_conversation_datasets_get_conversation_dataset_sync.py", + "regionTag": "dialogflow_v2_generated_ConversationDatasets_GetConversationDataset_sync", + "segments": [ + { + "end": 44, + "start": 27, + "type": "FULL" + }, + { + "end": 44, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 38, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 41, + "start": 39, + "type": "REQUEST_EXECUTION" + }, + { + "end": 45, + "start": 42, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "async": true, + "method": { + "service": { + "shortName": "ConversationDatasets" + }, + "shortName": "ImportConversationData" + } + }, + "file": "dialogflow_v2_generated_conversation_datasets_import_conversation_data_async.py", + "regionTag": "dialogflow_v2_generated_ConversationDatasets_ImportConversationData_async", + "segments": [ + { + "end": 52, + "start": 27, + "type": "FULL" + }, + { + "end": 52, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 42, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 49, + "start": 43, + "type": "REQUEST_EXECUTION" + }, + { + "end": 53, + "start": 50, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "method": { + "service": { + "shortName": "ConversationDatasets" + }, + "shortName": "ImportConversationData" + } + }, + "file": "dialogflow_v2_generated_conversation_datasets_import_conversation_data_sync.py", + "regionTag": "dialogflow_v2_generated_ConversationDatasets_ImportConversationData_sync", + "segments": [ + { + "end": 52, + "start": 27, + "type": "FULL" + }, + { + "end": 52, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 42, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 49, + "start": 43, + "type": "REQUEST_EXECUTION" + }, + { + "end": 53, + "start": 50, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "async": true, + "method": { + "service": { + "shortName": "ConversationDatasets" + }, + "shortName": "ListConversationDatasets" + } + }, + "file": "dialogflow_v2_generated_conversation_datasets_list_conversation_datasets_async.py", + "regionTag": "dialogflow_v2_generated_ConversationDatasets_ListConversationDatasets_async", + "segments": [ + { + "end": 45, + "start": 27, + "type": "FULL" + }, + { + "end": 45, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 38, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 41, + "start": 39, + "type": "REQUEST_EXECUTION" + }, + { + "end": 46, + "start": 42, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "method": { + "service": { + "shortName": "ConversationDatasets" + }, + "shortName": "ListConversationDatasets" + } + }, + "file": "dialogflow_v2_generated_conversation_datasets_list_conversation_datasets_sync.py", + "regionTag": "dialogflow_v2_generated_ConversationDatasets_ListConversationDatasets_sync", + "segments": [ + { + "end": 45, + "start": 27, + "type": "FULL" + }, + { + "end": 45, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 38, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 41, + "start": 39, + "type": "REQUEST_EXECUTION" + }, + { + "end": 46, + "start": 42, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "async": true, + "method": { + "service": { + "shortName": "ConversationModels" + }, + "shortName": "CreateConversationModelEvaluation" + } + }, + "file": "dialogflow_v2_generated_conversation_models_create_conversation_model_evaluation_async.py", + "regionTag": "dialogflow_v2_generated_ConversationModels_CreateConversationModelEvaluation_async", + "segments": [ + { + "end": 48, + "start": 27, + "type": "FULL" + }, + { + "end": 48, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 38, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 45, + "start": 39, + "type": "REQUEST_EXECUTION" + }, + { + "end": 49, + "start": 46, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "method": { + "service": { + "shortName": "ConversationModels" + }, + "shortName": "CreateConversationModelEvaluation" + } + }, + "file": "dialogflow_v2_generated_conversation_models_create_conversation_model_evaluation_sync.py", + "regionTag": "dialogflow_v2_generated_ConversationModels_CreateConversationModelEvaluation_sync", + "segments": [ + { + "end": 48, + "start": 27, + "type": "FULL" + }, + { + "end": 48, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 38, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 45, + "start": 39, + "type": "REQUEST_EXECUTION" + }, + { + "end": 49, + "start": 46, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "async": true, + "method": { + "service": { + "shortName": "ConversationModels" + }, + "shortName": "CreateConversationModel" + } + }, + "file": "dialogflow_v2_generated_conversation_models_create_conversation_model_async.py", + "regionTag": "dialogflow_v2_generated_ConversationModels_CreateConversationModel_async", + "segments": [ + { + "end": 52, + "start": 27, + "type": "FULL" + }, + { + "end": 52, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 42, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 49, + "start": 43, + "type": "REQUEST_EXECUTION" + }, + { + "end": 53, + "start": 50, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "method": { + "service": { + "shortName": "ConversationModels" + }, + "shortName": "CreateConversationModel" + } + }, + "file": "dialogflow_v2_generated_conversation_models_create_conversation_model_sync.py", + "regionTag": "dialogflow_v2_generated_ConversationModels_CreateConversationModel_sync", + "segments": [ + { + "end": 52, + "start": 27, + "type": "FULL" + }, + { + "end": 52, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 42, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 49, + "start": 43, + "type": "REQUEST_EXECUTION" + }, + { + "end": 53, + "start": 50, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "async": true, + "method": { + "service": { + "shortName": "ConversationModels" + }, + "shortName": "DeleteConversationModel" + } + }, + "file": "dialogflow_v2_generated_conversation_models_delete_conversation_model_async.py", + "regionTag": "dialogflow_v2_generated_ConversationModels_DeleteConversationModel_async", + "segments": [ + { + "end": 48, + "start": 27, + "type": "FULL" + }, + { + "end": 48, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 38, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 45, + "start": 39, + "type": "REQUEST_EXECUTION" + }, + { + "end": 49, + "start": 46, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "method": { + "service": { + "shortName": "ConversationModels" + }, + "shortName": "DeleteConversationModel" + } + }, + "file": "dialogflow_v2_generated_conversation_models_delete_conversation_model_sync.py", + "regionTag": "dialogflow_v2_generated_ConversationModels_DeleteConversationModel_sync", + "segments": [ + { + "end": 48, + "start": 27, + "type": "FULL" + }, + { + "end": 48, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 38, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 45, + "start": 39, + "type": "REQUEST_EXECUTION" + }, + { + "end": 49, + "start": 46, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "async": true, + "method": { + "service": { + "shortName": "ConversationModels" + }, + "shortName": "DeployConversationModel" + } + }, + "file": "dialogflow_v2_generated_conversation_models_deploy_conversation_model_async.py", + "regionTag": "dialogflow_v2_generated_ConversationModels_DeployConversationModel_async", + "segments": [ + { + "end": 48, + "start": 27, + "type": "FULL" + }, + { + "end": 48, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 38, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 45, + "start": 39, + "type": "REQUEST_EXECUTION" + }, + { + "end": 49, + "start": 46, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "method": { + "service": { + "shortName": "ConversationModels" + }, + "shortName": "DeployConversationModel" + } + }, + "file": "dialogflow_v2_generated_conversation_models_deploy_conversation_model_sync.py", + "regionTag": "dialogflow_v2_generated_ConversationModels_DeployConversationModel_sync", + "segments": [ + { + "end": 48, + "start": 27, + "type": "FULL" + }, + { + "end": 48, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 38, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 45, + "start": 39, + "type": "REQUEST_EXECUTION" + }, + { + "end": 49, + "start": 46, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "async": true, + "method": { + "service": { + "shortName": "ConversationModels" + }, + "shortName": "GetConversationModelEvaluation" + } + }, + "file": "dialogflow_v2_generated_conversation_models_get_conversation_model_evaluation_async.py", + "regionTag": "dialogflow_v2_generated_ConversationModels_GetConversationModelEvaluation_async", + "segments": [ + { + "end": 44, + "start": 27, + "type": "FULL" + }, + { + "end": 44, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 38, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 41, + "start": 39, + "type": "REQUEST_EXECUTION" + }, + { + "end": 45, + "start": 42, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "method": { + "service": { + "shortName": "ConversationModels" + }, + "shortName": "GetConversationModelEvaluation" + } + }, + "file": "dialogflow_v2_generated_conversation_models_get_conversation_model_evaluation_sync.py", + "regionTag": "dialogflow_v2_generated_ConversationModels_GetConversationModelEvaluation_sync", + "segments": [ + { + "end": 44, + "start": 27, + "type": "FULL" + }, + { + "end": 44, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 38, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 41, + "start": 39, + "type": "REQUEST_EXECUTION" + }, + { + "end": 45, + "start": 42, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "async": true, + "method": { + "service": { + "shortName": "ConversationModels" + }, + "shortName": "GetConversationModel" + } + }, + "file": "dialogflow_v2_generated_conversation_models_get_conversation_model_async.py", + "regionTag": "dialogflow_v2_generated_ConversationModels_GetConversationModel_async", + "segments": [ + { + "end": 44, + "start": 27, + "type": "FULL" + }, + { + "end": 44, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 38, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 41, + "start": 39, + "type": "REQUEST_EXECUTION" + }, + { + "end": 45, + "start": 42, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "method": { + "service": { + "shortName": "ConversationModels" + }, + "shortName": "GetConversationModel" + } + }, + "file": "dialogflow_v2_generated_conversation_models_get_conversation_model_sync.py", + "regionTag": "dialogflow_v2_generated_ConversationModels_GetConversationModel_sync", + "segments": [ + { + "end": 44, + "start": 27, + "type": "FULL" + }, + { + "end": 44, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 38, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 41, + "start": 39, + "type": "REQUEST_EXECUTION" + }, + { + "end": 45, + "start": 42, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "async": true, + "method": { + "service": { + "shortName": "ConversationModels" + }, + "shortName": "ListConversationModelEvaluations" + } + }, + "file": "dialogflow_v2_generated_conversation_models_list_conversation_model_evaluations_async.py", + "regionTag": "dialogflow_v2_generated_ConversationModels_ListConversationModelEvaluations_async", + "segments": [ + { + "end": 45, + "start": 27, + "type": "FULL" + }, + { + "end": 45, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 38, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 41, + "start": 39, + "type": "REQUEST_EXECUTION" + }, + { + "end": 46, + "start": 42, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "method": { + "service": { + "shortName": "ConversationModels" + }, + "shortName": "ListConversationModelEvaluations" + } + }, + "file": "dialogflow_v2_generated_conversation_models_list_conversation_model_evaluations_sync.py", + "regionTag": "dialogflow_v2_generated_ConversationModels_ListConversationModelEvaluations_sync", + "segments": [ + { + "end": 45, + "start": 27, + "type": "FULL" + }, + { + "end": 45, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 38, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 41, + "start": 39, + "type": "REQUEST_EXECUTION" + }, + { + "end": 46, + "start": 42, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "async": true, + "method": { + "service": { + "shortName": "ConversationModels" + }, + "shortName": "ListConversationModels" + } + }, + "file": "dialogflow_v2_generated_conversation_models_list_conversation_models_async.py", + "regionTag": "dialogflow_v2_generated_ConversationModels_ListConversationModels_async", + "segments": [ + { + "end": 45, + "start": 27, + "type": "FULL" + }, + { + "end": 45, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 38, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 41, + "start": 39, + "type": "REQUEST_EXECUTION" + }, + { + "end": 46, + "start": 42, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "method": { + "service": { + "shortName": "ConversationModels" + }, + "shortName": "ListConversationModels" + } + }, + "file": "dialogflow_v2_generated_conversation_models_list_conversation_models_sync.py", + "regionTag": "dialogflow_v2_generated_ConversationModels_ListConversationModels_sync", + "segments": [ + { + "end": 45, + "start": 27, + "type": "FULL" + }, + { + "end": 45, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 38, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 41, + "start": 39, + "type": "REQUEST_EXECUTION" + }, + { + "end": 46, + "start": 42, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "async": true, + "method": { + "service": { + "shortName": "ConversationModels" + }, + "shortName": "UndeployConversationModel" + } + }, + "file": "dialogflow_v2_generated_conversation_models_undeploy_conversation_model_async.py", + "regionTag": "dialogflow_v2_generated_ConversationModels_UndeployConversationModel_async", + "segments": [ + { + "end": 48, + "start": 27, + "type": "FULL" + }, + { + "end": 48, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 38, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 45, + "start": 39, + "type": "REQUEST_EXECUTION" + }, + { + "end": 49, + "start": 46, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "method": { + "service": { + "shortName": "ConversationModels" + }, + "shortName": "UndeployConversationModel" + } + }, + "file": "dialogflow_v2_generated_conversation_models_undeploy_conversation_model_sync.py", + "regionTag": "dialogflow_v2_generated_ConversationModels_UndeployConversationModel_sync", + "segments": [ + { + "end": 48, + "start": 27, + "type": "FULL" + }, + { + "end": 48, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 38, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 45, + "start": 39, + "type": "REQUEST_EXECUTION" + }, + { + "end": 49, + "start": 46, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "async": true, + "method": { + "service": { + "shortName": "ConversationProfiles" + }, + "shortName": "ClearSuggestionFeatureConfig" + } + }, + "file": "dialogflow_v2_generated_conversation_profiles_clear_suggestion_feature_config_async.py", + "regionTag": "dialogflow_v2_generated_ConversationProfiles_ClearSuggestionFeatureConfig_async", + "segments": [ + { + "end": 50, + "start": 27, + "type": "FULL" + }, + { + "end": 50, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 40, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 47, + "start": 41, + "type": "REQUEST_EXECUTION" + }, + { + "end": 51, + "start": 48, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "method": { + "service": { + "shortName": "ConversationProfiles" + }, + "shortName": "ClearSuggestionFeatureConfig" + } + }, + "file": "dialogflow_v2_generated_conversation_profiles_clear_suggestion_feature_config_sync.py", + "regionTag": "dialogflow_v2_generated_ConversationProfiles_ClearSuggestionFeatureConfig_sync", + "segments": [ + { + "end": 50, + "start": 27, + "type": "FULL" + }, + { + "end": 50, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 40, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 47, + "start": 41, + "type": "REQUEST_EXECUTION" + }, + { + "end": 51, + "start": 48, + "type": "RESPONSE_HANDLING" + } + ] + }, { "clientMethod": { "async": true, @@ -1511,8 +2846,8 @@ "shortName": "CreateConversationProfile" } }, - "file": "dialogflow_generated_dialogflow_v2_conversation_profiles_create_conversation_profile_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_ConversationProfiles_CreateConversationProfile_async", + "file": "dialogflow_v2_generated_conversation_profiles_create_conversation_profile_async.py", + "regionTag": "dialogflow_v2_generated_ConversationProfiles_CreateConversationProfile_async", "segments": [ { "end": 48, @@ -1555,8 +2890,8 @@ "shortName": "CreateConversationProfile" } }, - "file": "dialogflow_generated_dialogflow_v2_conversation_profiles_create_conversation_profile_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_ConversationProfiles_CreateConversationProfile_sync", + "file": "dialogflow_v2_generated_conversation_profiles_create_conversation_profile_sync.py", + "regionTag": "dialogflow_v2_generated_ConversationProfiles_CreateConversationProfile_sync", "segments": [ { "end": 48, @@ -1600,8 +2935,8 @@ "shortName": "DeleteConversationProfile" } }, - "file": "dialogflow_generated_dialogflow_v2_conversation_profiles_delete_conversation_profile_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_ConversationProfiles_DeleteConversationProfile_async", + "file": "dialogflow_v2_generated_conversation_profiles_delete_conversation_profile_async.py", + "regionTag": "dialogflow_v2_generated_ConversationProfiles_DeleteConversationProfile_async", "segments": [ { "end": 42, @@ -1642,8 +2977,8 @@ "shortName": "DeleteConversationProfile" } }, - "file": "dialogflow_generated_dialogflow_v2_conversation_profiles_delete_conversation_profile_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_ConversationProfiles_DeleteConversationProfile_sync", + "file": "dialogflow_v2_generated_conversation_profiles_delete_conversation_profile_sync.py", + "regionTag": "dialogflow_v2_generated_ConversationProfiles_DeleteConversationProfile_sync", "segments": [ { "end": 42, @@ -1685,8 +3020,8 @@ "shortName": "GetConversationProfile" } }, - "file": "dialogflow_generated_dialogflow_v2_conversation_profiles_get_conversation_profile_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_ConversationProfiles_GetConversationProfile_async", + "file": "dialogflow_v2_generated_conversation_profiles_get_conversation_profile_async.py", + "regionTag": "dialogflow_v2_generated_ConversationProfiles_GetConversationProfile_async", "segments": [ { "end": 44, @@ -1729,8 +3064,8 @@ "shortName": "GetConversationProfile" } }, - "file": "dialogflow_generated_dialogflow_v2_conversation_profiles_get_conversation_profile_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_ConversationProfiles_GetConversationProfile_sync", + "file": "dialogflow_v2_generated_conversation_profiles_get_conversation_profile_sync.py", + "regionTag": "dialogflow_v2_generated_ConversationProfiles_GetConversationProfile_sync", "segments": [ { "end": 44, @@ -1774,8 +3109,8 @@ "shortName": "ListConversationProfiles" } }, - "file": "dialogflow_generated_dialogflow_v2_conversation_profiles_list_conversation_profiles_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_ConversationProfiles_ListConversationProfiles_async", + "file": "dialogflow_v2_generated_conversation_profiles_list_conversation_profiles_async.py", + "regionTag": "dialogflow_v2_generated_ConversationProfiles_ListConversationProfiles_async", "segments": [ { "end": 45, @@ -1818,8 +3153,8 @@ "shortName": "ListConversationProfiles" } }, - "file": "dialogflow_generated_dialogflow_v2_conversation_profiles_list_conversation_profiles_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_ConversationProfiles_ListConversationProfiles_sync", + "file": "dialogflow_v2_generated_conversation_profiles_list_conversation_profiles_sync.py", + "regionTag": "dialogflow_v2_generated_ConversationProfiles_ListConversationProfiles_sync", "segments": [ { "end": 45, @@ -1853,6 +3188,95 @@ } ] }, + { + "clientMethod": { + "async": true, + "method": { + "service": { + "shortName": "ConversationProfiles" + }, + "shortName": "SetSuggestionFeatureConfig" + } + }, + "file": "dialogflow_v2_generated_conversation_profiles_set_suggestion_feature_config_async.py", + "regionTag": "dialogflow_v2_generated_ConversationProfiles_SetSuggestionFeatureConfig_async", + "segments": [ + { + "end": 49, + "start": 27, + "type": "FULL" + }, + { + "end": 49, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 39, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 46, + "start": 40, + "type": "REQUEST_EXECUTION" + }, + { + "end": 50, + "start": 47, + "type": "RESPONSE_HANDLING" + } + ] + }, + { + "clientMethod": { + "method": { + "service": { + "shortName": "ConversationProfiles" + }, + "shortName": "SetSuggestionFeatureConfig" + } + }, + "file": "dialogflow_v2_generated_conversation_profiles_set_suggestion_feature_config_sync.py", + "regionTag": "dialogflow_v2_generated_ConversationProfiles_SetSuggestionFeatureConfig_sync", + "segments": [ + { + "end": 49, + "start": 27, + "type": "FULL" + }, + { + "end": 49, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 39, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 46, + "start": 40, + "type": "REQUEST_EXECUTION" + }, + { + "end": 50, + "start": 47, + "type": "RESPONSE_HANDLING" + } + ] + }, { "clientMethod": { "async": true, @@ -1863,8 +3287,8 @@ "shortName": "UpdateConversationProfile" } }, - "file": "dialogflow_generated_dialogflow_v2_conversation_profiles_update_conversation_profile_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_ConversationProfiles_UpdateConversationProfile_async", + "file": "dialogflow_v2_generated_conversation_profiles_update_conversation_profile_async.py", + "regionTag": "dialogflow_v2_generated_ConversationProfiles_UpdateConversationProfile_async", "segments": [ { "end": 47, @@ -1907,8 +3331,8 @@ "shortName": "UpdateConversationProfile" } }, - "file": "dialogflow_generated_dialogflow_v2_conversation_profiles_update_conversation_profile_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_ConversationProfiles_UpdateConversationProfile_sync", + "file": "dialogflow_v2_generated_conversation_profiles_update_conversation_profile_sync.py", + "regionTag": "dialogflow_v2_generated_ConversationProfiles_UpdateConversationProfile_sync", "segments": [ { "end": 47, @@ -1952,8 +3376,8 @@ "shortName": "CompleteConversation" } }, - "file": "dialogflow_generated_dialogflow_v2_conversations_complete_conversation_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Conversations_CompleteConversation_async", + "file": "dialogflow_v2_generated_conversations_complete_conversation_async.py", + "regionTag": "dialogflow_v2_generated_Conversations_CompleteConversation_async", "segments": [ { "end": 44, @@ -1996,8 +3420,8 @@ "shortName": "CompleteConversation" } }, - "file": "dialogflow_generated_dialogflow_v2_conversations_complete_conversation_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Conversations_CompleteConversation_sync", + "file": "dialogflow_v2_generated_conversations_complete_conversation_sync.py", + "regionTag": "dialogflow_v2_generated_Conversations_CompleteConversation_sync", "segments": [ { "end": 44, @@ -2041,8 +3465,8 @@ "shortName": "CreateConversation" } }, - "file": "dialogflow_generated_dialogflow_v2_conversations_create_conversation_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Conversations_CreateConversation_async", + "file": "dialogflow_v2_generated_conversations_create_conversation_async.py", + "regionTag": "dialogflow_v2_generated_Conversations_CreateConversation_async", "segments": [ { "end": 48, @@ -2085,8 +3509,8 @@ "shortName": "CreateConversation" } }, - "file": "dialogflow_generated_dialogflow_v2_conversations_create_conversation_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Conversations_CreateConversation_sync", + "file": "dialogflow_v2_generated_conversations_create_conversation_sync.py", + "regionTag": "dialogflow_v2_generated_Conversations_CreateConversation_sync", "segments": [ { "end": 48, @@ -2130,8 +3554,8 @@ "shortName": "GetConversation" } }, - "file": "dialogflow_generated_dialogflow_v2_conversations_get_conversation_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Conversations_GetConversation_async", + "file": "dialogflow_v2_generated_conversations_get_conversation_async.py", + "regionTag": "dialogflow_v2_generated_Conversations_GetConversation_async", "segments": [ { "end": 44, @@ -2174,8 +3598,8 @@ "shortName": "GetConversation" } }, - "file": "dialogflow_generated_dialogflow_v2_conversations_get_conversation_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Conversations_GetConversation_sync", + "file": "dialogflow_v2_generated_conversations_get_conversation_sync.py", + "regionTag": "dialogflow_v2_generated_Conversations_GetConversation_sync", "segments": [ { "end": 44, @@ -2219,8 +3643,8 @@ "shortName": "ListConversations" } }, - "file": "dialogflow_generated_dialogflow_v2_conversations_list_conversations_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Conversations_ListConversations_async", + "file": "dialogflow_v2_generated_conversations_list_conversations_async.py", + "regionTag": "dialogflow_v2_generated_Conversations_ListConversations_async", "segments": [ { "end": 45, @@ -2263,8 +3687,8 @@ "shortName": "ListConversations" } }, - "file": "dialogflow_generated_dialogflow_v2_conversations_list_conversations_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Conversations_ListConversations_sync", + "file": "dialogflow_v2_generated_conversations_list_conversations_sync.py", + "regionTag": "dialogflow_v2_generated_Conversations_ListConversations_sync", "segments": [ { "end": 45, @@ -2308,8 +3732,8 @@ "shortName": "ListMessages" } }, - "file": "dialogflow_generated_dialogflow_v2_conversations_list_messages_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Conversations_ListMessages_async", + "file": "dialogflow_v2_generated_conversations_list_messages_async.py", + "regionTag": "dialogflow_v2_generated_Conversations_ListMessages_async", "segments": [ { "end": 45, @@ -2352,8 +3776,8 @@ "shortName": "ListMessages" } }, - "file": "dialogflow_generated_dialogflow_v2_conversations_list_messages_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Conversations_ListMessages_sync", + "file": "dialogflow_v2_generated_conversations_list_messages_sync.py", + "regionTag": "dialogflow_v2_generated_Conversations_ListMessages_sync", "segments": [ { "end": 45, @@ -2397,8 +3821,8 @@ "shortName": "CreateDocument" } }, - "file": "dialogflow_generated_dialogflow_v2_documents_create_document_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Documents_CreateDocument_async", + "file": "dialogflow_v2_generated_documents_create_document_async.py", + "regionTag": "dialogflow_v2_generated_Documents_CreateDocument_async", "segments": [ { "end": 55, @@ -2441,8 +3865,8 @@ "shortName": "CreateDocument" } }, - "file": "dialogflow_generated_dialogflow_v2_documents_create_document_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Documents_CreateDocument_sync", + "file": "dialogflow_v2_generated_documents_create_document_sync.py", + "regionTag": "dialogflow_v2_generated_Documents_CreateDocument_sync", "segments": [ { "end": 55, @@ -2486,8 +3910,8 @@ "shortName": "DeleteDocument" } }, - "file": "dialogflow_generated_dialogflow_v2_documents_delete_document_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Documents_DeleteDocument_async", + "file": "dialogflow_v2_generated_documents_delete_document_async.py", + "regionTag": "dialogflow_v2_generated_Documents_DeleteDocument_async", "segments": [ { "end": 48, @@ -2530,8 +3954,8 @@ "shortName": "DeleteDocument" } }, - "file": "dialogflow_generated_dialogflow_v2_documents_delete_document_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Documents_DeleteDocument_sync", + "file": "dialogflow_v2_generated_documents_delete_document_sync.py", + "regionTag": "dialogflow_v2_generated_Documents_DeleteDocument_sync", "segments": [ { "end": 48, @@ -2575,8 +3999,8 @@ "shortName": "ExportDocument" } }, - "file": "dialogflow_generated_dialogflow_v2_documents_export_document_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Documents_ExportDocument_async", + "file": "dialogflow_v2_generated_documents_export_document_async.py", + "regionTag": "dialogflow_v2_generated_Documents_ExportDocument_async", "segments": [ { "end": 48, @@ -2619,8 +4043,8 @@ "shortName": "ExportDocument" } }, - "file": "dialogflow_generated_dialogflow_v2_documents_export_document_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Documents_ExportDocument_sync", + "file": "dialogflow_v2_generated_documents_export_document_sync.py", + "regionTag": "dialogflow_v2_generated_Documents_ExportDocument_sync", "segments": [ { "end": 48, @@ -2664,8 +4088,8 @@ "shortName": "GetDocument" } }, - "file": "dialogflow_generated_dialogflow_v2_documents_get_document_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Documents_GetDocument_async", + "file": "dialogflow_v2_generated_documents_get_document_async.py", + "regionTag": "dialogflow_v2_generated_Documents_GetDocument_async", "segments": [ { "end": 44, @@ -2708,8 +4132,8 @@ "shortName": "GetDocument" } }, - "file": "dialogflow_generated_dialogflow_v2_documents_get_document_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Documents_GetDocument_sync", + "file": "dialogflow_v2_generated_documents_get_document_sync.py", + "regionTag": "dialogflow_v2_generated_Documents_GetDocument_sync", "segments": [ { "end": 44, @@ -2753,8 +4177,8 @@ "shortName": "ImportDocuments" } }, - "file": "dialogflow_generated_dialogflow_v2_documents_import_documents_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Documents_ImportDocuments_async", + "file": "dialogflow_v2_generated_documents_import_documents_async.py", + "regionTag": "dialogflow_v2_generated_Documents_ImportDocuments_async", "segments": [ { "end": 57, @@ -2797,8 +4221,8 @@ "shortName": "ImportDocuments" } }, - "file": "dialogflow_generated_dialogflow_v2_documents_import_documents_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Documents_ImportDocuments_sync", + "file": "dialogflow_v2_generated_documents_import_documents_sync.py", + "regionTag": "dialogflow_v2_generated_Documents_ImportDocuments_sync", "segments": [ { "end": 57, @@ -2842,8 +4266,8 @@ "shortName": "ListDocuments" } }, - "file": "dialogflow_generated_dialogflow_v2_documents_list_documents_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Documents_ListDocuments_async", + "file": "dialogflow_v2_generated_documents_list_documents_async.py", + "regionTag": "dialogflow_v2_generated_Documents_ListDocuments_async", "segments": [ { "end": 45, @@ -2886,8 +4310,8 @@ "shortName": "ListDocuments" } }, - "file": "dialogflow_generated_dialogflow_v2_documents_list_documents_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Documents_ListDocuments_sync", + "file": "dialogflow_v2_generated_documents_list_documents_sync.py", + "regionTag": "dialogflow_v2_generated_Documents_ListDocuments_sync", "segments": [ { "end": 45, @@ -2931,8 +4355,8 @@ "shortName": "ReloadDocument" } }, - "file": "dialogflow_generated_dialogflow_v2_documents_reload_document_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Documents_ReloadDocument_async", + "file": "dialogflow_v2_generated_documents_reload_document_async.py", + "regionTag": "dialogflow_v2_generated_Documents_ReloadDocument_async", "segments": [ { "end": 49, @@ -2975,8 +4399,8 @@ "shortName": "ReloadDocument" } }, - "file": "dialogflow_generated_dialogflow_v2_documents_reload_document_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Documents_ReloadDocument_sync", + "file": "dialogflow_v2_generated_documents_reload_document_sync.py", + "regionTag": "dialogflow_v2_generated_Documents_ReloadDocument_sync", "segments": [ { "end": 49, @@ -3020,8 +4444,8 @@ "shortName": "UpdateDocument" } }, - "file": "dialogflow_generated_dialogflow_v2_documents_update_document_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Documents_UpdateDocument_async", + "file": "dialogflow_v2_generated_documents_update_document_async.py", + "regionTag": "dialogflow_v2_generated_Documents_UpdateDocument_async", "segments": [ { "end": 54, @@ -3064,8 +4488,8 @@ "shortName": "UpdateDocument" } }, - "file": "dialogflow_generated_dialogflow_v2_documents_update_document_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Documents_UpdateDocument_sync", + "file": "dialogflow_v2_generated_documents_update_document_sync.py", + "regionTag": "dialogflow_v2_generated_Documents_UpdateDocument_sync", "segments": [ { "end": 54, @@ -3109,8 +4533,8 @@ "shortName": "BatchCreateEntities" } }, - "file": "dialogflow_generated_dialogflow_v2_entity_types_batch_create_entities_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_EntityTypes_BatchCreateEntities_async", + "file": "dialogflow_v2_generated_entity_types_batch_create_entities_async.py", + "regionTag": "dialogflow_v2_generated_EntityTypes_BatchCreateEntities_async", "segments": [ { "end": 53, @@ -3153,8 +4577,8 @@ "shortName": "BatchCreateEntities" } }, - "file": "dialogflow_generated_dialogflow_v2_entity_types_batch_create_entities_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_EntityTypes_BatchCreateEntities_sync", + "file": "dialogflow_v2_generated_entity_types_batch_create_entities_sync.py", + "regionTag": "dialogflow_v2_generated_EntityTypes_BatchCreateEntities_sync", "segments": [ { "end": 53, @@ -3198,8 +4622,8 @@ "shortName": "BatchDeleteEntities" } }, - "file": "dialogflow_generated_dialogflow_v2_entity_types_batch_delete_entities_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_EntityTypes_BatchDeleteEntities_async", + "file": "dialogflow_v2_generated_entity_types_batch_delete_entities_async.py", + "regionTag": "dialogflow_v2_generated_EntityTypes_BatchDeleteEntities_async", "segments": [ { "end": 49, @@ -3242,8 +4666,8 @@ "shortName": "BatchDeleteEntities" } }, - "file": "dialogflow_generated_dialogflow_v2_entity_types_batch_delete_entities_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_EntityTypes_BatchDeleteEntities_sync", + "file": "dialogflow_v2_generated_entity_types_batch_delete_entities_sync.py", + "regionTag": "dialogflow_v2_generated_EntityTypes_BatchDeleteEntities_sync", "segments": [ { "end": 49, @@ -3287,8 +4711,8 @@ "shortName": "BatchDeleteEntityTypes" } }, - "file": "dialogflow_generated_dialogflow_v2_entity_types_batch_delete_entity_types_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_EntityTypes_BatchDeleteEntityTypes_async", + "file": "dialogflow_v2_generated_entity_types_batch_delete_entity_types_async.py", + "regionTag": "dialogflow_v2_generated_EntityTypes_BatchDeleteEntityTypes_async", "segments": [ { "end": 49, @@ -3331,8 +4755,8 @@ "shortName": "BatchDeleteEntityTypes" } }, - "file": "dialogflow_generated_dialogflow_v2_entity_types_batch_delete_entity_types_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_EntityTypes_BatchDeleteEntityTypes_sync", + "file": "dialogflow_v2_generated_entity_types_batch_delete_entity_types_sync.py", + "regionTag": "dialogflow_v2_generated_EntityTypes_BatchDeleteEntityTypes_sync", "segments": [ { "end": 49, @@ -3376,8 +4800,8 @@ "shortName": "BatchUpdateEntities" } }, - "file": "dialogflow_generated_dialogflow_v2_entity_types_batch_update_entities_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_EntityTypes_BatchUpdateEntities_async", + "file": "dialogflow_v2_generated_entity_types_batch_update_entities_async.py", + "regionTag": "dialogflow_v2_generated_EntityTypes_BatchUpdateEntities_async", "segments": [ { "end": 53, @@ -3420,8 +4844,8 @@ "shortName": "BatchUpdateEntities" } }, - "file": "dialogflow_generated_dialogflow_v2_entity_types_batch_update_entities_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_EntityTypes_BatchUpdateEntities_sync", + "file": "dialogflow_v2_generated_entity_types_batch_update_entities_sync.py", + "regionTag": "dialogflow_v2_generated_EntityTypes_BatchUpdateEntities_sync", "segments": [ { "end": 53, @@ -3465,8 +4889,8 @@ "shortName": "BatchUpdateEntityTypes" } }, - "file": "dialogflow_generated_dialogflow_v2_entity_types_batch_update_entity_types_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_EntityTypes_BatchUpdateEntityTypes_async", + "file": "dialogflow_v2_generated_entity_types_batch_update_entity_types_async.py", + "regionTag": "dialogflow_v2_generated_EntityTypes_BatchUpdateEntityTypes_async", "segments": [ { "end": 49, @@ -3509,8 +4933,8 @@ "shortName": "BatchUpdateEntityTypes" } }, - "file": "dialogflow_generated_dialogflow_v2_entity_types_batch_update_entity_types_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_EntityTypes_BatchUpdateEntityTypes_sync", + "file": "dialogflow_v2_generated_entity_types_batch_update_entity_types_sync.py", + "regionTag": "dialogflow_v2_generated_EntityTypes_BatchUpdateEntityTypes_sync", "segments": [ { "end": 49, @@ -3554,8 +4978,8 @@ "shortName": "CreateEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2_entity_types_create_entity_type_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_EntityTypes_CreateEntityType_async", + "file": "dialogflow_v2_generated_entity_types_create_entity_type_async.py", + "regionTag": "dialogflow_v2_generated_EntityTypes_CreateEntityType_async", "segments": [ { "end": 49, @@ -3598,8 +5022,8 @@ "shortName": "CreateEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2_entity_types_create_entity_type_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_EntityTypes_CreateEntityType_sync", + "file": "dialogflow_v2_generated_entity_types_create_entity_type_sync.py", + "regionTag": "dialogflow_v2_generated_EntityTypes_CreateEntityType_sync", "segments": [ { "end": 49, @@ -3643,8 +5067,8 @@ "shortName": "DeleteEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2_entity_types_delete_entity_type_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_EntityTypes_DeleteEntityType_async", + "file": "dialogflow_v2_generated_entity_types_delete_entity_type_async.py", + "regionTag": "dialogflow_v2_generated_EntityTypes_DeleteEntityType_async", "segments": [ { "end": 42, @@ -3685,8 +5109,8 @@ "shortName": "DeleteEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2_entity_types_delete_entity_type_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_EntityTypes_DeleteEntityType_sync", + "file": "dialogflow_v2_generated_entity_types_delete_entity_type_sync.py", + "regionTag": "dialogflow_v2_generated_EntityTypes_DeleteEntityType_sync", "segments": [ { "end": 42, @@ -3728,8 +5152,8 @@ "shortName": "GetEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2_entity_types_get_entity_type_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_EntityTypes_GetEntityType_async", + "file": "dialogflow_v2_generated_entity_types_get_entity_type_async.py", + "regionTag": "dialogflow_v2_generated_EntityTypes_GetEntityType_async", "segments": [ { "end": 44, @@ -3772,8 +5196,8 @@ "shortName": "GetEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2_entity_types_get_entity_type_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_EntityTypes_GetEntityType_sync", + "file": "dialogflow_v2_generated_entity_types_get_entity_type_sync.py", + "regionTag": "dialogflow_v2_generated_EntityTypes_GetEntityType_sync", "segments": [ { "end": 44, @@ -3817,8 +5241,8 @@ "shortName": "ListEntityTypes" } }, - "file": "dialogflow_generated_dialogflow_v2_entity_types_list_entity_types_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_EntityTypes_ListEntityTypes_async", + "file": "dialogflow_v2_generated_entity_types_list_entity_types_async.py", + "regionTag": "dialogflow_v2_generated_EntityTypes_ListEntityTypes_async", "segments": [ { "end": 45, @@ -3861,8 +5285,8 @@ "shortName": "ListEntityTypes" } }, - "file": "dialogflow_generated_dialogflow_v2_entity_types_list_entity_types_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_EntityTypes_ListEntityTypes_sync", + "file": "dialogflow_v2_generated_entity_types_list_entity_types_sync.py", + "regionTag": "dialogflow_v2_generated_EntityTypes_ListEntityTypes_sync", "segments": [ { "end": 45, @@ -3906,8 +5330,8 @@ "shortName": "UpdateEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2_entity_types_update_entity_type_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_EntityTypes_UpdateEntityType_async", + "file": "dialogflow_v2_generated_entity_types_update_entity_type_async.py", + "regionTag": "dialogflow_v2_generated_EntityTypes_UpdateEntityType_async", "segments": [ { "end": 48, @@ -3950,8 +5374,8 @@ "shortName": "UpdateEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2_entity_types_update_entity_type_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_EntityTypes_UpdateEntityType_sync", + "file": "dialogflow_v2_generated_entity_types_update_entity_type_sync.py", + "regionTag": "dialogflow_v2_generated_EntityTypes_UpdateEntityType_sync", "segments": [ { "end": 48, @@ -3995,8 +5419,8 @@ "shortName": "CreateEnvironment" } }, - "file": "dialogflow_generated_dialogflow_v2_environments_create_environment_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Environments_CreateEnvironment_async", + "file": "dialogflow_v2_generated_environments_create_environment_async.py", + "regionTag": "dialogflow_v2_generated_Environments_CreateEnvironment_async", "segments": [ { "end": 45, @@ -4039,8 +5463,8 @@ "shortName": "CreateEnvironment" } }, - "file": "dialogflow_generated_dialogflow_v2_environments_create_environment_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Environments_CreateEnvironment_sync", + "file": "dialogflow_v2_generated_environments_create_environment_sync.py", + "regionTag": "dialogflow_v2_generated_Environments_CreateEnvironment_sync", "segments": [ { "end": 45, @@ -4084,8 +5508,8 @@ "shortName": "DeleteEnvironment" } }, - "file": "dialogflow_generated_dialogflow_v2_environments_delete_environment_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Environments_DeleteEnvironment_async", + "file": "dialogflow_v2_generated_environments_delete_environment_async.py", + "regionTag": "dialogflow_v2_generated_Environments_DeleteEnvironment_async", "segments": [ { "end": 42, @@ -4126,8 +5550,8 @@ "shortName": "DeleteEnvironment" } }, - "file": "dialogflow_generated_dialogflow_v2_environments_delete_environment_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Environments_DeleteEnvironment_sync", + "file": "dialogflow_v2_generated_environments_delete_environment_sync.py", + "regionTag": "dialogflow_v2_generated_Environments_DeleteEnvironment_sync", "segments": [ { "end": 42, @@ -4169,8 +5593,8 @@ "shortName": "GetEnvironmentHistory" } }, - "file": "dialogflow_generated_dialogflow_v2_environments_get_environment_history_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Environments_GetEnvironmentHistory_async", + "file": "dialogflow_v2_generated_environments_get_environment_history_async.py", + "regionTag": "dialogflow_v2_generated_Environments_GetEnvironmentHistory_async", "segments": [ { "end": 45, @@ -4213,8 +5637,8 @@ "shortName": "GetEnvironmentHistory" } }, - "file": "dialogflow_generated_dialogflow_v2_environments_get_environment_history_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Environments_GetEnvironmentHistory_sync", + "file": "dialogflow_v2_generated_environments_get_environment_history_sync.py", + "regionTag": "dialogflow_v2_generated_Environments_GetEnvironmentHistory_sync", "segments": [ { "end": 45, @@ -4258,8 +5682,8 @@ "shortName": "GetEnvironment" } }, - "file": "dialogflow_generated_dialogflow_v2_environments_get_environment_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Environments_GetEnvironment_async", + "file": "dialogflow_v2_generated_environments_get_environment_async.py", + "regionTag": "dialogflow_v2_generated_Environments_GetEnvironment_async", "segments": [ { "end": 44, @@ -4302,8 +5726,8 @@ "shortName": "GetEnvironment" } }, - "file": "dialogflow_generated_dialogflow_v2_environments_get_environment_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Environments_GetEnvironment_sync", + "file": "dialogflow_v2_generated_environments_get_environment_sync.py", + "regionTag": "dialogflow_v2_generated_Environments_GetEnvironment_sync", "segments": [ { "end": 44, @@ -4347,8 +5771,8 @@ "shortName": "ListEnvironments" } }, - "file": "dialogflow_generated_dialogflow_v2_environments_list_environments_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Environments_ListEnvironments_async", + "file": "dialogflow_v2_generated_environments_list_environments_async.py", + "regionTag": "dialogflow_v2_generated_Environments_ListEnvironments_async", "segments": [ { "end": 45, @@ -4391,8 +5815,8 @@ "shortName": "ListEnvironments" } }, - "file": "dialogflow_generated_dialogflow_v2_environments_list_environments_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Environments_ListEnvironments_sync", + "file": "dialogflow_v2_generated_environments_list_environments_sync.py", + "regionTag": "dialogflow_v2_generated_Environments_ListEnvironments_sync", "segments": [ { "end": 45, @@ -4436,8 +5860,8 @@ "shortName": "UpdateEnvironment" } }, - "file": "dialogflow_generated_dialogflow_v2_environments_update_environment_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Environments_UpdateEnvironment_async", + "file": "dialogflow_v2_generated_environments_update_environment_async.py", + "regionTag": "dialogflow_v2_generated_Environments_UpdateEnvironment_async", "segments": [ { "end": 43, @@ -4480,8 +5904,8 @@ "shortName": "UpdateEnvironment" } }, - "file": "dialogflow_generated_dialogflow_v2_environments_update_environment_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Environments_UpdateEnvironment_sync", + "file": "dialogflow_v2_generated_environments_update_environment_sync.py", + "regionTag": "dialogflow_v2_generated_Environments_UpdateEnvironment_sync", "segments": [ { "end": 43, @@ -4525,8 +5949,8 @@ "shortName": "GetFulfillment" } }, - "file": "dialogflow_generated_dialogflow_v2_fulfillments_get_fulfillment_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Fulfillments_GetFulfillment_async", + "file": "dialogflow_v2_generated_fulfillments_get_fulfillment_async.py", + "regionTag": "dialogflow_v2_generated_Fulfillments_GetFulfillment_async", "segments": [ { "end": 44, @@ -4569,8 +5993,8 @@ "shortName": "GetFulfillment" } }, - "file": "dialogflow_generated_dialogflow_v2_fulfillments_get_fulfillment_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Fulfillments_GetFulfillment_sync", + "file": "dialogflow_v2_generated_fulfillments_get_fulfillment_sync.py", + "regionTag": "dialogflow_v2_generated_Fulfillments_GetFulfillment_sync", "segments": [ { "end": 44, @@ -4614,8 +6038,8 @@ "shortName": "UpdateFulfillment" } }, - "file": "dialogflow_generated_dialogflow_v2_fulfillments_update_fulfillment_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Fulfillments_UpdateFulfillment_async", + "file": "dialogflow_v2_generated_fulfillments_update_fulfillment_async.py", + "regionTag": "dialogflow_v2_generated_Fulfillments_UpdateFulfillment_async", "segments": [ { "end": 48, @@ -4658,8 +6082,8 @@ "shortName": "UpdateFulfillment" } }, - "file": "dialogflow_generated_dialogflow_v2_fulfillments_update_fulfillment_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Fulfillments_UpdateFulfillment_sync", + "file": "dialogflow_v2_generated_fulfillments_update_fulfillment_sync.py", + "regionTag": "dialogflow_v2_generated_Fulfillments_UpdateFulfillment_sync", "segments": [ { "end": 48, @@ -4703,8 +6127,8 @@ "shortName": "BatchDeleteIntents" } }, - "file": "dialogflow_generated_dialogflow_v2_intents_batch_delete_intents_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Intents_BatchDeleteIntents_async", + "file": "dialogflow_v2_generated_intents_batch_delete_intents_async.py", + "regionTag": "dialogflow_v2_generated_Intents_BatchDeleteIntents_async", "segments": [ { "end": 52, @@ -4747,8 +6171,8 @@ "shortName": "BatchDeleteIntents" } }, - "file": "dialogflow_generated_dialogflow_v2_intents_batch_delete_intents_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Intents_BatchDeleteIntents_sync", + "file": "dialogflow_v2_generated_intents_batch_delete_intents_sync.py", + "regionTag": "dialogflow_v2_generated_Intents_BatchDeleteIntents_sync", "segments": [ { "end": 52, @@ -4792,8 +6216,8 @@ "shortName": "BatchUpdateIntents" } }, - "file": "dialogflow_generated_dialogflow_v2_intents_batch_update_intents_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Intents_BatchUpdateIntents_async", + "file": "dialogflow_v2_generated_intents_batch_update_intents_async.py", + "regionTag": "dialogflow_v2_generated_Intents_BatchUpdateIntents_async", "segments": [ { "end": 49, @@ -4836,8 +6260,8 @@ "shortName": "BatchUpdateIntents" } }, - "file": "dialogflow_generated_dialogflow_v2_intents_batch_update_intents_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Intents_BatchUpdateIntents_sync", + "file": "dialogflow_v2_generated_intents_batch_update_intents_sync.py", + "regionTag": "dialogflow_v2_generated_Intents_BatchUpdateIntents_sync", "segments": [ { "end": 49, @@ -4881,8 +6305,8 @@ "shortName": "CreateIntent" } }, - "file": "dialogflow_generated_dialogflow_v2_intents_create_intent_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Intents_CreateIntent_async", + "file": "dialogflow_v2_generated_intents_create_intent_async.py", + "regionTag": "dialogflow_v2_generated_Intents_CreateIntent_async", "segments": [ { "end": 48, @@ -4925,8 +6349,8 @@ "shortName": "CreateIntent" } }, - "file": "dialogflow_generated_dialogflow_v2_intents_create_intent_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Intents_CreateIntent_sync", + "file": "dialogflow_v2_generated_intents_create_intent_sync.py", + "regionTag": "dialogflow_v2_generated_Intents_CreateIntent_sync", "segments": [ { "end": 48, @@ -4970,8 +6394,8 @@ "shortName": "DeleteIntent" } }, - "file": "dialogflow_generated_dialogflow_v2_intents_delete_intent_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Intents_DeleteIntent_async", + "file": "dialogflow_v2_generated_intents_delete_intent_async.py", + "regionTag": "dialogflow_v2_generated_Intents_DeleteIntent_async", "segments": [ { "end": 42, @@ -5012,8 +6436,8 @@ "shortName": "DeleteIntent" } }, - "file": "dialogflow_generated_dialogflow_v2_intents_delete_intent_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Intents_DeleteIntent_sync", + "file": "dialogflow_v2_generated_intents_delete_intent_sync.py", + "regionTag": "dialogflow_v2_generated_Intents_DeleteIntent_sync", "segments": [ { "end": 42, @@ -5055,8 +6479,8 @@ "shortName": "GetIntent" } }, - "file": "dialogflow_generated_dialogflow_v2_intents_get_intent_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Intents_GetIntent_async", + "file": "dialogflow_v2_generated_intents_get_intent_async.py", + "regionTag": "dialogflow_v2_generated_Intents_GetIntent_async", "segments": [ { "end": 44, @@ -5099,8 +6523,8 @@ "shortName": "GetIntent" } }, - "file": "dialogflow_generated_dialogflow_v2_intents_get_intent_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Intents_GetIntent_sync", + "file": "dialogflow_v2_generated_intents_get_intent_sync.py", + "regionTag": "dialogflow_v2_generated_Intents_GetIntent_sync", "segments": [ { "end": 44, @@ -5144,8 +6568,8 @@ "shortName": "ListIntents" } }, - "file": "dialogflow_generated_dialogflow_v2_intents_list_intents_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Intents_ListIntents_async", + "file": "dialogflow_v2_generated_intents_list_intents_async.py", + "regionTag": "dialogflow_v2_generated_Intents_ListIntents_async", "segments": [ { "end": 45, @@ -5188,8 +6612,8 @@ "shortName": "ListIntents" } }, - "file": "dialogflow_generated_dialogflow_v2_intents_list_intents_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Intents_ListIntents_sync", + "file": "dialogflow_v2_generated_intents_list_intents_sync.py", + "regionTag": "dialogflow_v2_generated_Intents_ListIntents_sync", "segments": [ { "end": 45, @@ -5233,8 +6657,8 @@ "shortName": "UpdateIntent" } }, - "file": "dialogflow_generated_dialogflow_v2_intents_update_intent_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Intents_UpdateIntent_async", + "file": "dialogflow_v2_generated_intents_update_intent_async.py", + "regionTag": "dialogflow_v2_generated_Intents_UpdateIntent_async", "segments": [ { "end": 47, @@ -5277,8 +6701,8 @@ "shortName": "UpdateIntent" } }, - "file": "dialogflow_generated_dialogflow_v2_intents_update_intent_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Intents_UpdateIntent_sync", + "file": "dialogflow_v2_generated_intents_update_intent_sync.py", + "regionTag": "dialogflow_v2_generated_Intents_UpdateIntent_sync", "segments": [ { "end": 47, @@ -5322,8 +6746,8 @@ "shortName": "CreateKnowledgeBase" } }, - "file": "dialogflow_generated_dialogflow_v2_knowledge_bases_create_knowledge_base_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_KnowledgeBases_CreateKnowledgeBase_async", + "file": "dialogflow_v2_generated_knowledge_bases_create_knowledge_base_async.py", + "regionTag": "dialogflow_v2_generated_KnowledgeBases_CreateKnowledgeBase_async", "segments": [ { "end": 48, @@ -5366,8 +6790,8 @@ "shortName": "CreateKnowledgeBase" } }, - "file": "dialogflow_generated_dialogflow_v2_knowledge_bases_create_knowledge_base_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_KnowledgeBases_CreateKnowledgeBase_sync", + "file": "dialogflow_v2_generated_knowledge_bases_create_knowledge_base_sync.py", + "regionTag": "dialogflow_v2_generated_KnowledgeBases_CreateKnowledgeBase_sync", "segments": [ { "end": 48, @@ -5411,8 +6835,8 @@ "shortName": "DeleteKnowledgeBase" } }, - "file": "dialogflow_generated_dialogflow_v2_knowledge_bases_delete_knowledge_base_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_KnowledgeBases_DeleteKnowledgeBase_async", + "file": "dialogflow_v2_generated_knowledge_bases_delete_knowledge_base_async.py", + "regionTag": "dialogflow_v2_generated_KnowledgeBases_DeleteKnowledgeBase_async", "segments": [ { "end": 42, @@ -5453,8 +6877,8 @@ "shortName": "DeleteKnowledgeBase" } }, - "file": "dialogflow_generated_dialogflow_v2_knowledge_bases_delete_knowledge_base_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_KnowledgeBases_DeleteKnowledgeBase_sync", + "file": "dialogflow_v2_generated_knowledge_bases_delete_knowledge_base_sync.py", + "regionTag": "dialogflow_v2_generated_KnowledgeBases_DeleteKnowledgeBase_sync", "segments": [ { "end": 42, @@ -5496,8 +6920,8 @@ "shortName": "GetKnowledgeBase" } }, - "file": "dialogflow_generated_dialogflow_v2_knowledge_bases_get_knowledge_base_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_KnowledgeBases_GetKnowledgeBase_async", + "file": "dialogflow_v2_generated_knowledge_bases_get_knowledge_base_async.py", + "regionTag": "dialogflow_v2_generated_KnowledgeBases_GetKnowledgeBase_async", "segments": [ { "end": 44, @@ -5540,8 +6964,8 @@ "shortName": "GetKnowledgeBase" } }, - "file": "dialogflow_generated_dialogflow_v2_knowledge_bases_get_knowledge_base_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_KnowledgeBases_GetKnowledgeBase_sync", + "file": "dialogflow_v2_generated_knowledge_bases_get_knowledge_base_sync.py", + "regionTag": "dialogflow_v2_generated_KnowledgeBases_GetKnowledgeBase_sync", "segments": [ { "end": 44, @@ -5585,8 +7009,8 @@ "shortName": "ListKnowledgeBases" } }, - "file": "dialogflow_generated_dialogflow_v2_knowledge_bases_list_knowledge_bases_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_KnowledgeBases_ListKnowledgeBases_async", + "file": "dialogflow_v2_generated_knowledge_bases_list_knowledge_bases_async.py", + "regionTag": "dialogflow_v2_generated_KnowledgeBases_ListKnowledgeBases_async", "segments": [ { "end": 45, @@ -5629,8 +7053,8 @@ "shortName": "ListKnowledgeBases" } }, - "file": "dialogflow_generated_dialogflow_v2_knowledge_bases_list_knowledge_bases_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_KnowledgeBases_ListKnowledgeBases_sync", + "file": "dialogflow_v2_generated_knowledge_bases_list_knowledge_bases_sync.py", + "regionTag": "dialogflow_v2_generated_KnowledgeBases_ListKnowledgeBases_sync", "segments": [ { "end": 45, @@ -5674,8 +7098,8 @@ "shortName": "UpdateKnowledgeBase" } }, - "file": "dialogflow_generated_dialogflow_v2_knowledge_bases_update_knowledge_base_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_KnowledgeBases_UpdateKnowledgeBase_async", + "file": "dialogflow_v2_generated_knowledge_bases_update_knowledge_base_async.py", + "regionTag": "dialogflow_v2_generated_KnowledgeBases_UpdateKnowledgeBase_async", "segments": [ { "end": 47, @@ -5718,8 +7142,8 @@ "shortName": "UpdateKnowledgeBase" } }, - "file": "dialogflow_generated_dialogflow_v2_knowledge_bases_update_knowledge_base_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_KnowledgeBases_UpdateKnowledgeBase_sync", + "file": "dialogflow_v2_generated_knowledge_bases_update_knowledge_base_sync.py", + "regionTag": "dialogflow_v2_generated_KnowledgeBases_UpdateKnowledgeBase_sync", "segments": [ { "end": 47, @@ -5763,8 +7187,8 @@ "shortName": "AnalyzeContent" } }, - "file": "dialogflow_generated_dialogflow_v2_participants_analyze_content_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Participants_AnalyzeContent_async", + "file": "dialogflow_v2_generated_participants_analyze_content_async.py", + "regionTag": "dialogflow_v2_generated_Participants_AnalyzeContent_async", "segments": [ { "end": 49, @@ -5807,8 +7231,8 @@ "shortName": "AnalyzeContent" } }, - "file": "dialogflow_generated_dialogflow_v2_participants_analyze_content_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Participants_AnalyzeContent_sync", + "file": "dialogflow_v2_generated_participants_analyze_content_sync.py", + "regionTag": "dialogflow_v2_generated_Participants_AnalyzeContent_sync", "segments": [ { "end": 49, @@ -5852,8 +7276,8 @@ "shortName": "CreateParticipant" } }, - "file": "dialogflow_generated_dialogflow_v2_participants_create_participant_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Participants_CreateParticipant_async", + "file": "dialogflow_v2_generated_participants_create_participant_async.py", + "regionTag": "dialogflow_v2_generated_Participants_CreateParticipant_async", "segments": [ { "end": 44, @@ -5896,8 +7320,8 @@ "shortName": "CreateParticipant" } }, - "file": "dialogflow_generated_dialogflow_v2_participants_create_participant_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Participants_CreateParticipant_sync", + "file": "dialogflow_v2_generated_participants_create_participant_sync.py", + "regionTag": "dialogflow_v2_generated_Participants_CreateParticipant_sync", "segments": [ { "end": 44, @@ -5941,8 +7365,8 @@ "shortName": "GetParticipant" } }, - "file": "dialogflow_generated_dialogflow_v2_participants_get_participant_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Participants_GetParticipant_async", + "file": "dialogflow_v2_generated_participants_get_participant_async.py", + "regionTag": "dialogflow_v2_generated_Participants_GetParticipant_async", "segments": [ { "end": 44, @@ -5985,8 +7409,8 @@ "shortName": "GetParticipant" } }, - "file": "dialogflow_generated_dialogflow_v2_participants_get_participant_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Participants_GetParticipant_sync", + "file": "dialogflow_v2_generated_participants_get_participant_sync.py", + "regionTag": "dialogflow_v2_generated_Participants_GetParticipant_sync", "segments": [ { "end": 44, @@ -6030,8 +7454,8 @@ "shortName": "ListParticipants" } }, - "file": "dialogflow_generated_dialogflow_v2_participants_list_participants_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Participants_ListParticipants_async", + "file": "dialogflow_v2_generated_participants_list_participants_async.py", + "regionTag": "dialogflow_v2_generated_Participants_ListParticipants_async", "segments": [ { "end": 45, @@ -6074,8 +7498,8 @@ "shortName": "ListParticipants" } }, - "file": "dialogflow_generated_dialogflow_v2_participants_list_participants_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Participants_ListParticipants_sync", + "file": "dialogflow_v2_generated_participants_list_participants_sync.py", + "regionTag": "dialogflow_v2_generated_Participants_ListParticipants_sync", "segments": [ { "end": 45, @@ -6119,8 +7543,8 @@ "shortName": "SuggestArticles" } }, - "file": "dialogflow_generated_dialogflow_v2_participants_suggest_articles_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Participants_SuggestArticles_async", + "file": "dialogflow_v2_generated_participants_suggest_articles_async.py", + "regionTag": "dialogflow_v2_generated_Participants_SuggestArticles_async", "segments": [ { "end": 44, @@ -6163,8 +7587,8 @@ "shortName": "SuggestArticles" } }, - "file": "dialogflow_generated_dialogflow_v2_participants_suggest_articles_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Participants_SuggestArticles_sync", + "file": "dialogflow_v2_generated_participants_suggest_articles_sync.py", + "regionTag": "dialogflow_v2_generated_Participants_SuggestArticles_sync", "segments": [ { "end": 44, @@ -6208,8 +7632,8 @@ "shortName": "SuggestFaqAnswers" } }, - "file": "dialogflow_generated_dialogflow_v2_participants_suggest_faq_answers_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Participants_SuggestFaqAnswers_async", + "file": "dialogflow_v2_generated_participants_suggest_faq_answers_async.py", + "regionTag": "dialogflow_v2_generated_Participants_SuggestFaqAnswers_async", "segments": [ { "end": 44, @@ -6252,8 +7676,8 @@ "shortName": "SuggestFaqAnswers" } }, - "file": "dialogflow_generated_dialogflow_v2_participants_suggest_faq_answers_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Participants_SuggestFaqAnswers_sync", + "file": "dialogflow_v2_generated_participants_suggest_faq_answers_sync.py", + "regionTag": "dialogflow_v2_generated_Participants_SuggestFaqAnswers_sync", "segments": [ { "end": 44, @@ -6297,8 +7721,8 @@ "shortName": "SuggestSmartReplies" } }, - "file": "dialogflow_generated_dialogflow_v2_participants_suggest_smart_replies_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Participants_SuggestSmartReplies_async", + "file": "dialogflow_v2_generated_participants_suggest_smart_replies_async.py", + "regionTag": "dialogflow_v2_generated_Participants_SuggestSmartReplies_async", "segments": [ { "end": 44, @@ -6341,8 +7765,8 @@ "shortName": "SuggestSmartReplies" } }, - "file": "dialogflow_generated_dialogflow_v2_participants_suggest_smart_replies_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Participants_SuggestSmartReplies_sync", + "file": "dialogflow_v2_generated_participants_suggest_smart_replies_sync.py", + "regionTag": "dialogflow_v2_generated_Participants_SuggestSmartReplies_sync", "segments": [ { "end": 44, @@ -6386,8 +7810,8 @@ "shortName": "UpdateParticipant" } }, - "file": "dialogflow_generated_dialogflow_v2_participants_update_participant_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Participants_UpdateParticipant_async", + "file": "dialogflow_v2_generated_participants_update_participant_async.py", + "regionTag": "dialogflow_v2_generated_Participants_UpdateParticipant_async", "segments": [ { "end": 43, @@ -6430,8 +7854,8 @@ "shortName": "UpdateParticipant" } }, - "file": "dialogflow_generated_dialogflow_v2_participants_update_participant_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Participants_UpdateParticipant_sync", + "file": "dialogflow_v2_generated_participants_update_participant_sync.py", + "regionTag": "dialogflow_v2_generated_Participants_UpdateParticipant_sync", "segments": [ { "end": 43, @@ -6475,8 +7899,8 @@ "shortName": "CreateSessionEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2_session_entity_types_create_session_entity_type_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_SessionEntityTypes_CreateSessionEntityType_async", + "file": "dialogflow_v2_generated_session_entity_types_create_session_entity_type_async.py", + "regionTag": "dialogflow_v2_generated_SessionEntityTypes_CreateSessionEntityType_async", "segments": [ { "end": 51, @@ -6519,8 +7943,8 @@ "shortName": "CreateSessionEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2_session_entity_types_create_session_entity_type_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_SessionEntityTypes_CreateSessionEntityType_sync", + "file": "dialogflow_v2_generated_session_entity_types_create_session_entity_type_sync.py", + "regionTag": "dialogflow_v2_generated_SessionEntityTypes_CreateSessionEntityType_sync", "segments": [ { "end": 51, @@ -6564,8 +7988,8 @@ "shortName": "DeleteSessionEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2_session_entity_types_delete_session_entity_type_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_SessionEntityTypes_DeleteSessionEntityType_async", + "file": "dialogflow_v2_generated_session_entity_types_delete_session_entity_type_async.py", + "regionTag": "dialogflow_v2_generated_SessionEntityTypes_DeleteSessionEntityType_async", "segments": [ { "end": 42, @@ -6606,8 +8030,8 @@ "shortName": "DeleteSessionEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2_session_entity_types_delete_session_entity_type_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_SessionEntityTypes_DeleteSessionEntityType_sync", + "file": "dialogflow_v2_generated_session_entity_types_delete_session_entity_type_sync.py", + "regionTag": "dialogflow_v2_generated_SessionEntityTypes_DeleteSessionEntityType_sync", "segments": [ { "end": 42, @@ -6649,8 +8073,8 @@ "shortName": "GetSessionEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2_session_entity_types_get_session_entity_type_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_SessionEntityTypes_GetSessionEntityType_async", + "file": "dialogflow_v2_generated_session_entity_types_get_session_entity_type_async.py", + "regionTag": "dialogflow_v2_generated_SessionEntityTypes_GetSessionEntityType_async", "segments": [ { "end": 44, @@ -6693,8 +8117,8 @@ "shortName": "GetSessionEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2_session_entity_types_get_session_entity_type_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_SessionEntityTypes_GetSessionEntityType_sync", + "file": "dialogflow_v2_generated_session_entity_types_get_session_entity_type_sync.py", + "regionTag": "dialogflow_v2_generated_SessionEntityTypes_GetSessionEntityType_sync", "segments": [ { "end": 44, @@ -6738,8 +8162,8 @@ "shortName": "ListSessionEntityTypes" } }, - "file": "dialogflow_generated_dialogflow_v2_session_entity_types_list_session_entity_types_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_SessionEntityTypes_ListSessionEntityTypes_async", + "file": "dialogflow_v2_generated_session_entity_types_list_session_entity_types_async.py", + "regionTag": "dialogflow_v2_generated_SessionEntityTypes_ListSessionEntityTypes_async", "segments": [ { "end": 45, @@ -6782,8 +8206,8 @@ "shortName": "ListSessionEntityTypes" } }, - "file": "dialogflow_generated_dialogflow_v2_session_entity_types_list_session_entity_types_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_SessionEntityTypes_ListSessionEntityTypes_sync", + "file": "dialogflow_v2_generated_session_entity_types_list_session_entity_types_sync.py", + "regionTag": "dialogflow_v2_generated_SessionEntityTypes_ListSessionEntityTypes_sync", "segments": [ { "end": 45, @@ -6827,8 +8251,8 @@ "shortName": "UpdateSessionEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2_session_entity_types_update_session_entity_type_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_SessionEntityTypes_UpdateSessionEntityType_async", + "file": "dialogflow_v2_generated_session_entity_types_update_session_entity_type_async.py", + "regionTag": "dialogflow_v2_generated_SessionEntityTypes_UpdateSessionEntityType_async", "segments": [ { "end": 50, @@ -6871,8 +8295,8 @@ "shortName": "UpdateSessionEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2_session_entity_types_update_session_entity_type_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_SessionEntityTypes_UpdateSessionEntityType_sync", + "file": "dialogflow_v2_generated_session_entity_types_update_session_entity_type_sync.py", + "regionTag": "dialogflow_v2_generated_SessionEntityTypes_UpdateSessionEntityType_sync", "segments": [ { "end": 50, @@ -6916,8 +8340,8 @@ "shortName": "DetectIntent" } }, - "file": "dialogflow_generated_dialogflow_v2_sessions_detect_intent_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Sessions_DetectIntent_async", + "file": "dialogflow_v2_generated_sessions_detect_intent_async.py", + "regionTag": "dialogflow_v2_generated_Sessions_DetectIntent_async", "segments": [ { "end": 44, @@ -6960,8 +8384,8 @@ "shortName": "DetectIntent" } }, - "file": "dialogflow_generated_dialogflow_v2_sessions_detect_intent_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Sessions_DetectIntent_sync", + "file": "dialogflow_v2_generated_sessions_detect_intent_sync.py", + "regionTag": "dialogflow_v2_generated_Sessions_DetectIntent_sync", "segments": [ { "end": 44, @@ -7005,8 +8429,8 @@ "shortName": "StreamingDetectIntent" } }, - "file": "dialogflow_generated_dialogflow_v2_sessions_streaming_detect_intent_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Sessions_StreamingDetectIntent_async", + "file": "dialogflow_v2_generated_sessions_streaming_detect_intent_async.py", + "regionTag": "dialogflow_v2_generated_Sessions_StreamingDetectIntent_async", "segments": [ { "end": 55, @@ -7049,8 +8473,8 @@ "shortName": "StreamingDetectIntent" } }, - "file": "dialogflow_generated_dialogflow_v2_sessions_streaming_detect_intent_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Sessions_StreamingDetectIntent_sync", + "file": "dialogflow_v2_generated_sessions_streaming_detect_intent_sync.py", + "regionTag": "dialogflow_v2_generated_Sessions_StreamingDetectIntent_sync", "segments": [ { "end": 55, @@ -7094,8 +8518,8 @@ "shortName": "CreateVersion" } }, - "file": "dialogflow_generated_dialogflow_v2_versions_create_version_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Versions_CreateVersion_async", + "file": "dialogflow_v2_generated_versions_create_version_async.py", + "regionTag": "dialogflow_v2_generated_Versions_CreateVersion_async", "segments": [ { "end": 44, @@ -7138,8 +8562,8 @@ "shortName": "CreateVersion" } }, - "file": "dialogflow_generated_dialogflow_v2_versions_create_version_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Versions_CreateVersion_sync", + "file": "dialogflow_v2_generated_versions_create_version_sync.py", + "regionTag": "dialogflow_v2_generated_Versions_CreateVersion_sync", "segments": [ { "end": 44, @@ -7183,8 +8607,8 @@ "shortName": "DeleteVersion" } }, - "file": "dialogflow_generated_dialogflow_v2_versions_delete_version_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Versions_DeleteVersion_async", + "file": "dialogflow_v2_generated_versions_delete_version_async.py", + "regionTag": "dialogflow_v2_generated_Versions_DeleteVersion_async", "segments": [ { "end": 42, @@ -7225,8 +8649,8 @@ "shortName": "DeleteVersion" } }, - "file": "dialogflow_generated_dialogflow_v2_versions_delete_version_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Versions_DeleteVersion_sync", + "file": "dialogflow_v2_generated_versions_delete_version_sync.py", + "regionTag": "dialogflow_v2_generated_Versions_DeleteVersion_sync", "segments": [ { "end": 42, @@ -7268,8 +8692,8 @@ "shortName": "GetVersion" } }, - "file": "dialogflow_generated_dialogflow_v2_versions_get_version_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Versions_GetVersion_async", + "file": "dialogflow_v2_generated_versions_get_version_async.py", + "regionTag": "dialogflow_v2_generated_Versions_GetVersion_async", "segments": [ { "end": 44, @@ -7312,8 +8736,8 @@ "shortName": "GetVersion" } }, - "file": "dialogflow_generated_dialogflow_v2_versions_get_version_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Versions_GetVersion_sync", + "file": "dialogflow_v2_generated_versions_get_version_sync.py", + "regionTag": "dialogflow_v2_generated_Versions_GetVersion_sync", "segments": [ { "end": 44, @@ -7357,8 +8781,8 @@ "shortName": "ListVersions" } }, - "file": "dialogflow_generated_dialogflow_v2_versions_list_versions_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Versions_ListVersions_async", + "file": "dialogflow_v2_generated_versions_list_versions_async.py", + "regionTag": "dialogflow_v2_generated_Versions_ListVersions_async", "segments": [ { "end": 45, @@ -7401,8 +8825,8 @@ "shortName": "ListVersions" } }, - "file": "dialogflow_generated_dialogflow_v2_versions_list_versions_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Versions_ListVersions_sync", + "file": "dialogflow_v2_generated_versions_list_versions_sync.py", + "regionTag": "dialogflow_v2_generated_Versions_ListVersions_sync", "segments": [ { "end": 45, @@ -7446,8 +8870,8 @@ "shortName": "UpdateVersion" } }, - "file": "dialogflow_generated_dialogflow_v2_versions_update_version_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Versions_UpdateVersion_async", + "file": "dialogflow_v2_generated_versions_update_version_async.py", + "regionTag": "dialogflow_v2_generated_Versions_UpdateVersion_async", "segments": [ { "end": 43, @@ -7490,8 +8914,8 @@ "shortName": "UpdateVersion" } }, - "file": "dialogflow_generated_dialogflow_v2_versions_update_version_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2_Versions_UpdateVersion_sync", + "file": "dialogflow_v2_generated_versions_update_version_sync.py", + "regionTag": "dialogflow_v2_generated_Versions_UpdateVersion_sync", "segments": [ { "end": 43, diff --git a/samples/generated_samples/snippet_metadata_dialogflow_v2beta1.json b/samples/generated_samples/snippet_metadata_dialogflow_v2beta1.json index eec0e1264..15868b215 100644 --- a/samples/generated_samples/snippet_metadata_dialogflow_v2beta1.json +++ b/samples/generated_samples/snippet_metadata_dialogflow_v2beta1.json @@ -10,8 +10,8 @@ "shortName": "DeleteAgent" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_agents_delete_agent_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Agents_DeleteAgent_async", + "file": "dialogflow_v2beta1_generated_agents_delete_agent_async.py", + "regionTag": "dialogflow_v2beta1_generated_Agents_DeleteAgent_async", "segments": [ { "end": 42, @@ -52,8 +52,8 @@ "shortName": "DeleteAgent" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_agents_delete_agent_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Agents_DeleteAgent_sync", + "file": "dialogflow_v2beta1_generated_agents_delete_agent_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Agents_DeleteAgent_sync", "segments": [ { "end": 42, @@ -95,8 +95,8 @@ "shortName": "ExportAgent" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_agents_export_agent_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Agents_ExportAgent_async", + "file": "dialogflow_v2beta1_generated_agents_export_agent_async.py", + "regionTag": "dialogflow_v2beta1_generated_Agents_ExportAgent_async", "segments": [ { "end": 48, @@ -139,8 +139,8 @@ "shortName": "ExportAgent" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_agents_export_agent_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Agents_ExportAgent_sync", + "file": "dialogflow_v2beta1_generated_agents_export_agent_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Agents_ExportAgent_sync", "segments": [ { "end": 48, @@ -184,8 +184,8 @@ "shortName": "GetAgent" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_agents_get_agent_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Agents_GetAgent_async", + "file": "dialogflow_v2beta1_generated_agents_get_agent_async.py", + "regionTag": "dialogflow_v2beta1_generated_Agents_GetAgent_async", "segments": [ { "end": 44, @@ -228,8 +228,8 @@ "shortName": "GetAgent" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_agents_get_agent_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Agents_GetAgent_sync", + "file": "dialogflow_v2beta1_generated_agents_get_agent_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Agents_GetAgent_sync", "segments": [ { "end": 44, @@ -273,8 +273,8 @@ "shortName": "GetValidationResult" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_agents_get_validation_result_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Agents_GetValidationResult_async", + "file": "dialogflow_v2beta1_generated_agents_get_validation_result_async.py", + "regionTag": "dialogflow_v2beta1_generated_Agents_GetValidationResult_async", "segments": [ { "end": 44, @@ -317,8 +317,8 @@ "shortName": "GetValidationResult" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_agents_get_validation_result_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Agents_GetValidationResult_sync", + "file": "dialogflow_v2beta1_generated_agents_get_validation_result_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Agents_GetValidationResult_sync", "segments": [ { "end": 44, @@ -362,8 +362,8 @@ "shortName": "ImportAgent" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_agents_import_agent_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Agents_ImportAgent_async", + "file": "dialogflow_v2beta1_generated_agents_import_agent_async.py", + "regionTag": "dialogflow_v2beta1_generated_Agents_ImportAgent_async", "segments": [ { "end": 49, @@ -406,8 +406,8 @@ "shortName": "ImportAgent" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_agents_import_agent_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Agents_ImportAgent_sync", + "file": "dialogflow_v2beta1_generated_agents_import_agent_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Agents_ImportAgent_sync", "segments": [ { "end": 49, @@ -451,8 +451,8 @@ "shortName": "RestoreAgent" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_agents_restore_agent_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Agents_RestoreAgent_async", + "file": "dialogflow_v2beta1_generated_agents_restore_agent_async.py", + "regionTag": "dialogflow_v2beta1_generated_Agents_RestoreAgent_async", "segments": [ { "end": 49, @@ -495,8 +495,8 @@ "shortName": "RestoreAgent" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_agents_restore_agent_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Agents_RestoreAgent_sync", + "file": "dialogflow_v2beta1_generated_agents_restore_agent_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Agents_RestoreAgent_sync", "segments": [ { "end": 49, @@ -540,8 +540,8 @@ "shortName": "SearchAgents" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_agents_search_agents_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Agents_SearchAgents_async", + "file": "dialogflow_v2beta1_generated_agents_search_agents_async.py", + "regionTag": "dialogflow_v2beta1_generated_Agents_SearchAgents_async", "segments": [ { "end": 45, @@ -584,8 +584,8 @@ "shortName": "SearchAgents" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_agents_search_agents_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Agents_SearchAgents_sync", + "file": "dialogflow_v2beta1_generated_agents_search_agents_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Agents_SearchAgents_sync", "segments": [ { "end": 45, @@ -629,8 +629,8 @@ "shortName": "SetAgent" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_agents_set_agent_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Agents_SetAgent_async", + "file": "dialogflow_v2beta1_generated_agents_set_agent_async.py", + "regionTag": "dialogflow_v2beta1_generated_Agents_SetAgent_async", "segments": [ { "end": 47, @@ -673,8 +673,8 @@ "shortName": "SetAgent" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_agents_set_agent_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Agents_SetAgent_sync", + "file": "dialogflow_v2beta1_generated_agents_set_agent_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Agents_SetAgent_sync", "segments": [ { "end": 47, @@ -718,8 +718,8 @@ "shortName": "TrainAgent" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_agents_train_agent_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Agents_TrainAgent_async", + "file": "dialogflow_v2beta1_generated_agents_train_agent_async.py", + "regionTag": "dialogflow_v2beta1_generated_Agents_TrainAgent_async", "segments": [ { "end": 48, @@ -762,8 +762,8 @@ "shortName": "TrainAgent" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_agents_train_agent_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Agents_TrainAgent_sync", + "file": "dialogflow_v2beta1_generated_agents_train_agent_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Agents_TrainAgent_sync", "segments": [ { "end": 48, @@ -807,8 +807,8 @@ "shortName": "GetAnswerRecord" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_answer_records_get_answer_record_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_AnswerRecords_GetAnswerRecord_async", + "file": "dialogflow_v2beta1_generated_answer_records_get_answer_record_async.py", + "regionTag": "dialogflow_v2beta1_generated_AnswerRecords_GetAnswerRecord_async", "segments": [ { "end": 43, @@ -851,8 +851,8 @@ "shortName": "GetAnswerRecord" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_answer_records_get_answer_record_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_AnswerRecords_GetAnswerRecord_sync", + "file": "dialogflow_v2beta1_generated_answer_records_get_answer_record_sync.py", + "regionTag": "dialogflow_v2beta1_generated_AnswerRecords_GetAnswerRecord_sync", "segments": [ { "end": 43, @@ -896,8 +896,8 @@ "shortName": "ListAnswerRecords" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_answer_records_list_answer_records_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_AnswerRecords_ListAnswerRecords_async", + "file": "dialogflow_v2beta1_generated_answer_records_list_answer_records_async.py", + "regionTag": "dialogflow_v2beta1_generated_AnswerRecords_ListAnswerRecords_async", "segments": [ { "end": 44, @@ -940,8 +940,8 @@ "shortName": "ListAnswerRecords" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_answer_records_list_answer_records_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_AnswerRecords_ListAnswerRecords_sync", + "file": "dialogflow_v2beta1_generated_answer_records_list_answer_records_sync.py", + "regionTag": "dialogflow_v2beta1_generated_AnswerRecords_ListAnswerRecords_sync", "segments": [ { "end": 44, @@ -985,8 +985,8 @@ "shortName": "UpdateAnswerRecord" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_answer_records_update_answer_record_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_AnswerRecords_UpdateAnswerRecord_async", + "file": "dialogflow_v2beta1_generated_answer_records_update_answer_record_async.py", + "regionTag": "dialogflow_v2beta1_generated_AnswerRecords_UpdateAnswerRecord_async", "segments": [ { "end": 43, @@ -1029,8 +1029,8 @@ "shortName": "UpdateAnswerRecord" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_answer_records_update_answer_record_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_AnswerRecords_UpdateAnswerRecord_sync", + "file": "dialogflow_v2beta1_generated_answer_records_update_answer_record_sync.py", + "regionTag": "dialogflow_v2beta1_generated_AnswerRecords_UpdateAnswerRecord_sync", "segments": [ { "end": 43, @@ -1074,8 +1074,8 @@ "shortName": "CreateContext" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_contexts_create_context_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Contexts_CreateContext_async", + "file": "dialogflow_v2beta1_generated_contexts_create_context_async.py", + "regionTag": "dialogflow_v2beta1_generated_Contexts_CreateContext_async", "segments": [ { "end": 44, @@ -1118,8 +1118,8 @@ "shortName": "CreateContext" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_contexts_create_context_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Contexts_CreateContext_sync", + "file": "dialogflow_v2beta1_generated_contexts_create_context_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Contexts_CreateContext_sync", "segments": [ { "end": 44, @@ -1163,8 +1163,8 @@ "shortName": "DeleteAllContexts" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_contexts_delete_all_contexts_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Contexts_DeleteAllContexts_async", + "file": "dialogflow_v2beta1_generated_contexts_delete_all_contexts_async.py", + "regionTag": "dialogflow_v2beta1_generated_Contexts_DeleteAllContexts_async", "segments": [ { "end": 42, @@ -1205,8 +1205,8 @@ "shortName": "DeleteAllContexts" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_contexts_delete_all_contexts_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Contexts_DeleteAllContexts_sync", + "file": "dialogflow_v2beta1_generated_contexts_delete_all_contexts_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Contexts_DeleteAllContexts_sync", "segments": [ { "end": 42, @@ -1248,8 +1248,8 @@ "shortName": "DeleteContext" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_contexts_delete_context_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Contexts_DeleteContext_async", + "file": "dialogflow_v2beta1_generated_contexts_delete_context_async.py", + "regionTag": "dialogflow_v2beta1_generated_Contexts_DeleteContext_async", "segments": [ { "end": 42, @@ -1290,8 +1290,8 @@ "shortName": "DeleteContext" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_contexts_delete_context_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Contexts_DeleteContext_sync", + "file": "dialogflow_v2beta1_generated_contexts_delete_context_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Contexts_DeleteContext_sync", "segments": [ { "end": 42, @@ -1333,8 +1333,8 @@ "shortName": "GetContext" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_contexts_get_context_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Contexts_GetContext_async", + "file": "dialogflow_v2beta1_generated_contexts_get_context_async.py", + "regionTag": "dialogflow_v2beta1_generated_Contexts_GetContext_async", "segments": [ { "end": 44, @@ -1377,8 +1377,8 @@ "shortName": "GetContext" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_contexts_get_context_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Contexts_GetContext_sync", + "file": "dialogflow_v2beta1_generated_contexts_get_context_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Contexts_GetContext_sync", "segments": [ { "end": 44, @@ -1422,8 +1422,8 @@ "shortName": "ListContexts" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_contexts_list_contexts_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Contexts_ListContexts_async", + "file": "dialogflow_v2beta1_generated_contexts_list_contexts_async.py", + "regionTag": "dialogflow_v2beta1_generated_Contexts_ListContexts_async", "segments": [ { "end": 45, @@ -1466,8 +1466,8 @@ "shortName": "ListContexts" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_contexts_list_contexts_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Contexts_ListContexts_sync", + "file": "dialogflow_v2beta1_generated_contexts_list_contexts_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Contexts_ListContexts_sync", "segments": [ { "end": 45, @@ -1511,8 +1511,8 @@ "shortName": "UpdateContext" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_contexts_update_context_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Contexts_UpdateContext_async", + "file": "dialogflow_v2beta1_generated_contexts_update_context_async.py", + "regionTag": "dialogflow_v2beta1_generated_Contexts_UpdateContext_async", "segments": [ { "end": 43, @@ -1555,8 +1555,8 @@ "shortName": "UpdateContext" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_contexts_update_context_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Contexts_UpdateContext_sync", + "file": "dialogflow_v2beta1_generated_contexts_update_context_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Contexts_UpdateContext_sync", "segments": [ { "end": 43, @@ -1600,8 +1600,8 @@ "shortName": "CreateConversationProfile" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_conversation_profiles_create_conversation_profile_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_ConversationProfiles_CreateConversationProfile_async", + "file": "dialogflow_v2beta1_generated_conversation_profiles_create_conversation_profile_async.py", + "regionTag": "dialogflow_v2beta1_generated_ConversationProfiles_CreateConversationProfile_async", "segments": [ { "end": 48, @@ -1644,8 +1644,8 @@ "shortName": "CreateConversationProfile" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_conversation_profiles_create_conversation_profile_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_ConversationProfiles_CreateConversationProfile_sync", + "file": "dialogflow_v2beta1_generated_conversation_profiles_create_conversation_profile_sync.py", + "regionTag": "dialogflow_v2beta1_generated_ConversationProfiles_CreateConversationProfile_sync", "segments": [ { "end": 48, @@ -1689,8 +1689,8 @@ "shortName": "DeleteConversationProfile" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_conversation_profiles_delete_conversation_profile_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_ConversationProfiles_DeleteConversationProfile_async", + "file": "dialogflow_v2beta1_generated_conversation_profiles_delete_conversation_profile_async.py", + "regionTag": "dialogflow_v2beta1_generated_ConversationProfiles_DeleteConversationProfile_async", "segments": [ { "end": 42, @@ -1731,8 +1731,8 @@ "shortName": "DeleteConversationProfile" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_conversation_profiles_delete_conversation_profile_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_ConversationProfiles_DeleteConversationProfile_sync", + "file": "dialogflow_v2beta1_generated_conversation_profiles_delete_conversation_profile_sync.py", + "regionTag": "dialogflow_v2beta1_generated_ConversationProfiles_DeleteConversationProfile_sync", "segments": [ { "end": 42, @@ -1774,8 +1774,8 @@ "shortName": "GetConversationProfile" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_conversation_profiles_get_conversation_profile_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_ConversationProfiles_GetConversationProfile_async", + "file": "dialogflow_v2beta1_generated_conversation_profiles_get_conversation_profile_async.py", + "regionTag": "dialogflow_v2beta1_generated_ConversationProfiles_GetConversationProfile_async", "segments": [ { "end": 44, @@ -1818,8 +1818,8 @@ "shortName": "GetConversationProfile" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_conversation_profiles_get_conversation_profile_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_ConversationProfiles_GetConversationProfile_sync", + "file": "dialogflow_v2beta1_generated_conversation_profiles_get_conversation_profile_sync.py", + "regionTag": "dialogflow_v2beta1_generated_ConversationProfiles_GetConversationProfile_sync", "segments": [ { "end": 44, @@ -1863,8 +1863,8 @@ "shortName": "ListConversationProfiles" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_conversation_profiles_list_conversation_profiles_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_ConversationProfiles_ListConversationProfiles_async", + "file": "dialogflow_v2beta1_generated_conversation_profiles_list_conversation_profiles_async.py", + "regionTag": "dialogflow_v2beta1_generated_ConversationProfiles_ListConversationProfiles_async", "segments": [ { "end": 45, @@ -1907,8 +1907,8 @@ "shortName": "ListConversationProfiles" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_conversation_profiles_list_conversation_profiles_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_ConversationProfiles_ListConversationProfiles_sync", + "file": "dialogflow_v2beta1_generated_conversation_profiles_list_conversation_profiles_sync.py", + "regionTag": "dialogflow_v2beta1_generated_ConversationProfiles_ListConversationProfiles_sync", "segments": [ { "end": 45, @@ -1952,8 +1952,8 @@ "shortName": "UpdateConversationProfile" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_conversation_profiles_update_conversation_profile_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_ConversationProfiles_UpdateConversationProfile_async", + "file": "dialogflow_v2beta1_generated_conversation_profiles_update_conversation_profile_async.py", + "regionTag": "dialogflow_v2beta1_generated_ConversationProfiles_UpdateConversationProfile_async", "segments": [ { "end": 47, @@ -1996,8 +1996,8 @@ "shortName": "UpdateConversationProfile" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_conversation_profiles_update_conversation_profile_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_ConversationProfiles_UpdateConversationProfile_sync", + "file": "dialogflow_v2beta1_generated_conversation_profiles_update_conversation_profile_sync.py", + "regionTag": "dialogflow_v2beta1_generated_ConversationProfiles_UpdateConversationProfile_sync", "segments": [ { "end": 47, @@ -2041,8 +2041,8 @@ "shortName": "BatchCreateMessages" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_conversations_batch_create_messages_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Conversations_BatchCreateMessages_async", + "file": "dialogflow_v2beta1_generated_conversations_batch_create_messages_async.py", + "regionTag": "dialogflow_v2beta1_generated_Conversations_BatchCreateMessages_async", "segments": [ { "end": 49, @@ -2085,8 +2085,8 @@ "shortName": "BatchCreateMessages" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_conversations_batch_create_messages_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Conversations_BatchCreateMessages_sync", + "file": "dialogflow_v2beta1_generated_conversations_batch_create_messages_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Conversations_BatchCreateMessages_sync", "segments": [ { "end": 49, @@ -2130,8 +2130,8 @@ "shortName": "CompleteConversation" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_conversations_complete_conversation_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Conversations_CompleteConversation_async", + "file": "dialogflow_v2beta1_generated_conversations_complete_conversation_async.py", + "regionTag": "dialogflow_v2beta1_generated_Conversations_CompleteConversation_async", "segments": [ { "end": 44, @@ -2174,8 +2174,8 @@ "shortName": "CompleteConversation" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_conversations_complete_conversation_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Conversations_CompleteConversation_sync", + "file": "dialogflow_v2beta1_generated_conversations_complete_conversation_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Conversations_CompleteConversation_sync", "segments": [ { "end": 44, @@ -2219,8 +2219,8 @@ "shortName": "CreateConversation" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_conversations_create_conversation_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Conversations_CreateConversation_async", + "file": "dialogflow_v2beta1_generated_conversations_create_conversation_async.py", + "regionTag": "dialogflow_v2beta1_generated_Conversations_CreateConversation_async", "segments": [ { "end": 48, @@ -2263,8 +2263,8 @@ "shortName": "CreateConversation" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_conversations_create_conversation_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Conversations_CreateConversation_sync", + "file": "dialogflow_v2beta1_generated_conversations_create_conversation_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Conversations_CreateConversation_sync", "segments": [ { "end": 48, @@ -2308,8 +2308,8 @@ "shortName": "GetConversation" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_conversations_get_conversation_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Conversations_GetConversation_async", + "file": "dialogflow_v2beta1_generated_conversations_get_conversation_async.py", + "regionTag": "dialogflow_v2beta1_generated_Conversations_GetConversation_async", "segments": [ { "end": 44, @@ -2352,8 +2352,8 @@ "shortName": "GetConversation" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_conversations_get_conversation_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Conversations_GetConversation_sync", + "file": "dialogflow_v2beta1_generated_conversations_get_conversation_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Conversations_GetConversation_sync", "segments": [ { "end": 44, @@ -2397,8 +2397,8 @@ "shortName": "ListConversations" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_conversations_list_conversations_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Conversations_ListConversations_async", + "file": "dialogflow_v2beta1_generated_conversations_list_conversations_async.py", + "regionTag": "dialogflow_v2beta1_generated_Conversations_ListConversations_async", "segments": [ { "end": 45, @@ -2441,8 +2441,8 @@ "shortName": "ListConversations" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_conversations_list_conversations_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Conversations_ListConversations_sync", + "file": "dialogflow_v2beta1_generated_conversations_list_conversations_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Conversations_ListConversations_sync", "segments": [ { "end": 45, @@ -2486,8 +2486,8 @@ "shortName": "ListMessages" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_conversations_list_messages_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Conversations_ListMessages_async", + "file": "dialogflow_v2beta1_generated_conversations_list_messages_async.py", + "regionTag": "dialogflow_v2beta1_generated_Conversations_ListMessages_async", "segments": [ { "end": 45, @@ -2530,8 +2530,8 @@ "shortName": "ListMessages" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_conversations_list_messages_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Conversations_ListMessages_sync", + "file": "dialogflow_v2beta1_generated_conversations_list_messages_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Conversations_ListMessages_sync", "segments": [ { "end": 45, @@ -2575,8 +2575,8 @@ "shortName": "CreateDocument" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_documents_create_document_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Documents_CreateDocument_async", + "file": "dialogflow_v2beta1_generated_documents_create_document_async.py", + "regionTag": "dialogflow_v2beta1_generated_Documents_CreateDocument_async", "segments": [ { "end": 55, @@ -2619,8 +2619,8 @@ "shortName": "CreateDocument" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_documents_create_document_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Documents_CreateDocument_sync", + "file": "dialogflow_v2beta1_generated_documents_create_document_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Documents_CreateDocument_sync", "segments": [ { "end": 55, @@ -2664,8 +2664,8 @@ "shortName": "DeleteDocument" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_documents_delete_document_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Documents_DeleteDocument_async", + "file": "dialogflow_v2beta1_generated_documents_delete_document_async.py", + "regionTag": "dialogflow_v2beta1_generated_Documents_DeleteDocument_async", "segments": [ { "end": 48, @@ -2708,8 +2708,8 @@ "shortName": "DeleteDocument" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_documents_delete_document_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Documents_DeleteDocument_sync", + "file": "dialogflow_v2beta1_generated_documents_delete_document_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Documents_DeleteDocument_sync", "segments": [ { "end": 48, @@ -2753,8 +2753,8 @@ "shortName": "GetDocument" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_documents_get_document_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Documents_GetDocument_async", + "file": "dialogflow_v2beta1_generated_documents_get_document_async.py", + "regionTag": "dialogflow_v2beta1_generated_Documents_GetDocument_async", "segments": [ { "end": 44, @@ -2797,8 +2797,8 @@ "shortName": "GetDocument" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_documents_get_document_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Documents_GetDocument_sync", + "file": "dialogflow_v2beta1_generated_documents_get_document_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Documents_GetDocument_sync", "segments": [ { "end": 44, @@ -2842,8 +2842,8 @@ "shortName": "ImportDocuments" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_documents_import_documents_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Documents_ImportDocuments_async", + "file": "dialogflow_v2beta1_generated_documents_import_documents_async.py", + "regionTag": "dialogflow_v2beta1_generated_Documents_ImportDocuments_async", "segments": [ { "end": 57, @@ -2886,8 +2886,8 @@ "shortName": "ImportDocuments" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_documents_import_documents_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Documents_ImportDocuments_sync", + "file": "dialogflow_v2beta1_generated_documents_import_documents_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Documents_ImportDocuments_sync", "segments": [ { "end": 57, @@ -2931,8 +2931,8 @@ "shortName": "ListDocuments" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_documents_list_documents_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Documents_ListDocuments_async", + "file": "dialogflow_v2beta1_generated_documents_list_documents_async.py", + "regionTag": "dialogflow_v2beta1_generated_Documents_ListDocuments_async", "segments": [ { "end": 45, @@ -2975,8 +2975,8 @@ "shortName": "ListDocuments" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_documents_list_documents_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Documents_ListDocuments_sync", + "file": "dialogflow_v2beta1_generated_documents_list_documents_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Documents_ListDocuments_sync", "segments": [ { "end": 45, @@ -3020,8 +3020,8 @@ "shortName": "ReloadDocument" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_documents_reload_document_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Documents_ReloadDocument_async", + "file": "dialogflow_v2beta1_generated_documents_reload_document_async.py", + "regionTag": "dialogflow_v2beta1_generated_Documents_ReloadDocument_async", "segments": [ { "end": 48, @@ -3064,8 +3064,8 @@ "shortName": "ReloadDocument" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_documents_reload_document_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Documents_ReloadDocument_sync", + "file": "dialogflow_v2beta1_generated_documents_reload_document_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Documents_ReloadDocument_sync", "segments": [ { "end": 48, @@ -3109,8 +3109,8 @@ "shortName": "UpdateDocument" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_documents_update_document_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Documents_UpdateDocument_async", + "file": "dialogflow_v2beta1_generated_documents_update_document_async.py", + "regionTag": "dialogflow_v2beta1_generated_Documents_UpdateDocument_async", "segments": [ { "end": 54, @@ -3153,8 +3153,8 @@ "shortName": "UpdateDocument" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_documents_update_document_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Documents_UpdateDocument_sync", + "file": "dialogflow_v2beta1_generated_documents_update_document_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Documents_UpdateDocument_sync", "segments": [ { "end": 54, @@ -3198,8 +3198,8 @@ "shortName": "BatchCreateEntities" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_entity_types_batch_create_entities_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_EntityTypes_BatchCreateEntities_async", + "file": "dialogflow_v2beta1_generated_entity_types_batch_create_entities_async.py", + "regionTag": "dialogflow_v2beta1_generated_EntityTypes_BatchCreateEntities_async", "segments": [ { "end": 52, @@ -3242,8 +3242,8 @@ "shortName": "BatchCreateEntities" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_entity_types_batch_create_entities_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_EntityTypes_BatchCreateEntities_sync", + "file": "dialogflow_v2beta1_generated_entity_types_batch_create_entities_sync.py", + "regionTag": "dialogflow_v2beta1_generated_EntityTypes_BatchCreateEntities_sync", "segments": [ { "end": 52, @@ -3287,8 +3287,8 @@ "shortName": "BatchDeleteEntities" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_entity_types_batch_delete_entities_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_EntityTypes_BatchDeleteEntities_async", + "file": "dialogflow_v2beta1_generated_entity_types_batch_delete_entities_async.py", + "regionTag": "dialogflow_v2beta1_generated_EntityTypes_BatchDeleteEntities_async", "segments": [ { "end": 49, @@ -3331,8 +3331,8 @@ "shortName": "BatchDeleteEntities" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_entity_types_batch_delete_entities_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_EntityTypes_BatchDeleteEntities_sync", + "file": "dialogflow_v2beta1_generated_entity_types_batch_delete_entities_sync.py", + "regionTag": "dialogflow_v2beta1_generated_EntityTypes_BatchDeleteEntities_sync", "segments": [ { "end": 49, @@ -3376,8 +3376,8 @@ "shortName": "BatchDeleteEntityTypes" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_entity_types_batch_delete_entity_types_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_EntityTypes_BatchDeleteEntityTypes_async", + "file": "dialogflow_v2beta1_generated_entity_types_batch_delete_entity_types_async.py", + "regionTag": "dialogflow_v2beta1_generated_EntityTypes_BatchDeleteEntityTypes_async", "segments": [ { "end": 49, @@ -3420,8 +3420,8 @@ "shortName": "BatchDeleteEntityTypes" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_entity_types_batch_delete_entity_types_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_EntityTypes_BatchDeleteEntityTypes_sync", + "file": "dialogflow_v2beta1_generated_entity_types_batch_delete_entity_types_sync.py", + "regionTag": "dialogflow_v2beta1_generated_EntityTypes_BatchDeleteEntityTypes_sync", "segments": [ { "end": 49, @@ -3465,8 +3465,8 @@ "shortName": "BatchUpdateEntities" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_entity_types_batch_update_entities_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_EntityTypes_BatchUpdateEntities_async", + "file": "dialogflow_v2beta1_generated_entity_types_batch_update_entities_async.py", + "regionTag": "dialogflow_v2beta1_generated_EntityTypes_BatchUpdateEntities_async", "segments": [ { "end": 52, @@ -3509,8 +3509,8 @@ "shortName": "BatchUpdateEntities" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_entity_types_batch_update_entities_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_EntityTypes_BatchUpdateEntities_sync", + "file": "dialogflow_v2beta1_generated_entity_types_batch_update_entities_sync.py", + "regionTag": "dialogflow_v2beta1_generated_EntityTypes_BatchUpdateEntities_sync", "segments": [ { "end": 52, @@ -3554,8 +3554,8 @@ "shortName": "BatchUpdateEntityTypes" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_entity_types_batch_update_entity_types_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_EntityTypes_BatchUpdateEntityTypes_async", + "file": "dialogflow_v2beta1_generated_entity_types_batch_update_entity_types_async.py", + "regionTag": "dialogflow_v2beta1_generated_EntityTypes_BatchUpdateEntityTypes_async", "segments": [ { "end": 49, @@ -3598,8 +3598,8 @@ "shortName": "BatchUpdateEntityTypes" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_entity_types_batch_update_entity_types_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_EntityTypes_BatchUpdateEntityTypes_sync", + "file": "dialogflow_v2beta1_generated_entity_types_batch_update_entity_types_sync.py", + "regionTag": "dialogflow_v2beta1_generated_EntityTypes_BatchUpdateEntityTypes_sync", "segments": [ { "end": 49, @@ -3643,8 +3643,8 @@ "shortName": "CreateEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_entity_types_create_entity_type_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_EntityTypes_CreateEntityType_async", + "file": "dialogflow_v2beta1_generated_entity_types_create_entity_type_async.py", + "regionTag": "dialogflow_v2beta1_generated_EntityTypes_CreateEntityType_async", "segments": [ { "end": 49, @@ -3687,8 +3687,8 @@ "shortName": "CreateEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_entity_types_create_entity_type_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_EntityTypes_CreateEntityType_sync", + "file": "dialogflow_v2beta1_generated_entity_types_create_entity_type_sync.py", + "regionTag": "dialogflow_v2beta1_generated_EntityTypes_CreateEntityType_sync", "segments": [ { "end": 49, @@ -3732,8 +3732,8 @@ "shortName": "DeleteEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_entity_types_delete_entity_type_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_EntityTypes_DeleteEntityType_async", + "file": "dialogflow_v2beta1_generated_entity_types_delete_entity_type_async.py", + "regionTag": "dialogflow_v2beta1_generated_EntityTypes_DeleteEntityType_async", "segments": [ { "end": 42, @@ -3774,8 +3774,8 @@ "shortName": "DeleteEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_entity_types_delete_entity_type_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_EntityTypes_DeleteEntityType_sync", + "file": "dialogflow_v2beta1_generated_entity_types_delete_entity_type_sync.py", + "regionTag": "dialogflow_v2beta1_generated_EntityTypes_DeleteEntityType_sync", "segments": [ { "end": 42, @@ -3817,8 +3817,8 @@ "shortName": "GetEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_entity_types_get_entity_type_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_EntityTypes_GetEntityType_async", + "file": "dialogflow_v2beta1_generated_entity_types_get_entity_type_async.py", + "regionTag": "dialogflow_v2beta1_generated_EntityTypes_GetEntityType_async", "segments": [ { "end": 44, @@ -3861,8 +3861,8 @@ "shortName": "GetEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_entity_types_get_entity_type_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_EntityTypes_GetEntityType_sync", + "file": "dialogflow_v2beta1_generated_entity_types_get_entity_type_sync.py", + "regionTag": "dialogflow_v2beta1_generated_EntityTypes_GetEntityType_sync", "segments": [ { "end": 44, @@ -3906,8 +3906,8 @@ "shortName": "ListEntityTypes" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_entity_types_list_entity_types_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_EntityTypes_ListEntityTypes_async", + "file": "dialogflow_v2beta1_generated_entity_types_list_entity_types_async.py", + "regionTag": "dialogflow_v2beta1_generated_EntityTypes_ListEntityTypes_async", "segments": [ { "end": 45, @@ -3950,8 +3950,8 @@ "shortName": "ListEntityTypes" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_entity_types_list_entity_types_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_EntityTypes_ListEntityTypes_sync", + "file": "dialogflow_v2beta1_generated_entity_types_list_entity_types_sync.py", + "regionTag": "dialogflow_v2beta1_generated_EntityTypes_ListEntityTypes_sync", "segments": [ { "end": 45, @@ -3995,8 +3995,8 @@ "shortName": "UpdateEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_entity_types_update_entity_type_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_EntityTypes_UpdateEntityType_async", + "file": "dialogflow_v2beta1_generated_entity_types_update_entity_type_async.py", + "regionTag": "dialogflow_v2beta1_generated_EntityTypes_UpdateEntityType_async", "segments": [ { "end": 48, @@ -4039,8 +4039,8 @@ "shortName": "UpdateEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_entity_types_update_entity_type_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_EntityTypes_UpdateEntityType_sync", + "file": "dialogflow_v2beta1_generated_entity_types_update_entity_type_sync.py", + "regionTag": "dialogflow_v2beta1_generated_EntityTypes_UpdateEntityType_sync", "segments": [ { "end": 48, @@ -4084,8 +4084,8 @@ "shortName": "CreateEnvironment" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_environments_create_environment_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Environments_CreateEnvironment_async", + "file": "dialogflow_v2beta1_generated_environments_create_environment_async.py", + "regionTag": "dialogflow_v2beta1_generated_Environments_CreateEnvironment_async", "segments": [ { "end": 45, @@ -4128,8 +4128,8 @@ "shortName": "CreateEnvironment" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_environments_create_environment_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Environments_CreateEnvironment_sync", + "file": "dialogflow_v2beta1_generated_environments_create_environment_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Environments_CreateEnvironment_sync", "segments": [ { "end": 45, @@ -4173,8 +4173,8 @@ "shortName": "DeleteEnvironment" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_environments_delete_environment_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Environments_DeleteEnvironment_async", + "file": "dialogflow_v2beta1_generated_environments_delete_environment_async.py", + "regionTag": "dialogflow_v2beta1_generated_Environments_DeleteEnvironment_async", "segments": [ { "end": 42, @@ -4215,8 +4215,8 @@ "shortName": "DeleteEnvironment" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_environments_delete_environment_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Environments_DeleteEnvironment_sync", + "file": "dialogflow_v2beta1_generated_environments_delete_environment_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Environments_DeleteEnvironment_sync", "segments": [ { "end": 42, @@ -4258,8 +4258,8 @@ "shortName": "GetEnvironmentHistory" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_environments_get_environment_history_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Environments_GetEnvironmentHistory_async", + "file": "dialogflow_v2beta1_generated_environments_get_environment_history_async.py", + "regionTag": "dialogflow_v2beta1_generated_Environments_GetEnvironmentHistory_async", "segments": [ { "end": 45, @@ -4302,8 +4302,8 @@ "shortName": "GetEnvironmentHistory" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_environments_get_environment_history_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Environments_GetEnvironmentHistory_sync", + "file": "dialogflow_v2beta1_generated_environments_get_environment_history_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Environments_GetEnvironmentHistory_sync", "segments": [ { "end": 45, @@ -4347,8 +4347,8 @@ "shortName": "GetEnvironment" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_environments_get_environment_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Environments_GetEnvironment_async", + "file": "dialogflow_v2beta1_generated_environments_get_environment_async.py", + "regionTag": "dialogflow_v2beta1_generated_Environments_GetEnvironment_async", "segments": [ { "end": 44, @@ -4391,8 +4391,8 @@ "shortName": "GetEnvironment" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_environments_get_environment_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Environments_GetEnvironment_sync", + "file": "dialogflow_v2beta1_generated_environments_get_environment_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Environments_GetEnvironment_sync", "segments": [ { "end": 44, @@ -4436,8 +4436,8 @@ "shortName": "ListEnvironments" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_environments_list_environments_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Environments_ListEnvironments_async", + "file": "dialogflow_v2beta1_generated_environments_list_environments_async.py", + "regionTag": "dialogflow_v2beta1_generated_Environments_ListEnvironments_async", "segments": [ { "end": 45, @@ -4480,8 +4480,8 @@ "shortName": "ListEnvironments" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_environments_list_environments_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Environments_ListEnvironments_sync", + "file": "dialogflow_v2beta1_generated_environments_list_environments_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Environments_ListEnvironments_sync", "segments": [ { "end": 45, @@ -4525,8 +4525,8 @@ "shortName": "UpdateEnvironment" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_environments_update_environment_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Environments_UpdateEnvironment_async", + "file": "dialogflow_v2beta1_generated_environments_update_environment_async.py", + "regionTag": "dialogflow_v2beta1_generated_Environments_UpdateEnvironment_async", "segments": [ { "end": 43, @@ -4569,8 +4569,8 @@ "shortName": "UpdateEnvironment" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_environments_update_environment_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Environments_UpdateEnvironment_sync", + "file": "dialogflow_v2beta1_generated_environments_update_environment_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Environments_UpdateEnvironment_sync", "segments": [ { "end": 43, @@ -4614,8 +4614,8 @@ "shortName": "GetFulfillment" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_fulfillments_get_fulfillment_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Fulfillments_GetFulfillment_async", + "file": "dialogflow_v2beta1_generated_fulfillments_get_fulfillment_async.py", + "regionTag": "dialogflow_v2beta1_generated_Fulfillments_GetFulfillment_async", "segments": [ { "end": 44, @@ -4658,8 +4658,8 @@ "shortName": "GetFulfillment" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_fulfillments_get_fulfillment_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Fulfillments_GetFulfillment_sync", + "file": "dialogflow_v2beta1_generated_fulfillments_get_fulfillment_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Fulfillments_GetFulfillment_sync", "segments": [ { "end": 44, @@ -4703,8 +4703,8 @@ "shortName": "UpdateFulfillment" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_fulfillments_update_fulfillment_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Fulfillments_UpdateFulfillment_async", + "file": "dialogflow_v2beta1_generated_fulfillments_update_fulfillment_async.py", + "regionTag": "dialogflow_v2beta1_generated_Fulfillments_UpdateFulfillment_async", "segments": [ { "end": 48, @@ -4747,8 +4747,8 @@ "shortName": "UpdateFulfillment" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_fulfillments_update_fulfillment_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Fulfillments_UpdateFulfillment_sync", + "file": "dialogflow_v2beta1_generated_fulfillments_update_fulfillment_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Fulfillments_UpdateFulfillment_sync", "segments": [ { "end": 48, @@ -4792,8 +4792,8 @@ "shortName": "BatchDeleteIntents" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_intents_batch_delete_intents_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Intents_BatchDeleteIntents_async", + "file": "dialogflow_v2beta1_generated_intents_batch_delete_intents_async.py", + "regionTag": "dialogflow_v2beta1_generated_Intents_BatchDeleteIntents_async", "segments": [ { "end": 52, @@ -4836,8 +4836,8 @@ "shortName": "BatchDeleteIntents" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_intents_batch_delete_intents_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Intents_BatchDeleteIntents_sync", + "file": "dialogflow_v2beta1_generated_intents_batch_delete_intents_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Intents_BatchDeleteIntents_sync", "segments": [ { "end": 52, @@ -4881,8 +4881,8 @@ "shortName": "BatchUpdateIntents" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_intents_batch_update_intents_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Intents_BatchUpdateIntents_async", + "file": "dialogflow_v2beta1_generated_intents_batch_update_intents_async.py", + "regionTag": "dialogflow_v2beta1_generated_Intents_BatchUpdateIntents_async", "segments": [ { "end": 49, @@ -4925,8 +4925,8 @@ "shortName": "BatchUpdateIntents" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_intents_batch_update_intents_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Intents_BatchUpdateIntents_sync", + "file": "dialogflow_v2beta1_generated_intents_batch_update_intents_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Intents_BatchUpdateIntents_sync", "segments": [ { "end": 49, @@ -4970,8 +4970,8 @@ "shortName": "CreateIntent" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_intents_create_intent_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Intents_CreateIntent_async", + "file": "dialogflow_v2beta1_generated_intents_create_intent_async.py", + "regionTag": "dialogflow_v2beta1_generated_Intents_CreateIntent_async", "segments": [ { "end": 48, @@ -5014,8 +5014,8 @@ "shortName": "CreateIntent" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_intents_create_intent_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Intents_CreateIntent_sync", + "file": "dialogflow_v2beta1_generated_intents_create_intent_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Intents_CreateIntent_sync", "segments": [ { "end": 48, @@ -5059,8 +5059,8 @@ "shortName": "DeleteIntent" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_intents_delete_intent_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Intents_DeleteIntent_async", + "file": "dialogflow_v2beta1_generated_intents_delete_intent_async.py", + "regionTag": "dialogflow_v2beta1_generated_Intents_DeleteIntent_async", "segments": [ { "end": 42, @@ -5101,8 +5101,8 @@ "shortName": "DeleteIntent" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_intents_delete_intent_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Intents_DeleteIntent_sync", + "file": "dialogflow_v2beta1_generated_intents_delete_intent_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Intents_DeleteIntent_sync", "segments": [ { "end": 42, @@ -5144,8 +5144,8 @@ "shortName": "GetIntent" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_intents_get_intent_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Intents_GetIntent_async", + "file": "dialogflow_v2beta1_generated_intents_get_intent_async.py", + "regionTag": "dialogflow_v2beta1_generated_Intents_GetIntent_async", "segments": [ { "end": 44, @@ -5188,8 +5188,8 @@ "shortName": "GetIntent" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_intents_get_intent_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Intents_GetIntent_sync", + "file": "dialogflow_v2beta1_generated_intents_get_intent_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Intents_GetIntent_sync", "segments": [ { "end": 44, @@ -5233,8 +5233,8 @@ "shortName": "ListIntents" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_intents_list_intents_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Intents_ListIntents_async", + "file": "dialogflow_v2beta1_generated_intents_list_intents_async.py", + "regionTag": "dialogflow_v2beta1_generated_Intents_ListIntents_async", "segments": [ { "end": 45, @@ -5277,8 +5277,8 @@ "shortName": "ListIntents" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_intents_list_intents_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Intents_ListIntents_sync", + "file": "dialogflow_v2beta1_generated_intents_list_intents_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Intents_ListIntents_sync", "segments": [ { "end": 45, @@ -5322,8 +5322,8 @@ "shortName": "UpdateIntent" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_intents_update_intent_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Intents_UpdateIntent_async", + "file": "dialogflow_v2beta1_generated_intents_update_intent_async.py", + "regionTag": "dialogflow_v2beta1_generated_Intents_UpdateIntent_async", "segments": [ { "end": 47, @@ -5366,8 +5366,8 @@ "shortName": "UpdateIntent" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_intents_update_intent_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Intents_UpdateIntent_sync", + "file": "dialogflow_v2beta1_generated_intents_update_intent_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Intents_UpdateIntent_sync", "segments": [ { "end": 47, @@ -5411,8 +5411,8 @@ "shortName": "CreateKnowledgeBase" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_knowledge_bases_create_knowledge_base_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_KnowledgeBases_CreateKnowledgeBase_async", + "file": "dialogflow_v2beta1_generated_knowledge_bases_create_knowledge_base_async.py", + "regionTag": "dialogflow_v2beta1_generated_KnowledgeBases_CreateKnowledgeBase_async", "segments": [ { "end": 48, @@ -5455,8 +5455,8 @@ "shortName": "CreateKnowledgeBase" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_knowledge_bases_create_knowledge_base_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_KnowledgeBases_CreateKnowledgeBase_sync", + "file": "dialogflow_v2beta1_generated_knowledge_bases_create_knowledge_base_sync.py", + "regionTag": "dialogflow_v2beta1_generated_KnowledgeBases_CreateKnowledgeBase_sync", "segments": [ { "end": 48, @@ -5500,8 +5500,8 @@ "shortName": "DeleteKnowledgeBase" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_knowledge_bases_delete_knowledge_base_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_KnowledgeBases_DeleteKnowledgeBase_async", + "file": "dialogflow_v2beta1_generated_knowledge_bases_delete_knowledge_base_async.py", + "regionTag": "dialogflow_v2beta1_generated_KnowledgeBases_DeleteKnowledgeBase_async", "segments": [ { "end": 42, @@ -5542,8 +5542,8 @@ "shortName": "DeleteKnowledgeBase" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_knowledge_bases_delete_knowledge_base_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_KnowledgeBases_DeleteKnowledgeBase_sync", + "file": "dialogflow_v2beta1_generated_knowledge_bases_delete_knowledge_base_sync.py", + "regionTag": "dialogflow_v2beta1_generated_KnowledgeBases_DeleteKnowledgeBase_sync", "segments": [ { "end": 42, @@ -5585,8 +5585,8 @@ "shortName": "GetKnowledgeBase" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_knowledge_bases_get_knowledge_base_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_KnowledgeBases_GetKnowledgeBase_async", + "file": "dialogflow_v2beta1_generated_knowledge_bases_get_knowledge_base_async.py", + "regionTag": "dialogflow_v2beta1_generated_KnowledgeBases_GetKnowledgeBase_async", "segments": [ { "end": 44, @@ -5629,8 +5629,8 @@ "shortName": "GetKnowledgeBase" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_knowledge_bases_get_knowledge_base_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_KnowledgeBases_GetKnowledgeBase_sync", + "file": "dialogflow_v2beta1_generated_knowledge_bases_get_knowledge_base_sync.py", + "regionTag": "dialogflow_v2beta1_generated_KnowledgeBases_GetKnowledgeBase_sync", "segments": [ { "end": 44, @@ -5674,8 +5674,8 @@ "shortName": "ListKnowledgeBases" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_knowledge_bases_list_knowledge_bases_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_KnowledgeBases_ListKnowledgeBases_async", + "file": "dialogflow_v2beta1_generated_knowledge_bases_list_knowledge_bases_async.py", + "regionTag": "dialogflow_v2beta1_generated_KnowledgeBases_ListKnowledgeBases_async", "segments": [ { "end": 45, @@ -5718,8 +5718,8 @@ "shortName": "ListKnowledgeBases" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_knowledge_bases_list_knowledge_bases_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_KnowledgeBases_ListKnowledgeBases_sync", + "file": "dialogflow_v2beta1_generated_knowledge_bases_list_knowledge_bases_sync.py", + "regionTag": "dialogflow_v2beta1_generated_KnowledgeBases_ListKnowledgeBases_sync", "segments": [ { "end": 45, @@ -5763,8 +5763,8 @@ "shortName": "UpdateKnowledgeBase" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_knowledge_bases_update_knowledge_base_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_KnowledgeBases_UpdateKnowledgeBase_async", + "file": "dialogflow_v2beta1_generated_knowledge_bases_update_knowledge_base_async.py", + "regionTag": "dialogflow_v2beta1_generated_KnowledgeBases_UpdateKnowledgeBase_async", "segments": [ { "end": 47, @@ -5807,8 +5807,8 @@ "shortName": "UpdateKnowledgeBase" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_knowledge_bases_update_knowledge_base_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_KnowledgeBases_UpdateKnowledgeBase_sync", + "file": "dialogflow_v2beta1_generated_knowledge_bases_update_knowledge_base_sync.py", + "regionTag": "dialogflow_v2beta1_generated_KnowledgeBases_UpdateKnowledgeBase_sync", "segments": [ { "end": 47, @@ -5852,8 +5852,8 @@ "shortName": "AnalyzeContent" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_participants_analyze_content_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Participants_AnalyzeContent_async", + "file": "dialogflow_v2beta1_generated_participants_analyze_content_async.py", + "regionTag": "dialogflow_v2beta1_generated_Participants_AnalyzeContent_async", "segments": [ { "end": 44, @@ -5896,8 +5896,8 @@ "shortName": "AnalyzeContent" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_participants_analyze_content_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Participants_AnalyzeContent_sync", + "file": "dialogflow_v2beta1_generated_participants_analyze_content_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Participants_AnalyzeContent_sync", "segments": [ { "end": 44, @@ -5941,8 +5941,8 @@ "shortName": "CompileSuggestion" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_participants_compile_suggestion_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Participants_CompileSuggestion_async", + "file": "dialogflow_v2beta1_generated_participants_compile_suggestion_async.py", + "regionTag": "dialogflow_v2beta1_generated_Participants_CompileSuggestion_async", "segments": [ { "end": 43, @@ -5985,8 +5985,8 @@ "shortName": "CompileSuggestion" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_participants_compile_suggestion_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Participants_CompileSuggestion_sync", + "file": "dialogflow_v2beta1_generated_participants_compile_suggestion_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Participants_CompileSuggestion_sync", "segments": [ { "end": 43, @@ -6030,8 +6030,8 @@ "shortName": "CreateParticipant" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_participants_create_participant_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Participants_CreateParticipant_async", + "file": "dialogflow_v2beta1_generated_participants_create_participant_async.py", + "regionTag": "dialogflow_v2beta1_generated_Participants_CreateParticipant_async", "segments": [ { "end": 44, @@ -6074,8 +6074,8 @@ "shortName": "CreateParticipant" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_participants_create_participant_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Participants_CreateParticipant_sync", + "file": "dialogflow_v2beta1_generated_participants_create_participant_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Participants_CreateParticipant_sync", "segments": [ { "end": 44, @@ -6119,8 +6119,8 @@ "shortName": "GetParticipant" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_participants_get_participant_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Participants_GetParticipant_async", + "file": "dialogflow_v2beta1_generated_participants_get_participant_async.py", + "regionTag": "dialogflow_v2beta1_generated_Participants_GetParticipant_async", "segments": [ { "end": 44, @@ -6163,8 +6163,8 @@ "shortName": "GetParticipant" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_participants_get_participant_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Participants_GetParticipant_sync", + "file": "dialogflow_v2beta1_generated_participants_get_participant_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Participants_GetParticipant_sync", "segments": [ { "end": 44, @@ -6208,8 +6208,8 @@ "shortName": "ListParticipants" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_participants_list_participants_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Participants_ListParticipants_async", + "file": "dialogflow_v2beta1_generated_participants_list_participants_async.py", + "regionTag": "dialogflow_v2beta1_generated_Participants_ListParticipants_async", "segments": [ { "end": 45, @@ -6252,8 +6252,8 @@ "shortName": "ListParticipants" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_participants_list_participants_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Participants_ListParticipants_sync", + "file": "dialogflow_v2beta1_generated_participants_list_participants_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Participants_ListParticipants_sync", "segments": [ { "end": 45, @@ -6297,8 +6297,8 @@ "shortName": "ListSuggestions" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_participants_list_suggestions_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Participants_ListSuggestions_async", + "file": "dialogflow_v2beta1_generated_participants_list_suggestions_async.py", + "regionTag": "dialogflow_v2beta1_generated_Participants_ListSuggestions_async", "segments": [ { "end": 44, @@ -6341,8 +6341,8 @@ "shortName": "ListSuggestions" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_participants_list_suggestions_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Participants_ListSuggestions_sync", + "file": "dialogflow_v2beta1_generated_participants_list_suggestions_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Participants_ListSuggestions_sync", "segments": [ { "end": 44, @@ -6386,8 +6386,8 @@ "shortName": "SuggestArticles" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_participants_suggest_articles_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Participants_SuggestArticles_async", + "file": "dialogflow_v2beta1_generated_participants_suggest_articles_async.py", + "regionTag": "dialogflow_v2beta1_generated_Participants_SuggestArticles_async", "segments": [ { "end": 44, @@ -6430,8 +6430,8 @@ "shortName": "SuggestArticles" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_participants_suggest_articles_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Participants_SuggestArticles_sync", + "file": "dialogflow_v2beta1_generated_participants_suggest_articles_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Participants_SuggestArticles_sync", "segments": [ { "end": 44, @@ -6475,8 +6475,8 @@ "shortName": "SuggestFaqAnswers" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_participants_suggest_faq_answers_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Participants_SuggestFaqAnswers_async", + "file": "dialogflow_v2beta1_generated_participants_suggest_faq_answers_async.py", + "regionTag": "dialogflow_v2beta1_generated_Participants_SuggestFaqAnswers_async", "segments": [ { "end": 44, @@ -6519,8 +6519,8 @@ "shortName": "SuggestFaqAnswers" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_participants_suggest_faq_answers_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Participants_SuggestFaqAnswers_sync", + "file": "dialogflow_v2beta1_generated_participants_suggest_faq_answers_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Participants_SuggestFaqAnswers_sync", "segments": [ { "end": 44, @@ -6564,8 +6564,8 @@ "shortName": "SuggestSmartReplies" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_participants_suggest_smart_replies_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Participants_SuggestSmartReplies_async", + "file": "dialogflow_v2beta1_generated_participants_suggest_smart_replies_async.py", + "regionTag": "dialogflow_v2beta1_generated_Participants_SuggestSmartReplies_async", "segments": [ { "end": 44, @@ -6608,8 +6608,8 @@ "shortName": "SuggestSmartReplies" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_participants_suggest_smart_replies_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Participants_SuggestSmartReplies_sync", + "file": "dialogflow_v2beta1_generated_participants_suggest_smart_replies_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Participants_SuggestSmartReplies_sync", "segments": [ { "end": 44, @@ -6653,8 +6653,8 @@ "shortName": "UpdateParticipant" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_participants_update_participant_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Participants_UpdateParticipant_async", + "file": "dialogflow_v2beta1_generated_participants_update_participant_async.py", + "regionTag": "dialogflow_v2beta1_generated_Participants_UpdateParticipant_async", "segments": [ { "end": 43, @@ -6697,8 +6697,8 @@ "shortName": "UpdateParticipant" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_participants_update_participant_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Participants_UpdateParticipant_sync", + "file": "dialogflow_v2beta1_generated_participants_update_participant_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Participants_UpdateParticipant_sync", "segments": [ { "end": 43, @@ -6742,8 +6742,8 @@ "shortName": "CreateSessionEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_session_entity_types_create_session_entity_type_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_SessionEntityTypes_CreateSessionEntityType_async", + "file": "dialogflow_v2beta1_generated_session_entity_types_create_session_entity_type_async.py", + "regionTag": "dialogflow_v2beta1_generated_SessionEntityTypes_CreateSessionEntityType_async", "segments": [ { "end": 44, @@ -6786,8 +6786,8 @@ "shortName": "CreateSessionEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_session_entity_types_create_session_entity_type_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_SessionEntityTypes_CreateSessionEntityType_sync", + "file": "dialogflow_v2beta1_generated_session_entity_types_create_session_entity_type_sync.py", + "regionTag": "dialogflow_v2beta1_generated_SessionEntityTypes_CreateSessionEntityType_sync", "segments": [ { "end": 44, @@ -6831,8 +6831,8 @@ "shortName": "DeleteSessionEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_session_entity_types_delete_session_entity_type_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_SessionEntityTypes_DeleteSessionEntityType_async", + "file": "dialogflow_v2beta1_generated_session_entity_types_delete_session_entity_type_async.py", + "regionTag": "dialogflow_v2beta1_generated_SessionEntityTypes_DeleteSessionEntityType_async", "segments": [ { "end": 42, @@ -6873,8 +6873,8 @@ "shortName": "DeleteSessionEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_session_entity_types_delete_session_entity_type_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_SessionEntityTypes_DeleteSessionEntityType_sync", + "file": "dialogflow_v2beta1_generated_session_entity_types_delete_session_entity_type_sync.py", + "regionTag": "dialogflow_v2beta1_generated_SessionEntityTypes_DeleteSessionEntityType_sync", "segments": [ { "end": 42, @@ -6916,8 +6916,8 @@ "shortName": "GetSessionEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_session_entity_types_get_session_entity_type_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_SessionEntityTypes_GetSessionEntityType_async", + "file": "dialogflow_v2beta1_generated_session_entity_types_get_session_entity_type_async.py", + "regionTag": "dialogflow_v2beta1_generated_SessionEntityTypes_GetSessionEntityType_async", "segments": [ { "end": 44, @@ -6960,8 +6960,8 @@ "shortName": "GetSessionEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_session_entity_types_get_session_entity_type_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_SessionEntityTypes_GetSessionEntityType_sync", + "file": "dialogflow_v2beta1_generated_session_entity_types_get_session_entity_type_sync.py", + "regionTag": "dialogflow_v2beta1_generated_SessionEntityTypes_GetSessionEntityType_sync", "segments": [ { "end": 44, @@ -7005,8 +7005,8 @@ "shortName": "ListSessionEntityTypes" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_session_entity_types_list_session_entity_types_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_SessionEntityTypes_ListSessionEntityTypes_async", + "file": "dialogflow_v2beta1_generated_session_entity_types_list_session_entity_types_async.py", + "regionTag": "dialogflow_v2beta1_generated_SessionEntityTypes_ListSessionEntityTypes_async", "segments": [ { "end": 45, @@ -7049,8 +7049,8 @@ "shortName": "ListSessionEntityTypes" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_session_entity_types_list_session_entity_types_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_SessionEntityTypes_ListSessionEntityTypes_sync", + "file": "dialogflow_v2beta1_generated_session_entity_types_list_session_entity_types_sync.py", + "regionTag": "dialogflow_v2beta1_generated_SessionEntityTypes_ListSessionEntityTypes_sync", "segments": [ { "end": 45, @@ -7094,8 +7094,8 @@ "shortName": "UpdateSessionEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_session_entity_types_update_session_entity_type_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_SessionEntityTypes_UpdateSessionEntityType_async", + "file": "dialogflow_v2beta1_generated_session_entity_types_update_session_entity_type_async.py", + "regionTag": "dialogflow_v2beta1_generated_SessionEntityTypes_UpdateSessionEntityType_async", "segments": [ { "end": 43, @@ -7138,8 +7138,8 @@ "shortName": "UpdateSessionEntityType" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_session_entity_types_update_session_entity_type_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_SessionEntityTypes_UpdateSessionEntityType_sync", + "file": "dialogflow_v2beta1_generated_session_entity_types_update_session_entity_type_sync.py", + "regionTag": "dialogflow_v2beta1_generated_SessionEntityTypes_UpdateSessionEntityType_sync", "segments": [ { "end": 43, @@ -7183,8 +7183,8 @@ "shortName": "DetectIntent" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_sessions_detect_intent_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Sessions_DetectIntent_async", + "file": "dialogflow_v2beta1_generated_sessions_detect_intent_async.py", + "regionTag": "dialogflow_v2beta1_generated_Sessions_DetectIntent_async", "segments": [ { "end": 44, @@ -7227,8 +7227,8 @@ "shortName": "DetectIntent" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_sessions_detect_intent_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Sessions_DetectIntent_sync", + "file": "dialogflow_v2beta1_generated_sessions_detect_intent_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Sessions_DetectIntent_sync", "segments": [ { "end": 44, @@ -7272,8 +7272,8 @@ "shortName": "StreamingDetectIntent" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_sessions_streaming_detect_intent_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Sessions_StreamingDetectIntent_async", + "file": "dialogflow_v2beta1_generated_sessions_streaming_detect_intent_async.py", + "regionTag": "dialogflow_v2beta1_generated_Sessions_StreamingDetectIntent_async", "segments": [ { "end": 55, @@ -7316,8 +7316,8 @@ "shortName": "StreamingDetectIntent" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_sessions_streaming_detect_intent_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Sessions_StreamingDetectIntent_sync", + "file": "dialogflow_v2beta1_generated_sessions_streaming_detect_intent_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Sessions_StreamingDetectIntent_sync", "segments": [ { "end": 55, @@ -7361,8 +7361,8 @@ "shortName": "CreateVersion" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_versions_create_version_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Versions_CreateVersion_async", + "file": "dialogflow_v2beta1_generated_versions_create_version_async.py", + "regionTag": "dialogflow_v2beta1_generated_Versions_CreateVersion_async", "segments": [ { "end": 44, @@ -7405,8 +7405,8 @@ "shortName": "CreateVersion" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_versions_create_version_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Versions_CreateVersion_sync", + "file": "dialogflow_v2beta1_generated_versions_create_version_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Versions_CreateVersion_sync", "segments": [ { "end": 44, @@ -7450,8 +7450,8 @@ "shortName": "DeleteVersion" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_versions_delete_version_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Versions_DeleteVersion_async", + "file": "dialogflow_v2beta1_generated_versions_delete_version_async.py", + "regionTag": "dialogflow_v2beta1_generated_Versions_DeleteVersion_async", "segments": [ { "end": 42, @@ -7492,8 +7492,8 @@ "shortName": "DeleteVersion" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_versions_delete_version_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Versions_DeleteVersion_sync", + "file": "dialogflow_v2beta1_generated_versions_delete_version_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Versions_DeleteVersion_sync", "segments": [ { "end": 42, @@ -7535,8 +7535,8 @@ "shortName": "GetVersion" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_versions_get_version_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Versions_GetVersion_async", + "file": "dialogflow_v2beta1_generated_versions_get_version_async.py", + "regionTag": "dialogflow_v2beta1_generated_Versions_GetVersion_async", "segments": [ { "end": 44, @@ -7579,8 +7579,8 @@ "shortName": "GetVersion" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_versions_get_version_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Versions_GetVersion_sync", + "file": "dialogflow_v2beta1_generated_versions_get_version_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Versions_GetVersion_sync", "segments": [ { "end": 44, @@ -7624,8 +7624,8 @@ "shortName": "ListVersions" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_versions_list_versions_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Versions_ListVersions_async", + "file": "dialogflow_v2beta1_generated_versions_list_versions_async.py", + "regionTag": "dialogflow_v2beta1_generated_Versions_ListVersions_async", "segments": [ { "end": 45, @@ -7668,8 +7668,8 @@ "shortName": "ListVersions" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_versions_list_versions_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Versions_ListVersions_sync", + "file": "dialogflow_v2beta1_generated_versions_list_versions_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Versions_ListVersions_sync", "segments": [ { "end": 45, @@ -7713,8 +7713,8 @@ "shortName": "UpdateVersion" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_versions_update_version_async.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Versions_UpdateVersion_async", + "file": "dialogflow_v2beta1_generated_versions_update_version_async.py", + "regionTag": "dialogflow_v2beta1_generated_Versions_UpdateVersion_async", "segments": [ { "end": 43, @@ -7757,8 +7757,8 @@ "shortName": "UpdateVersion" } }, - "file": "dialogflow_generated_dialogflow_v2beta1_versions_update_version_sync.py", - "regionTag": "dialogflow_generated_dialogflow_v2beta1_Versions_UpdateVersion_sync", + "file": "dialogflow_v2beta1_generated_versions_update_version_sync.py", + "regionTag": "dialogflow_v2beta1_generated_Versions_UpdateVersion_sync", "segments": [ { "end": 43, diff --git a/scripts/fixup_dialogflow_v2_keywords.py b/scripts/fixup_dialogflow_v2_keywords.py index 7374c7666..9b376106e 100644 --- a/scripts/fixup_dialogflow_v2_keywords.py +++ b/scripts/fixup_dialogflow_v2_keywords.py @@ -1,6 +1,6 @@ #! /usr/bin/env python3 # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -47,9 +47,13 @@ class dialogflowCallTransformer(cst.CSTTransformer): 'batch_update_entities': ('parent', 'entities', 'language_code', 'update_mask', ), 'batch_update_entity_types': ('parent', 'entity_type_batch_uri', 'entity_type_batch_inline', 'language_code', 'update_mask', ), 'batch_update_intents': ('parent', 'intent_batch_uri', 'intent_batch_inline', 'language_code', 'update_mask', 'intent_view', ), + 'clear_suggestion_feature_config': ('conversation_profile', 'participant_role', 'suggestion_feature_type', ), 'complete_conversation': ('name', ), 'create_context': ('parent', 'context', ), 'create_conversation': ('parent', 'conversation', 'conversation_id', ), + 'create_conversation_dataset': ('parent', 'conversation_dataset', ), + 'create_conversation_model': ('conversation_model', 'parent', ), + 'create_conversation_model_evaluation': ('parent', 'conversation_model_evaluation', ), 'create_conversation_profile': ('parent', 'conversation_profile', ), 'create_document': ('parent', 'document', ), 'create_entity_type': ('parent', 'entity_type', 'language_code', ), @@ -62,6 +66,8 @@ class dialogflowCallTransformer(cst.CSTTransformer): 'delete_agent': ('parent', ), 'delete_all_contexts': ('parent', ), 'delete_context': ('name', ), + 'delete_conversation_dataset': ('name', ), + 'delete_conversation_model': ('name', ), 'delete_conversation_profile': ('name', ), 'delete_document': ('name', ), 'delete_entity_type': ('name', ), @@ -70,12 +76,16 @@ class dialogflowCallTransformer(cst.CSTTransformer): 'delete_knowledge_base': ('name', 'force', ), 'delete_session_entity_type': ('name', ), 'delete_version': ('name', ), + 'deploy_conversation_model': ('name', ), 'detect_intent': ('session', 'query_input', 'query_params', 'output_audio_config', 'output_audio_config_mask', 'input_audio', ), 'export_agent': ('parent', 'agent_uri', ), 'export_document': ('name', 'gcs_destination', 'export_full_content', 'smart_messaging_partial_update', ), 'get_agent': ('parent', ), 'get_context': ('name', ), 'get_conversation': ('name', ), + 'get_conversation_dataset': ('name', ), + 'get_conversation_model': ('name', ), + 'get_conversation_model_evaluation': ('name', ), 'get_conversation_profile': ('name', ), 'get_document': ('name', ), 'get_entity_type': ('name', 'language_code', ), @@ -89,9 +99,13 @@ class dialogflowCallTransformer(cst.CSTTransformer): 'get_validation_result': ('parent', 'language_code', ), 'get_version': ('name', ), 'import_agent': ('parent', 'agent_uri', 'agent_content', ), + 'import_conversation_data': ('name', 'input_config', ), 'import_documents': ('parent', 'document_template', 'gcs_source', 'import_gcs_custom_metadata', ), 'list_answer_records': ('parent', 'filter', 'page_size', 'page_token', ), 'list_contexts': ('parent', 'page_size', 'page_token', ), + 'list_conversation_datasets': ('parent', 'page_size', 'page_token', ), + 'list_conversation_model_evaluations': ('parent', 'page_size', 'page_token', ), + 'list_conversation_models': ('parent', 'page_size', 'page_token', ), 'list_conversation_profiles': ('parent', 'page_size', 'page_token', ), 'list_conversations': ('parent', 'page_size', 'page_token', 'filter', ), 'list_documents': ('parent', 'page_size', 'page_token', 'filter', ), @@ -107,11 +121,13 @@ class dialogflowCallTransformer(cst.CSTTransformer): 'restore_agent': ('parent', 'agent_uri', 'agent_content', ), 'search_agents': ('parent', 'page_size', 'page_token', ), 'set_agent': ('agent', 'update_mask', ), + 'set_suggestion_feature_config': ('conversation_profile', 'participant_role', 'suggestion_feature_config', ), 'streaming_detect_intent': ('session', 'query_input', 'query_params', 'single_utterance', 'output_audio_config', 'output_audio_config_mask', 'input_audio', ), 'suggest_articles': ('parent', 'latest_message', 'context_size', 'assist_query_params', ), 'suggest_faq_answers': ('parent', 'latest_message', 'context_size', 'assist_query_params', ), 'suggest_smart_replies': ('parent', 'current_text_input', 'latest_message', 'context_size', ), 'train_agent': ('parent', ), + 'undeploy_conversation_model': ('name', ), 'update_answer_record': ('answer_record', 'update_mask', ), 'update_context': ('context', 'update_mask', ), 'update_conversation_profile': ('conversation_profile', 'update_mask', ), diff --git a/scripts/fixup_dialogflow_v2beta1_keywords.py b/scripts/fixup_dialogflow_v2beta1_keywords.py index a921e3c51..7f1d633f1 100644 --- a/scripts/fixup_dialogflow_v2beta1_keywords.py +++ b/scripts/fixup_dialogflow_v2beta1_keywords.py @@ -1,6 +1,6 @@ #! /usr/bin/env python3 # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/__init__.py b/tests/__init__.py index 4de65971c..e8e1c3845 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/__init__.py b/tests/unit/__init__.py index 4de65971c..e8e1c3845 100644 --- a/tests/unit/__init__.py +++ b/tests/unit/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/__init__.py b/tests/unit/gapic/__init__.py index 4de65971c..e8e1c3845 100644 --- a/tests/unit/gapic/__init__.py +++ b/tests/unit/gapic/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2/__init__.py b/tests/unit/gapic/dialogflow_v2/__init__.py index 4de65971c..e8e1c3845 100644 --- a/tests/unit/gapic/dialogflow_v2/__init__.py +++ b/tests/unit/gapic/dialogflow_v2/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2/test_agents.py b/tests/unit/gapic/dialogflow_v2/test_agents.py index e63d25dd2..199bbdcf2 100644 --- a/tests/unit/gapic/dialogflow_v2/test_agents.py +++ b/tests/unit/gapic/dialogflow_v2/test_agents.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2/test_answer_records.py b/tests/unit/gapic/dialogflow_v2/test_answer_records.py index 93c753a9e..bcf66ba5f 100644 --- a/tests/unit/gapic/dialogflow_v2/test_answer_records.py +++ b/tests/unit/gapic/dialogflow_v2/test_answer_records.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2/test_contexts.py b/tests/unit/gapic/dialogflow_v2/test_contexts.py index 083016550..2ee5811bb 100644 --- a/tests/unit/gapic/dialogflow_v2/test_contexts.py +++ b/tests/unit/gapic/dialogflow_v2/test_contexts.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2/test_conversation_datasets.py b/tests/unit/gapic/dialogflow_v2/test_conversation_datasets.py new file mode 100644 index 000000000..fe1c37172 --- /dev/null +++ b/tests/unit/gapic/dialogflow_v2/test_conversation_datasets.py @@ -0,0 +1,2615 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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 mock + +import grpc +from grpc.experimental import aio +import math +import pytest +from proto.marshal.rules.dates import DurationRule, TimestampRule + + +from google.api_core import client_options +from google.api_core import exceptions as core_exceptions +from google.api_core import future +from google.api_core import gapic_v1 +from google.api_core import grpc_helpers +from google.api_core import grpc_helpers_async +from google.api_core import operation +from google.api_core import operation_async # type: ignore +from google.api_core import operations_v1 +from google.api_core import path_template +from google.auth import credentials as ga_credentials +from google.auth.exceptions import MutualTLSChannelError +from google.cloud.dialogflow_v2.services.conversation_datasets import ( + ConversationDatasetsAsyncClient, +) +from google.cloud.dialogflow_v2.services.conversation_datasets import ( + ConversationDatasetsClient, +) +from google.cloud.dialogflow_v2.services.conversation_datasets import pagers +from google.cloud.dialogflow_v2.services.conversation_datasets import transports +from google.cloud.dialogflow_v2.types import conversation_dataset +from google.cloud.dialogflow_v2.types import ( + conversation_dataset as gcd_conversation_dataset, +) +from google.cloud.dialogflow_v2.types import gcs +from google.longrunning import operations_pb2 +from google.oauth2 import service_account +from google.protobuf import timestamp_pb2 # type: ignore +import google.auth + + +def client_cert_source_callback(): + return b"cert bytes", b"key bytes" + + +# If default endpoint is localhost, then default mtls endpoint will be the same. +# This method modifies the default endpoint so the client can produce a different +# mtls endpoint for endpoint testing purposes. +def modify_default_endpoint(client): + return ( + "foo.googleapis.com" + if ("localhost" in client.DEFAULT_ENDPOINT) + else client.DEFAULT_ENDPOINT + ) + + +def test__get_default_mtls_endpoint(): + api_endpoint = "example.googleapis.com" + api_mtls_endpoint = "example.mtls.googleapis.com" + sandbox_endpoint = "example.sandbox.googleapis.com" + sandbox_mtls_endpoint = "example.mtls.sandbox.googleapis.com" + non_googleapi = "api.example.com" + + assert ConversationDatasetsClient._get_default_mtls_endpoint(None) is None + assert ( + ConversationDatasetsClient._get_default_mtls_endpoint(api_endpoint) + == api_mtls_endpoint + ) + assert ( + ConversationDatasetsClient._get_default_mtls_endpoint(api_mtls_endpoint) + == api_mtls_endpoint + ) + assert ( + ConversationDatasetsClient._get_default_mtls_endpoint(sandbox_endpoint) + == sandbox_mtls_endpoint + ) + assert ( + ConversationDatasetsClient._get_default_mtls_endpoint(sandbox_mtls_endpoint) + == sandbox_mtls_endpoint + ) + assert ( + ConversationDatasetsClient._get_default_mtls_endpoint(non_googleapi) + == non_googleapi + ) + + +@pytest.mark.parametrize( + "client_class", [ConversationDatasetsClient, ConversationDatasetsAsyncClient,] +) +def test_conversation_datasets_client_from_service_account_info(client_class): + creds = ga_credentials.AnonymousCredentials() + with mock.patch.object( + service_account.Credentials, "from_service_account_info" + ) as factory: + factory.return_value = creds + info = {"valid": True} + client = client_class.from_service_account_info(info) + assert client.transport._credentials == creds + assert isinstance(client, client_class) + + assert client.transport._host == "dialogflow.googleapis.com:443" + + +@pytest.mark.parametrize( + "transport_class,transport_name", + [ + (transports.ConversationDatasetsGrpcTransport, "grpc"), + (transports.ConversationDatasetsGrpcAsyncIOTransport, "grpc_asyncio"), + ], +) +def test_conversation_datasets_client_service_account_always_use_jwt( + transport_class, transport_name +): + with mock.patch.object( + service_account.Credentials, "with_always_use_jwt_access", create=True + ) as use_jwt: + creds = service_account.Credentials(None, None, None) + transport = transport_class(credentials=creds, always_use_jwt_access=True) + use_jwt.assert_called_once_with(True) + + with mock.patch.object( + service_account.Credentials, "with_always_use_jwt_access", create=True + ) as use_jwt: + creds = service_account.Credentials(None, None, None) + transport = transport_class(credentials=creds, always_use_jwt_access=False) + use_jwt.assert_not_called() + + +@pytest.mark.parametrize( + "client_class", [ConversationDatasetsClient, ConversationDatasetsAsyncClient,] +) +def test_conversation_datasets_client_from_service_account_file(client_class): + creds = ga_credentials.AnonymousCredentials() + with mock.patch.object( + service_account.Credentials, "from_service_account_file" + ) as factory: + factory.return_value = creds + client = client_class.from_service_account_file("dummy/file/path.json") + assert client.transport._credentials == creds + assert isinstance(client, client_class) + + client = client_class.from_service_account_json("dummy/file/path.json") + assert client.transport._credentials == creds + assert isinstance(client, client_class) + + assert client.transport._host == "dialogflow.googleapis.com:443" + + +def test_conversation_datasets_client_get_transport_class(): + transport = ConversationDatasetsClient.get_transport_class() + available_transports = [ + transports.ConversationDatasetsGrpcTransport, + ] + assert transport in available_transports + + transport = ConversationDatasetsClient.get_transport_class("grpc") + assert transport == transports.ConversationDatasetsGrpcTransport + + +@pytest.mark.parametrize( + "client_class,transport_class,transport_name", + [ + ( + ConversationDatasetsClient, + transports.ConversationDatasetsGrpcTransport, + "grpc", + ), + ( + ConversationDatasetsAsyncClient, + transports.ConversationDatasetsGrpcAsyncIOTransport, + "grpc_asyncio", + ), + ], +) +@mock.patch.object( + ConversationDatasetsClient, + "DEFAULT_ENDPOINT", + modify_default_endpoint(ConversationDatasetsClient), +) +@mock.patch.object( + ConversationDatasetsAsyncClient, + "DEFAULT_ENDPOINT", + modify_default_endpoint(ConversationDatasetsAsyncClient), +) +def test_conversation_datasets_client_client_options( + client_class, transport_class, transport_name +): + # Check that if channel is provided we won't create a new one. + with mock.patch.object(ConversationDatasetsClient, "get_transport_class") as gtc: + transport = transport_class(credentials=ga_credentials.AnonymousCredentials()) + client = client_class(transport=transport) + gtc.assert_not_called() + + # Check that if channel is provided via str we will create a new one. + with mock.patch.object(ConversationDatasetsClient, "get_transport_class") as gtc: + client = client_class(transport=transport_name) + gtc.assert_called() + + # Check the case api_endpoint is provided. + options = client_options.ClientOptions(api_endpoint="squid.clam.whelk") + with mock.patch.object(transport_class, "__init__") as patched: + patched.return_value = None + client = client_class(transport=transport_name, client_options=options) + patched.assert_called_once_with( + credentials=None, + credentials_file=None, + host="squid.clam.whelk", + scopes=None, + client_cert_source_for_mtls=None, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + ) + + # Check the case api_endpoint is not provided and GOOGLE_API_USE_MTLS_ENDPOINT is + # "never". + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "never"}): + with mock.patch.object(transport_class, "__init__") as patched: + patched.return_value = None + client = client_class(transport=transport_name) + patched.assert_called_once_with( + credentials=None, + credentials_file=None, + host=client.DEFAULT_ENDPOINT, + scopes=None, + client_cert_source_for_mtls=None, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + ) + + # Check the case api_endpoint is not provided and GOOGLE_API_USE_MTLS_ENDPOINT is + # "always". + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "always"}): + with mock.patch.object(transport_class, "__init__") as patched: + patched.return_value = None + client = client_class(transport=transport_name) + patched.assert_called_once_with( + credentials=None, + credentials_file=None, + host=client.DEFAULT_MTLS_ENDPOINT, + scopes=None, + client_cert_source_for_mtls=None, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + ) + + # Check the case api_endpoint is not provided and GOOGLE_API_USE_MTLS_ENDPOINT has + # unsupported value. + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "Unsupported"}): + with pytest.raises(MutualTLSChannelError): + client = client_class(transport=transport_name) + + # Check the case GOOGLE_API_USE_CLIENT_CERTIFICATE has unsupported value. + with mock.patch.dict( + os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "Unsupported"} + ): + with pytest.raises(ValueError): + client = client_class(transport=transport_name) + + # Check the case quota_project_id is provided + options = client_options.ClientOptions(quota_project_id="octopus") + with mock.patch.object(transport_class, "__init__") as patched: + patched.return_value = None + client = client_class(client_options=options, transport=transport_name) + patched.assert_called_once_with( + credentials=None, + credentials_file=None, + host=client.DEFAULT_ENDPOINT, + scopes=None, + client_cert_source_for_mtls=None, + quota_project_id="octopus", + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + ) + + +@pytest.mark.parametrize( + "client_class,transport_class,transport_name,use_client_cert_env", + [ + ( + ConversationDatasetsClient, + transports.ConversationDatasetsGrpcTransport, + "grpc", + "true", + ), + ( + ConversationDatasetsAsyncClient, + transports.ConversationDatasetsGrpcAsyncIOTransport, + "grpc_asyncio", + "true", + ), + ( + ConversationDatasetsClient, + transports.ConversationDatasetsGrpcTransport, + "grpc", + "false", + ), + ( + ConversationDatasetsAsyncClient, + transports.ConversationDatasetsGrpcAsyncIOTransport, + "grpc_asyncio", + "false", + ), + ], +) +@mock.patch.object( + ConversationDatasetsClient, + "DEFAULT_ENDPOINT", + modify_default_endpoint(ConversationDatasetsClient), +) +@mock.patch.object( + ConversationDatasetsAsyncClient, + "DEFAULT_ENDPOINT", + modify_default_endpoint(ConversationDatasetsAsyncClient), +) +@mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "auto"}) +def test_conversation_datasets_client_mtls_env_auto( + client_class, transport_class, transport_name, use_client_cert_env +): + # This tests the endpoint autoswitch behavior. Endpoint is autoswitched to the default + # mtls endpoint, if GOOGLE_API_USE_CLIENT_CERTIFICATE is "true" and client cert exists. + + # Check the case client_cert_source is provided. Whether client cert is used depends on + # GOOGLE_API_USE_CLIENT_CERTIFICATE value. + with mock.patch.dict( + os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": use_client_cert_env} + ): + options = client_options.ClientOptions( + client_cert_source=client_cert_source_callback + ) + with mock.patch.object(transport_class, "__init__") as patched: + patched.return_value = None + client = client_class(client_options=options, transport=transport_name) + + if use_client_cert_env == "false": + expected_client_cert_source = None + expected_host = client.DEFAULT_ENDPOINT + else: + expected_client_cert_source = client_cert_source_callback + expected_host = client.DEFAULT_MTLS_ENDPOINT + + patched.assert_called_once_with( + credentials=None, + credentials_file=None, + host=expected_host, + scopes=None, + client_cert_source_for_mtls=expected_client_cert_source, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + ) + + # Check the case ADC client cert is provided. Whether client cert is used depends on + # GOOGLE_API_USE_CLIENT_CERTIFICATE value. + with mock.patch.dict( + os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": use_client_cert_env} + ): + with mock.patch.object(transport_class, "__init__") as patched: + with mock.patch( + "google.auth.transport.mtls.has_default_client_cert_source", + return_value=True, + ): + with mock.patch( + "google.auth.transport.mtls.default_client_cert_source", + return_value=client_cert_source_callback, + ): + if use_client_cert_env == "false": + expected_host = client.DEFAULT_ENDPOINT + expected_client_cert_source = None + else: + expected_host = client.DEFAULT_MTLS_ENDPOINT + expected_client_cert_source = client_cert_source_callback + + patched.return_value = None + client = client_class(transport=transport_name) + patched.assert_called_once_with( + credentials=None, + credentials_file=None, + host=expected_host, + scopes=None, + client_cert_source_for_mtls=expected_client_cert_source, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + ) + + # Check the case client_cert_source and ADC client cert are not provided. + with mock.patch.dict( + os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": use_client_cert_env} + ): + with mock.patch.object(transport_class, "__init__") as patched: + with mock.patch( + "google.auth.transport.mtls.has_default_client_cert_source", + return_value=False, + ): + patched.return_value = None + client = client_class(transport=transport_name) + patched.assert_called_once_with( + credentials=None, + credentials_file=None, + host=client.DEFAULT_ENDPOINT, + scopes=None, + client_cert_source_for_mtls=None, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + ) + + +@pytest.mark.parametrize( + "client_class", [ConversationDatasetsClient, ConversationDatasetsAsyncClient] +) +@mock.patch.object( + ConversationDatasetsClient, + "DEFAULT_ENDPOINT", + modify_default_endpoint(ConversationDatasetsClient), +) +@mock.patch.object( + ConversationDatasetsAsyncClient, + "DEFAULT_ENDPOINT", + modify_default_endpoint(ConversationDatasetsAsyncClient), +) +def test_conversation_datasets_client_get_mtls_endpoint_and_cert_source(client_class): + mock_client_cert_source = mock.Mock() + + # Test the case GOOGLE_API_USE_CLIENT_CERTIFICATE is "true". + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "true"}): + mock_api_endpoint = "foo" + options = client_options.ClientOptions( + client_cert_source=mock_client_cert_source, api_endpoint=mock_api_endpoint + ) + api_endpoint, cert_source = client_class.get_mtls_endpoint_and_cert_source( + options + ) + assert api_endpoint == mock_api_endpoint + assert cert_source == mock_client_cert_source + + # Test the case GOOGLE_API_USE_CLIENT_CERTIFICATE is "false". + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "false"}): + mock_client_cert_source = mock.Mock() + mock_api_endpoint = "foo" + options = client_options.ClientOptions( + client_cert_source=mock_client_cert_source, api_endpoint=mock_api_endpoint + ) + api_endpoint, cert_source = client_class.get_mtls_endpoint_and_cert_source( + options + ) + assert api_endpoint == mock_api_endpoint + assert cert_source is None + + # Test the case GOOGLE_API_USE_MTLS_ENDPOINT is "never". + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "never"}): + api_endpoint, cert_source = client_class.get_mtls_endpoint_and_cert_source() + assert api_endpoint == client_class.DEFAULT_ENDPOINT + assert cert_source is None + + # Test the case GOOGLE_API_USE_MTLS_ENDPOINT is "always". + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "always"}): + api_endpoint, cert_source = client_class.get_mtls_endpoint_and_cert_source() + assert api_endpoint == client_class.DEFAULT_MTLS_ENDPOINT + assert cert_source is None + + # Test the case GOOGLE_API_USE_MTLS_ENDPOINT is "auto" and default cert doesn't exist. + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "true"}): + with mock.patch( + "google.auth.transport.mtls.has_default_client_cert_source", + return_value=False, + ): + api_endpoint, cert_source = client_class.get_mtls_endpoint_and_cert_source() + assert api_endpoint == client_class.DEFAULT_ENDPOINT + assert cert_source is None + + # Test the case GOOGLE_API_USE_MTLS_ENDPOINT is "auto" and default cert exists. + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "true"}): + with mock.patch( + "google.auth.transport.mtls.has_default_client_cert_source", + return_value=True, + ): + with mock.patch( + "google.auth.transport.mtls.default_client_cert_source", + return_value=mock_client_cert_source, + ): + ( + api_endpoint, + cert_source, + ) = client_class.get_mtls_endpoint_and_cert_source() + assert api_endpoint == client_class.DEFAULT_MTLS_ENDPOINT + assert cert_source == mock_client_cert_source + + +@pytest.mark.parametrize( + "client_class,transport_class,transport_name", + [ + ( + ConversationDatasetsClient, + transports.ConversationDatasetsGrpcTransport, + "grpc", + ), + ( + ConversationDatasetsAsyncClient, + transports.ConversationDatasetsGrpcAsyncIOTransport, + "grpc_asyncio", + ), + ], +) +def test_conversation_datasets_client_client_options_scopes( + client_class, transport_class, transport_name +): + # Check the case scopes are provided. + options = client_options.ClientOptions(scopes=["1", "2"],) + with mock.patch.object(transport_class, "__init__") as patched: + patched.return_value = None + client = client_class(client_options=options, transport=transport_name) + patched.assert_called_once_with( + credentials=None, + credentials_file=None, + host=client.DEFAULT_ENDPOINT, + scopes=["1", "2"], + client_cert_source_for_mtls=None, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + ) + + +@pytest.mark.parametrize( + "client_class,transport_class,transport_name,grpc_helpers", + [ + ( + ConversationDatasetsClient, + transports.ConversationDatasetsGrpcTransport, + "grpc", + grpc_helpers, + ), + ( + ConversationDatasetsAsyncClient, + transports.ConversationDatasetsGrpcAsyncIOTransport, + "grpc_asyncio", + grpc_helpers_async, + ), + ], +) +def test_conversation_datasets_client_client_options_credentials_file( + client_class, transport_class, transport_name, grpc_helpers +): + # Check the case credentials file is provided. + options = client_options.ClientOptions(credentials_file="credentials.json") + + with mock.patch.object(transport_class, "__init__") as patched: + patched.return_value = None + client = client_class(client_options=options, transport=transport_name) + patched.assert_called_once_with( + credentials=None, + credentials_file="credentials.json", + host=client.DEFAULT_ENDPOINT, + scopes=None, + client_cert_source_for_mtls=None, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + ) + + +def test_conversation_datasets_client_client_options_from_dict(): + with mock.patch( + "google.cloud.dialogflow_v2.services.conversation_datasets.transports.ConversationDatasetsGrpcTransport.__init__" + ) as grpc_transport: + grpc_transport.return_value = None + client = ConversationDatasetsClient( + client_options={"api_endpoint": "squid.clam.whelk"} + ) + grpc_transport.assert_called_once_with( + credentials=None, + credentials_file=None, + host="squid.clam.whelk", + scopes=None, + client_cert_source_for_mtls=None, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + ) + + +@pytest.mark.parametrize( + "client_class,transport_class,transport_name,grpc_helpers", + [ + ( + ConversationDatasetsClient, + transports.ConversationDatasetsGrpcTransport, + "grpc", + grpc_helpers, + ), + ( + ConversationDatasetsAsyncClient, + transports.ConversationDatasetsGrpcAsyncIOTransport, + "grpc_asyncio", + grpc_helpers_async, + ), + ], +) +def test_conversation_datasets_client_create_channel_credentials_file( + client_class, transport_class, transport_name, grpc_helpers +): + # Check the case credentials file is provided. + options = client_options.ClientOptions(credentials_file="credentials.json") + + with mock.patch.object(transport_class, "__init__") as patched: + patched.return_value = None + client = client_class(client_options=options, transport=transport_name) + patched.assert_called_once_with( + credentials=None, + credentials_file="credentials.json", + host=client.DEFAULT_ENDPOINT, + scopes=None, + client_cert_source_for_mtls=None, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + ) + + # test that the credentials from file are saved and used as the credentials. + with mock.patch.object( + google.auth, "load_credentials_from_file", autospec=True + ) as load_creds, mock.patch.object( + google.auth, "default", autospec=True + ) as adc, mock.patch.object( + grpc_helpers, "create_channel" + ) as create_channel: + creds = ga_credentials.AnonymousCredentials() + file_creds = ga_credentials.AnonymousCredentials() + load_creds.return_value = (file_creds, None) + adc.return_value = (creds, None) + client = client_class(client_options=options, transport=transport_name) + create_channel.assert_called_with( + "dialogflow.googleapis.com:443", + credentials=file_creds, + credentials_file=None, + quota_project_id=None, + default_scopes=( + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/dialogflow", + ), + scopes=None, + default_host="dialogflow.googleapis.com", + ssl_credentials=None, + options=[ + ("grpc.max_send_message_length", -1), + ("grpc.max_receive_message_length", -1), + ], + ) + + +@pytest.mark.parametrize( + "request_type", [gcd_conversation_dataset.CreateConversationDatasetRequest, dict,] +) +def test_create_conversation_dataset(request_type, transport: str = "grpc"): + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_conversation_dataset), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/spam") + response = client.create_conversation_dataset(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == gcd_conversation_dataset.CreateConversationDatasetRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) + + +def test_create_conversation_dataset_empty_call(): + # This test is a coverage failsafe to make sure that totally empty calls, + # i.e. request == None and no flattened fields passed, work. + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="grpc", + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_conversation_dataset), "__call__" + ) as call: + client.create_conversation_dataset() + call.assert_called() + _, args, _ = call.mock_calls[0] + assert args[0] == gcd_conversation_dataset.CreateConversationDatasetRequest() + + +@pytest.mark.asyncio +async def test_create_conversation_dataset_async( + transport: str = "grpc_asyncio", + request_type=gcd_conversation_dataset.CreateConversationDatasetRequest, +): + client = ConversationDatasetsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_conversation_dataset), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + response = await client.create_conversation_dataset(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == gcd_conversation_dataset.CreateConversationDatasetRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) + + +@pytest.mark.asyncio +async def test_create_conversation_dataset_async_from_dict(): + await test_create_conversation_dataset_async(request_type=dict) + + +def test_create_conversation_dataset_field_headers(): + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = gcd_conversation_dataset.CreateConversationDatasetRequest() + + request.parent = "parent/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_conversation_dataset), "__call__" + ) as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.create_conversation_dataset(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ("x-goog-request-params", "parent=parent/value",) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_create_conversation_dataset_field_headers_async(): + client = ConversationDatasetsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = gcd_conversation_dataset.CreateConversationDatasetRequest() + + request.parent = "parent/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_conversation_dataset), "__call__" + ) as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/op") + ) + await client.create_conversation_dataset(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ("x-goog-request-params", "parent=parent/value",) in kw["metadata"] + + +def test_create_conversation_dataset_flattened(): + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_conversation_dataset), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/op") + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + client.create_conversation_dataset( + parent="parent_value", + conversation_dataset=gcd_conversation_dataset.ConversationDataset( + name="name_value" + ), + ) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val + arg = args[0].conversation_dataset + mock_val = gcd_conversation_dataset.ConversationDataset(name="name_value") + assert arg == mock_val + + +def test_create_conversation_dataset_flattened_error(): + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.create_conversation_dataset( + gcd_conversation_dataset.CreateConversationDatasetRequest(), + parent="parent_value", + conversation_dataset=gcd_conversation_dataset.ConversationDataset( + name="name_value" + ), + ) + + +@pytest.mark.asyncio +async def test_create_conversation_dataset_flattened_async(): + client = ConversationDatasetsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_conversation_dataset), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/op") + + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + response = await client.create_conversation_dataset( + parent="parent_value", + conversation_dataset=gcd_conversation_dataset.ConversationDataset( + name="name_value" + ), + ) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val + arg = args[0].conversation_dataset + mock_val = gcd_conversation_dataset.ConversationDataset(name="name_value") + assert arg == mock_val + + +@pytest.mark.asyncio +async def test_create_conversation_dataset_flattened_error_async(): + client = ConversationDatasetsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + await client.create_conversation_dataset( + gcd_conversation_dataset.CreateConversationDatasetRequest(), + parent="parent_value", + conversation_dataset=gcd_conversation_dataset.ConversationDataset( + name="name_value" + ), + ) + + +@pytest.mark.parametrize( + "request_type", [conversation_dataset.GetConversationDatasetRequest, dict,] +) +def test_get_conversation_dataset(request_type, transport: str = "grpc"): + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_conversation_dataset), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = conversation_dataset.ConversationDataset( + name="name_value", + display_name="display_name_value", + description="description_value", + conversation_count=1955, + ) + response = client.get_conversation_dataset(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_dataset.GetConversationDatasetRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, conversation_dataset.ConversationDataset) + assert response.name == "name_value" + assert response.display_name == "display_name_value" + assert response.description == "description_value" + assert response.conversation_count == 1955 + + +def test_get_conversation_dataset_empty_call(): + # This test is a coverage failsafe to make sure that totally empty calls, + # i.e. request == None and no flattened fields passed, work. + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="grpc", + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_conversation_dataset), "__call__" + ) as call: + client.get_conversation_dataset() + call.assert_called() + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_dataset.GetConversationDatasetRequest() + + +@pytest.mark.asyncio +async def test_get_conversation_dataset_async( + transport: str = "grpc_asyncio", + request_type=conversation_dataset.GetConversationDatasetRequest, +): + client = ConversationDatasetsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_conversation_dataset), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + conversation_dataset.ConversationDataset( + name="name_value", + display_name="display_name_value", + description="description_value", + conversation_count=1955, + ) + ) + response = await client.get_conversation_dataset(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_dataset.GetConversationDatasetRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, conversation_dataset.ConversationDataset) + assert response.name == "name_value" + assert response.display_name == "display_name_value" + assert response.description == "description_value" + assert response.conversation_count == 1955 + + +@pytest.mark.asyncio +async def test_get_conversation_dataset_async_from_dict(): + await test_get_conversation_dataset_async(request_type=dict) + + +def test_get_conversation_dataset_field_headers(): + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = conversation_dataset.GetConversationDatasetRequest() + + request.name = "name/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_conversation_dataset), "__call__" + ) as call: + call.return_value = conversation_dataset.ConversationDataset() + client.get_conversation_dataset(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ("x-goog-request-params", "name=name/value",) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_get_conversation_dataset_field_headers_async(): + client = ConversationDatasetsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = conversation_dataset.GetConversationDatasetRequest() + + request.name = "name/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_conversation_dataset), "__call__" + ) as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + conversation_dataset.ConversationDataset() + ) + await client.get_conversation_dataset(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ("x-goog-request-params", "name=name/value",) in kw["metadata"] + + +def test_get_conversation_dataset_flattened(): + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_conversation_dataset), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = conversation_dataset.ConversationDataset() + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + client.get_conversation_dataset(name="name_value",) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val + + +def test_get_conversation_dataset_flattened_error(): + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.get_conversation_dataset( + conversation_dataset.GetConversationDatasetRequest(), name="name_value", + ) + + +@pytest.mark.asyncio +async def test_get_conversation_dataset_flattened_async(): + client = ConversationDatasetsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_conversation_dataset), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = conversation_dataset.ConversationDataset() + + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + conversation_dataset.ConversationDataset() + ) + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + response = await client.get_conversation_dataset(name="name_value",) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val + + +@pytest.mark.asyncio +async def test_get_conversation_dataset_flattened_error_async(): + client = ConversationDatasetsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + await client.get_conversation_dataset( + conversation_dataset.GetConversationDatasetRequest(), name="name_value", + ) + + +@pytest.mark.parametrize( + "request_type", [conversation_dataset.ListConversationDatasetsRequest, dict,] +) +def test_list_conversation_datasets(request_type, transport: str = "grpc"): + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_datasets), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = conversation_dataset.ListConversationDatasetsResponse( + next_page_token="next_page_token_value", + ) + response = client.list_conversation_datasets(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_dataset.ListConversationDatasetsRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, pagers.ListConversationDatasetsPager) + assert response.next_page_token == "next_page_token_value" + + +def test_list_conversation_datasets_empty_call(): + # This test is a coverage failsafe to make sure that totally empty calls, + # i.e. request == None and no flattened fields passed, work. + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="grpc", + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_datasets), "__call__" + ) as call: + client.list_conversation_datasets() + call.assert_called() + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_dataset.ListConversationDatasetsRequest() + + +@pytest.mark.asyncio +async def test_list_conversation_datasets_async( + transport: str = "grpc_asyncio", + request_type=conversation_dataset.ListConversationDatasetsRequest, +): + client = ConversationDatasetsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_datasets), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + conversation_dataset.ListConversationDatasetsResponse( + next_page_token="next_page_token_value", + ) + ) + response = await client.list_conversation_datasets(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_dataset.ListConversationDatasetsRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, pagers.ListConversationDatasetsAsyncPager) + assert response.next_page_token == "next_page_token_value" + + +@pytest.mark.asyncio +async def test_list_conversation_datasets_async_from_dict(): + await test_list_conversation_datasets_async(request_type=dict) + + +def test_list_conversation_datasets_field_headers(): + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = conversation_dataset.ListConversationDatasetsRequest() + + request.parent = "parent/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_datasets), "__call__" + ) as call: + call.return_value = conversation_dataset.ListConversationDatasetsResponse() + client.list_conversation_datasets(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ("x-goog-request-params", "parent=parent/value",) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_list_conversation_datasets_field_headers_async(): + client = ConversationDatasetsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = conversation_dataset.ListConversationDatasetsRequest() + + request.parent = "parent/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_datasets), "__call__" + ) as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + conversation_dataset.ListConversationDatasetsResponse() + ) + await client.list_conversation_datasets(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ("x-goog-request-params", "parent=parent/value",) in kw["metadata"] + + +def test_list_conversation_datasets_flattened(): + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_datasets), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = conversation_dataset.ListConversationDatasetsResponse() + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + client.list_conversation_datasets(parent="parent_value",) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val + + +def test_list_conversation_datasets_flattened_error(): + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.list_conversation_datasets( + conversation_dataset.ListConversationDatasetsRequest(), + parent="parent_value", + ) + + +@pytest.mark.asyncio +async def test_list_conversation_datasets_flattened_async(): + client = ConversationDatasetsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_datasets), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = conversation_dataset.ListConversationDatasetsResponse() + + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + conversation_dataset.ListConversationDatasetsResponse() + ) + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + response = await client.list_conversation_datasets(parent="parent_value",) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val + + +@pytest.mark.asyncio +async def test_list_conversation_datasets_flattened_error_async(): + client = ConversationDatasetsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + await client.list_conversation_datasets( + conversation_dataset.ListConversationDatasetsRequest(), + parent="parent_value", + ) + + +def test_list_conversation_datasets_pager(transport_name: str = "grpc"): + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials, transport=transport_name, + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_datasets), "__call__" + ) as call: + # Set the response to a series of pages. + call.side_effect = ( + conversation_dataset.ListConversationDatasetsResponse( + conversation_datasets=[ + conversation_dataset.ConversationDataset(), + conversation_dataset.ConversationDataset(), + conversation_dataset.ConversationDataset(), + ], + next_page_token="abc", + ), + conversation_dataset.ListConversationDatasetsResponse( + conversation_datasets=[], next_page_token="def", + ), + conversation_dataset.ListConversationDatasetsResponse( + conversation_datasets=[conversation_dataset.ConversationDataset(),], + next_page_token="ghi", + ), + conversation_dataset.ListConversationDatasetsResponse( + conversation_datasets=[ + conversation_dataset.ConversationDataset(), + conversation_dataset.ConversationDataset(), + ], + ), + RuntimeError, + ) + + metadata = () + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", ""),)), + ) + pager = client.list_conversation_datasets(request={}) + + assert pager._metadata == metadata + + results = [i for i in pager] + assert len(results) == 6 + assert all( + isinstance(i, conversation_dataset.ConversationDataset) for i in results + ) + + +def test_list_conversation_datasets_pages(transport_name: str = "grpc"): + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials, transport=transport_name, + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_datasets), "__call__" + ) as call: + # Set the response to a series of pages. + call.side_effect = ( + conversation_dataset.ListConversationDatasetsResponse( + conversation_datasets=[ + conversation_dataset.ConversationDataset(), + conversation_dataset.ConversationDataset(), + conversation_dataset.ConversationDataset(), + ], + next_page_token="abc", + ), + conversation_dataset.ListConversationDatasetsResponse( + conversation_datasets=[], next_page_token="def", + ), + conversation_dataset.ListConversationDatasetsResponse( + conversation_datasets=[conversation_dataset.ConversationDataset(),], + next_page_token="ghi", + ), + conversation_dataset.ListConversationDatasetsResponse( + conversation_datasets=[ + conversation_dataset.ConversationDataset(), + conversation_dataset.ConversationDataset(), + ], + ), + RuntimeError, + ) + pages = list(client.list_conversation_datasets(request={}).pages) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token + + +@pytest.mark.asyncio +async def test_list_conversation_datasets_async_pager(): + client = ConversationDatasetsAsyncClient( + credentials=ga_credentials.AnonymousCredentials, + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_datasets), + "__call__", + new_callable=mock.AsyncMock, + ) as call: + # Set the response to a series of pages. + call.side_effect = ( + conversation_dataset.ListConversationDatasetsResponse( + conversation_datasets=[ + conversation_dataset.ConversationDataset(), + conversation_dataset.ConversationDataset(), + conversation_dataset.ConversationDataset(), + ], + next_page_token="abc", + ), + conversation_dataset.ListConversationDatasetsResponse( + conversation_datasets=[], next_page_token="def", + ), + conversation_dataset.ListConversationDatasetsResponse( + conversation_datasets=[conversation_dataset.ConversationDataset(),], + next_page_token="ghi", + ), + conversation_dataset.ListConversationDatasetsResponse( + conversation_datasets=[ + conversation_dataset.ConversationDataset(), + conversation_dataset.ConversationDataset(), + ], + ), + RuntimeError, + ) + async_pager = await client.list_conversation_datasets(request={},) + assert async_pager.next_page_token == "abc" + responses = [] + async for response in async_pager: + responses.append(response) + + assert len(responses) == 6 + assert all( + isinstance(i, conversation_dataset.ConversationDataset) for i in responses + ) + + +@pytest.mark.asyncio +async def test_list_conversation_datasets_async_pages(): + client = ConversationDatasetsAsyncClient( + credentials=ga_credentials.AnonymousCredentials, + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_datasets), + "__call__", + new_callable=mock.AsyncMock, + ) as call: + # Set the response to a series of pages. + call.side_effect = ( + conversation_dataset.ListConversationDatasetsResponse( + conversation_datasets=[ + conversation_dataset.ConversationDataset(), + conversation_dataset.ConversationDataset(), + conversation_dataset.ConversationDataset(), + ], + next_page_token="abc", + ), + conversation_dataset.ListConversationDatasetsResponse( + conversation_datasets=[], next_page_token="def", + ), + conversation_dataset.ListConversationDatasetsResponse( + conversation_datasets=[conversation_dataset.ConversationDataset(),], + next_page_token="ghi", + ), + conversation_dataset.ListConversationDatasetsResponse( + conversation_datasets=[ + conversation_dataset.ConversationDataset(), + conversation_dataset.ConversationDataset(), + ], + ), + RuntimeError, + ) + pages = [] + async for page_ in (await client.list_conversation_datasets(request={})).pages: + pages.append(page_) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token + + +@pytest.mark.parametrize( + "request_type", [conversation_dataset.DeleteConversationDatasetRequest, dict,] +) +def test_delete_conversation_dataset(request_type, transport: str = "grpc"): + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_conversation_dataset), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/spam") + response = client.delete_conversation_dataset(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_dataset.DeleteConversationDatasetRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) + + +def test_delete_conversation_dataset_empty_call(): + # This test is a coverage failsafe to make sure that totally empty calls, + # i.e. request == None and no flattened fields passed, work. + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="grpc", + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_conversation_dataset), "__call__" + ) as call: + client.delete_conversation_dataset() + call.assert_called() + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_dataset.DeleteConversationDatasetRequest() + + +@pytest.mark.asyncio +async def test_delete_conversation_dataset_async( + transport: str = "grpc_asyncio", + request_type=conversation_dataset.DeleteConversationDatasetRequest, +): + client = ConversationDatasetsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_conversation_dataset), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + response = await client.delete_conversation_dataset(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_dataset.DeleteConversationDatasetRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) + + +@pytest.mark.asyncio +async def test_delete_conversation_dataset_async_from_dict(): + await test_delete_conversation_dataset_async(request_type=dict) + + +def test_delete_conversation_dataset_field_headers(): + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = conversation_dataset.DeleteConversationDatasetRequest() + + request.name = "name/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_conversation_dataset), "__call__" + ) as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.delete_conversation_dataset(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ("x-goog-request-params", "name=name/value",) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_delete_conversation_dataset_field_headers_async(): + client = ConversationDatasetsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = conversation_dataset.DeleteConversationDatasetRequest() + + request.name = "name/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_conversation_dataset), "__call__" + ) as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/op") + ) + await client.delete_conversation_dataset(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ("x-goog-request-params", "name=name/value",) in kw["metadata"] + + +def test_delete_conversation_dataset_flattened(): + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_conversation_dataset), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/op") + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + client.delete_conversation_dataset(name="name_value",) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val + + +def test_delete_conversation_dataset_flattened_error(): + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.delete_conversation_dataset( + conversation_dataset.DeleteConversationDatasetRequest(), name="name_value", + ) + + +@pytest.mark.asyncio +async def test_delete_conversation_dataset_flattened_async(): + client = ConversationDatasetsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_conversation_dataset), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/op") + + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + response = await client.delete_conversation_dataset(name="name_value",) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val + + +@pytest.mark.asyncio +async def test_delete_conversation_dataset_flattened_error_async(): + client = ConversationDatasetsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + await client.delete_conversation_dataset( + conversation_dataset.DeleteConversationDatasetRequest(), name="name_value", + ) + + +@pytest.mark.parametrize( + "request_type", [conversation_dataset.ImportConversationDataRequest, dict,] +) +def test_import_conversation_data(request_type, transport: str = "grpc"): + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.import_conversation_data), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/spam") + response = client.import_conversation_data(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_dataset.ImportConversationDataRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) + + +def test_import_conversation_data_empty_call(): + # This test is a coverage failsafe to make sure that totally empty calls, + # i.e. request == None and no flattened fields passed, work. + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="grpc", + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.import_conversation_data), "__call__" + ) as call: + client.import_conversation_data() + call.assert_called() + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_dataset.ImportConversationDataRequest() + + +@pytest.mark.asyncio +async def test_import_conversation_data_async( + transport: str = "grpc_asyncio", + request_type=conversation_dataset.ImportConversationDataRequest, +): + client = ConversationDatasetsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.import_conversation_data), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + response = await client.import_conversation_data(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_dataset.ImportConversationDataRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) + + +@pytest.mark.asyncio +async def test_import_conversation_data_async_from_dict(): + await test_import_conversation_data_async(request_type=dict) + + +def test_import_conversation_data_field_headers(): + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = conversation_dataset.ImportConversationDataRequest() + + request.name = "name/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.import_conversation_data), "__call__" + ) as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.import_conversation_data(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ("x-goog-request-params", "name=name/value",) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_import_conversation_data_field_headers_async(): + client = ConversationDatasetsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = conversation_dataset.ImportConversationDataRequest() + + request.name = "name/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.import_conversation_data), "__call__" + ) as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/op") + ) + await client.import_conversation_data(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ("x-goog-request-params", "name=name/value",) in kw["metadata"] + + +def test_credentials_transport_error(): + # It is an error to provide credentials and a transport instance. + transport = transports.ConversationDatasetsGrpcTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # It is an error to provide a credentials file and a transport instance. + transport = transports.ConversationDatasetsGrpcTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = ConversationDatasetsClient( + client_options={"credentials_file": "credentials.json"}, + transport=transport, + ) + + # It is an error to provide an api_key and a transport instance. + transport = transports.ConversationDatasetsGrpcTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + options = client_options.ClientOptions() + options.api_key = "api_key" + with pytest.raises(ValueError): + client = ConversationDatasetsClient( + client_options=options, transport=transport, + ) + + # It is an error to provide an api_key and a credential. + options = mock.Mock() + options.api_key = "api_key" + with pytest.raises(ValueError): + client = ConversationDatasetsClient( + client_options=options, credentials=ga_credentials.AnonymousCredentials() + ) + + # It is an error to provide scopes and a transport instance. + transport = transports.ConversationDatasetsGrpcTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = ConversationDatasetsClient( + client_options={"scopes": ["1", "2"]}, transport=transport, + ) + + +def test_transport_instance(): + # A client may be instantiated with a custom transport instance. + transport = transports.ConversationDatasetsGrpcTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + client = ConversationDatasetsClient(transport=transport) + assert client.transport is transport + + +def test_transport_get_channel(): + # A client may be instantiated with a custom transport instance. + transport = transports.ConversationDatasetsGrpcTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + channel = transport.grpc_channel + assert channel + + transport = transports.ConversationDatasetsGrpcAsyncIOTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + channel = transport.grpc_channel + assert channel + + +@pytest.mark.parametrize( + "transport_class", + [ + transports.ConversationDatasetsGrpcTransport, + transports.ConversationDatasetsGrpcAsyncIOTransport, + ], +) +def test_transport_adc(transport_class): + # Test default credentials are used if not provided. + with mock.patch.object(google.auth, "default") as adc: + adc.return_value = (ga_credentials.AnonymousCredentials(), None) + transport_class() + adc.assert_called_once() + + +def test_transport_grpc_default(): + # A client should use the gRPC transport by default. + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + assert isinstance(client.transport, transports.ConversationDatasetsGrpcTransport,) + + +def test_conversation_datasets_base_transport_error(): + # Passing both a credentials object and credentials_file should raise an error + with pytest.raises(core_exceptions.DuplicateCredentialArgs): + transport = transports.ConversationDatasetsTransport( + credentials=ga_credentials.AnonymousCredentials(), + credentials_file="credentials.json", + ) + + +def test_conversation_datasets_base_transport(): + # Instantiate the base transport. + with mock.patch( + "google.cloud.dialogflow_v2.services.conversation_datasets.transports.ConversationDatasetsTransport.__init__" + ) as Transport: + Transport.return_value = None + transport = transports.ConversationDatasetsTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Every method on the transport should just blindly + # raise NotImplementedError. + methods = ( + "create_conversation_dataset", + "get_conversation_dataset", + "list_conversation_datasets", + "delete_conversation_dataset", + "import_conversation_data", + ) + for method in methods: + with pytest.raises(NotImplementedError): + getattr(transport, method)(request=object()) + + with pytest.raises(NotImplementedError): + transport.close() + + # Additionally, the LRO client (a property) should + # also raise NotImplementedError + with pytest.raises(NotImplementedError): + transport.operations_client + + +def test_conversation_datasets_base_transport_with_credentials_file(): + # Instantiate the base transport with a credentials file + with mock.patch.object( + google.auth, "load_credentials_from_file", autospec=True + ) as load_creds, mock.patch( + "google.cloud.dialogflow_v2.services.conversation_datasets.transports.ConversationDatasetsTransport._prep_wrapped_messages" + ) as Transport: + Transport.return_value = None + load_creds.return_value = (ga_credentials.AnonymousCredentials(), None) + transport = transports.ConversationDatasetsTransport( + credentials_file="credentials.json", quota_project_id="octopus", + ) + load_creds.assert_called_once_with( + "credentials.json", + scopes=None, + default_scopes=( + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/dialogflow", + ), + quota_project_id="octopus", + ) + + +def test_conversation_datasets_base_transport_with_adc(): + # Test the default credentials are used if credentials and credentials_file are None. + with mock.patch.object(google.auth, "default", autospec=True) as adc, mock.patch( + "google.cloud.dialogflow_v2.services.conversation_datasets.transports.ConversationDatasetsTransport._prep_wrapped_messages" + ) as Transport: + Transport.return_value = None + adc.return_value = (ga_credentials.AnonymousCredentials(), None) + transport = transports.ConversationDatasetsTransport() + adc.assert_called_once() + + +def test_conversation_datasets_auth_adc(): + # If no credentials are provided, we should use ADC credentials. + with mock.patch.object(google.auth, "default", autospec=True) as adc: + adc.return_value = (ga_credentials.AnonymousCredentials(), None) + ConversationDatasetsClient() + adc.assert_called_once_with( + scopes=None, + default_scopes=( + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/dialogflow", + ), + quota_project_id=None, + ) + + +@pytest.mark.parametrize( + "transport_class", + [ + transports.ConversationDatasetsGrpcTransport, + transports.ConversationDatasetsGrpcAsyncIOTransport, + ], +) +def test_conversation_datasets_transport_auth_adc(transport_class): + # If credentials and host are not provided, the transport class should use + # ADC credentials. + with mock.patch.object(google.auth, "default", autospec=True) as adc: + adc.return_value = (ga_credentials.AnonymousCredentials(), None) + transport_class(quota_project_id="octopus", scopes=["1", "2"]) + adc.assert_called_once_with( + scopes=["1", "2"], + default_scopes=( + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/dialogflow", + ), + quota_project_id="octopus", + ) + + +@pytest.mark.parametrize( + "transport_class,grpc_helpers", + [ + (transports.ConversationDatasetsGrpcTransport, grpc_helpers), + (transports.ConversationDatasetsGrpcAsyncIOTransport, grpc_helpers_async), + ], +) +def test_conversation_datasets_transport_create_channel(transport_class, grpc_helpers): + # If credentials and host are not provided, the transport class should use + # ADC credentials. + with mock.patch.object( + google.auth, "default", autospec=True + ) as adc, mock.patch.object( + grpc_helpers, "create_channel", autospec=True + ) as create_channel: + creds = ga_credentials.AnonymousCredentials() + adc.return_value = (creds, None) + transport_class(quota_project_id="octopus", scopes=["1", "2"]) + + create_channel.assert_called_with( + "dialogflow.googleapis.com:443", + credentials=creds, + credentials_file=None, + quota_project_id="octopus", + default_scopes=( + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/dialogflow", + ), + scopes=["1", "2"], + default_host="dialogflow.googleapis.com", + ssl_credentials=None, + options=[ + ("grpc.max_send_message_length", -1), + ("grpc.max_receive_message_length", -1), + ], + ) + + +@pytest.mark.parametrize( + "transport_class", + [ + transports.ConversationDatasetsGrpcTransport, + transports.ConversationDatasetsGrpcAsyncIOTransport, + ], +) +def test_conversation_datasets_grpc_transport_client_cert_source_for_mtls( + transport_class, +): + cred = ga_credentials.AnonymousCredentials() + + # Check ssl_channel_credentials is used if provided. + with mock.patch.object(transport_class, "create_channel") as mock_create_channel: + mock_ssl_channel_creds = mock.Mock() + transport_class( + host="squid.clam.whelk", + credentials=cred, + ssl_channel_credentials=mock_ssl_channel_creds, + ) + mock_create_channel.assert_called_once_with( + "squid.clam.whelk:443", + credentials=cred, + credentials_file=None, + scopes=None, + ssl_credentials=mock_ssl_channel_creds, + quota_project_id=None, + options=[ + ("grpc.max_send_message_length", -1), + ("grpc.max_receive_message_length", -1), + ], + ) + + # Check if ssl_channel_credentials is not provided, then client_cert_source_for_mtls + # is used. + with mock.patch.object(transport_class, "create_channel", return_value=mock.Mock()): + with mock.patch("grpc.ssl_channel_credentials") as mock_ssl_cred: + transport_class( + credentials=cred, + client_cert_source_for_mtls=client_cert_source_callback, + ) + expected_cert, expected_key = client_cert_source_callback() + mock_ssl_cred.assert_called_once_with( + certificate_chain=expected_cert, private_key=expected_key + ) + + +def test_conversation_datasets_host_no_port(): + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), + client_options=client_options.ClientOptions( + api_endpoint="dialogflow.googleapis.com" + ), + ) + assert client.transport._host == "dialogflow.googleapis.com:443" + + +def test_conversation_datasets_host_with_port(): + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), + client_options=client_options.ClientOptions( + api_endpoint="dialogflow.googleapis.com:8000" + ), + ) + assert client.transport._host == "dialogflow.googleapis.com:8000" + + +def test_conversation_datasets_grpc_transport_channel(): + channel = grpc.secure_channel("http://localhost/", grpc.local_channel_credentials()) + + # Check that channel is used if provided. + transport = transports.ConversationDatasetsGrpcTransport( + host="squid.clam.whelk", channel=channel, + ) + assert transport.grpc_channel == channel + assert transport._host == "squid.clam.whelk:443" + assert transport._ssl_channel_credentials == None + + +def test_conversation_datasets_grpc_asyncio_transport_channel(): + channel = aio.secure_channel("http://localhost/", grpc.local_channel_credentials()) + + # Check that channel is used if provided. + transport = transports.ConversationDatasetsGrpcAsyncIOTransport( + host="squid.clam.whelk", channel=channel, + ) + assert transport.grpc_channel == channel + assert transport._host == "squid.clam.whelk:443" + assert transport._ssl_channel_credentials == None + + +# Remove this test when deprecated arguments (api_mtls_endpoint, client_cert_source) are +# removed from grpc/grpc_asyncio transport constructor. +@pytest.mark.parametrize( + "transport_class", + [ + transports.ConversationDatasetsGrpcTransport, + transports.ConversationDatasetsGrpcAsyncIOTransport, + ], +) +def test_conversation_datasets_transport_channel_mtls_with_client_cert_source( + transport_class, +): + with mock.patch( + "grpc.ssl_channel_credentials", autospec=True + ) as grpc_ssl_channel_cred: + with mock.patch.object( + transport_class, "create_channel" + ) as grpc_create_channel: + mock_ssl_cred = mock.Mock() + grpc_ssl_channel_cred.return_value = mock_ssl_cred + + mock_grpc_channel = mock.Mock() + grpc_create_channel.return_value = mock_grpc_channel + + cred = ga_credentials.AnonymousCredentials() + with pytest.warns(DeprecationWarning): + with mock.patch.object(google.auth, "default") as adc: + adc.return_value = (cred, None) + transport = transport_class( + host="squid.clam.whelk", + api_mtls_endpoint="mtls.squid.clam.whelk", + client_cert_source=client_cert_source_callback, + ) + adc.assert_called_once() + + grpc_ssl_channel_cred.assert_called_once_with( + certificate_chain=b"cert bytes", private_key=b"key bytes" + ) + grpc_create_channel.assert_called_once_with( + "mtls.squid.clam.whelk:443", + credentials=cred, + credentials_file=None, + scopes=None, + ssl_credentials=mock_ssl_cred, + quota_project_id=None, + options=[ + ("grpc.max_send_message_length", -1), + ("grpc.max_receive_message_length", -1), + ], + ) + assert transport.grpc_channel == mock_grpc_channel + assert transport._ssl_channel_credentials == mock_ssl_cred + + +# Remove this test when deprecated arguments (api_mtls_endpoint, client_cert_source) are +# removed from grpc/grpc_asyncio transport constructor. +@pytest.mark.parametrize( + "transport_class", + [ + transports.ConversationDatasetsGrpcTransport, + transports.ConversationDatasetsGrpcAsyncIOTransport, + ], +) +def test_conversation_datasets_transport_channel_mtls_with_adc(transport_class): + mock_ssl_cred = mock.Mock() + with mock.patch.multiple( + "google.auth.transport.grpc.SslCredentials", + __init__=mock.Mock(return_value=None), + ssl_credentials=mock.PropertyMock(return_value=mock_ssl_cred), + ): + with mock.patch.object( + transport_class, "create_channel" + ) as grpc_create_channel: + mock_grpc_channel = mock.Mock() + grpc_create_channel.return_value = mock_grpc_channel + mock_cred = mock.Mock() + + with pytest.warns(DeprecationWarning): + transport = transport_class( + host="squid.clam.whelk", + credentials=mock_cred, + api_mtls_endpoint="mtls.squid.clam.whelk", + client_cert_source=None, + ) + + grpc_create_channel.assert_called_once_with( + "mtls.squid.clam.whelk:443", + credentials=mock_cred, + credentials_file=None, + scopes=None, + ssl_credentials=mock_ssl_cred, + quota_project_id=None, + options=[ + ("grpc.max_send_message_length", -1), + ("grpc.max_receive_message_length", -1), + ], + ) + assert transport.grpc_channel == mock_grpc_channel + + +def test_conversation_datasets_grpc_lro_client(): + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="grpc", + ) + transport = client.transport + + # Ensure that we have a api-core operations client. + assert isinstance(transport.operations_client, operations_v1.OperationsClient,) + + # Ensure that subsequent calls to the property send the exact same object. + assert transport.operations_client is transport.operations_client + + +def test_conversation_datasets_grpc_lro_async_client(): + client = ConversationDatasetsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), transport="grpc_asyncio", + ) + transport = client.transport + + # Ensure that we have a api-core operations client. + assert isinstance(transport.operations_client, operations_v1.OperationsAsyncClient,) + + # Ensure that subsequent calls to the property send the exact same object. + assert transport.operations_client is transport.operations_client + + +def test_conversation_dataset_path(): + project = "squid" + location = "clam" + conversation_dataset = "whelk" + expected = "projects/{project}/locations/{location}/conversationDatasets/{conversation_dataset}".format( + project=project, location=location, conversation_dataset=conversation_dataset, + ) + actual = ConversationDatasetsClient.conversation_dataset_path( + project, location, conversation_dataset + ) + assert expected == actual + + +def test_parse_conversation_dataset_path(): + expected = { + "project": "octopus", + "location": "oyster", + "conversation_dataset": "nudibranch", + } + path = ConversationDatasetsClient.conversation_dataset_path(**expected) + + # Check that the path construction is reversible. + actual = ConversationDatasetsClient.parse_conversation_dataset_path(path) + assert expected == actual + + +def test_common_billing_account_path(): + billing_account = "cuttlefish" + expected = "billingAccounts/{billing_account}".format( + billing_account=billing_account, + ) + actual = ConversationDatasetsClient.common_billing_account_path(billing_account) + assert expected == actual + + +def test_parse_common_billing_account_path(): + expected = { + "billing_account": "mussel", + } + path = ConversationDatasetsClient.common_billing_account_path(**expected) + + # Check that the path construction is reversible. + actual = ConversationDatasetsClient.parse_common_billing_account_path(path) + assert expected == actual + + +def test_common_folder_path(): + folder = "winkle" + expected = "folders/{folder}".format(folder=folder,) + actual = ConversationDatasetsClient.common_folder_path(folder) + assert expected == actual + + +def test_parse_common_folder_path(): + expected = { + "folder": "nautilus", + } + path = ConversationDatasetsClient.common_folder_path(**expected) + + # Check that the path construction is reversible. + actual = ConversationDatasetsClient.parse_common_folder_path(path) + assert expected == actual + + +def test_common_organization_path(): + organization = "scallop" + expected = "organizations/{organization}".format(organization=organization,) + actual = ConversationDatasetsClient.common_organization_path(organization) + assert expected == actual + + +def test_parse_common_organization_path(): + expected = { + "organization": "abalone", + } + path = ConversationDatasetsClient.common_organization_path(**expected) + + # Check that the path construction is reversible. + actual = ConversationDatasetsClient.parse_common_organization_path(path) + assert expected == actual + + +def test_common_project_path(): + project = "squid" + expected = "projects/{project}".format(project=project,) + actual = ConversationDatasetsClient.common_project_path(project) + assert expected == actual + + +def test_parse_common_project_path(): + expected = { + "project": "clam", + } + path = ConversationDatasetsClient.common_project_path(**expected) + + # Check that the path construction is reversible. + actual = ConversationDatasetsClient.parse_common_project_path(path) + assert expected == actual + + +def test_common_location_path(): + project = "whelk" + location = "octopus" + expected = "projects/{project}/locations/{location}".format( + project=project, location=location, + ) + actual = ConversationDatasetsClient.common_location_path(project, location) + assert expected == actual + + +def test_parse_common_location_path(): + expected = { + "project": "oyster", + "location": "nudibranch", + } + path = ConversationDatasetsClient.common_location_path(**expected) + + # Check that the path construction is reversible. + actual = ConversationDatasetsClient.parse_common_location_path(path) + assert expected == actual + + +def test_client_with_default_client_info(): + client_info = gapic_v1.client_info.ClientInfo() + + with mock.patch.object( + transports.ConversationDatasetsTransport, "_prep_wrapped_messages" + ) as prep: + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), client_info=client_info, + ) + prep.assert_called_once_with(client_info) + + with mock.patch.object( + transports.ConversationDatasetsTransport, "_prep_wrapped_messages" + ) as prep: + transport_class = ConversationDatasetsClient.get_transport_class() + transport = transport_class( + credentials=ga_credentials.AnonymousCredentials(), client_info=client_info, + ) + prep.assert_called_once_with(client_info) + + +@pytest.mark.asyncio +async def test_transport_close_async(): + client = ConversationDatasetsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), transport="grpc_asyncio", + ) + with mock.patch.object( + type(getattr(client.transport, "grpc_channel")), "close" + ) as close: + async with client: + close.assert_not_called() + close.assert_called_once() + + +def test_transport_close(): + transports = { + "grpc": "_grpc_channel", + } + + for transport, close_name in transports.items(): + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport + ) + with mock.patch.object( + type(getattr(client.transport, close_name)), "close" + ) as close: + with client: + close.assert_not_called() + close.assert_called_once() + + +def test_client_ctx(): + transports = [ + "grpc", + ] + for transport in transports: + client = ConversationDatasetsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport + ) + # Test client calls underlying transport. + with mock.patch.object(type(client.transport), "close") as close: + close.assert_not_called() + with client: + pass + close.assert_called() + + +@pytest.mark.parametrize( + "client_class,transport_class", + [ + (ConversationDatasetsClient, transports.ConversationDatasetsGrpcTransport), + ( + ConversationDatasetsAsyncClient, + transports.ConversationDatasetsGrpcAsyncIOTransport, + ), + ], +) +def test_api_key_credentials(client_class, transport_class): + with mock.patch.object( + google.auth._default, "get_api_key_credentials", create=True + ) as get_api_key_credentials: + mock_cred = mock.Mock() + get_api_key_credentials.return_value = mock_cred + options = client_options.ClientOptions() + options.api_key = "api_key" + with mock.patch.object(transport_class, "__init__") as patched: + patched.return_value = None + client = client_class(client_options=options) + patched.assert_called_once_with( + credentials=mock_cred, + credentials_file=None, + host=client.DEFAULT_ENDPOINT, + scopes=None, + client_cert_source_for_mtls=None, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + ) diff --git a/tests/unit/gapic/dialogflow_v2/test_conversation_models.py b/tests/unit/gapic/dialogflow_v2/test_conversation_models.py new file mode 100644 index 000000000..337c9455e --- /dev/null +++ b/tests/unit/gapic/dialogflow_v2/test_conversation_models.py @@ -0,0 +1,3737 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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 mock + +import grpc +from grpc.experimental import aio +import math +import pytest +from proto.marshal.rules.dates import DurationRule, TimestampRule + + +from google.api_core import client_options +from google.api_core import exceptions as core_exceptions +from google.api_core import future +from google.api_core import gapic_v1 +from google.api_core import grpc_helpers +from google.api_core import grpc_helpers_async +from google.api_core import operation +from google.api_core import operation_async # type: ignore +from google.api_core import operations_v1 +from google.api_core import path_template +from google.auth import credentials as ga_credentials +from google.auth.exceptions import MutualTLSChannelError +from google.cloud.dialogflow_v2.services.conversation_models import ( + ConversationModelsAsyncClient, +) +from google.cloud.dialogflow_v2.services.conversation_models import ( + ConversationModelsClient, +) +from google.cloud.dialogflow_v2.services.conversation_models import pagers +from google.cloud.dialogflow_v2.services.conversation_models import transports +from google.cloud.dialogflow_v2.types import conversation_model +from google.cloud.dialogflow_v2.types import ( + conversation_model as gcd_conversation_model, +) +from google.longrunning import operations_pb2 +from google.oauth2 import service_account +from google.protobuf import timestamp_pb2 # type: ignore +import google.auth + + +def client_cert_source_callback(): + return b"cert bytes", b"key bytes" + + +# If default endpoint is localhost, then default mtls endpoint will be the same. +# This method modifies the default endpoint so the client can produce a different +# mtls endpoint for endpoint testing purposes. +def modify_default_endpoint(client): + return ( + "foo.googleapis.com" + if ("localhost" in client.DEFAULT_ENDPOINT) + else client.DEFAULT_ENDPOINT + ) + + +def test__get_default_mtls_endpoint(): + api_endpoint = "example.googleapis.com" + api_mtls_endpoint = "example.mtls.googleapis.com" + sandbox_endpoint = "example.sandbox.googleapis.com" + sandbox_mtls_endpoint = "example.mtls.sandbox.googleapis.com" + non_googleapi = "api.example.com" + + assert ConversationModelsClient._get_default_mtls_endpoint(None) is None + assert ( + ConversationModelsClient._get_default_mtls_endpoint(api_endpoint) + == api_mtls_endpoint + ) + assert ( + ConversationModelsClient._get_default_mtls_endpoint(api_mtls_endpoint) + == api_mtls_endpoint + ) + assert ( + ConversationModelsClient._get_default_mtls_endpoint(sandbox_endpoint) + == sandbox_mtls_endpoint + ) + assert ( + ConversationModelsClient._get_default_mtls_endpoint(sandbox_mtls_endpoint) + == sandbox_mtls_endpoint + ) + assert ( + ConversationModelsClient._get_default_mtls_endpoint(non_googleapi) + == non_googleapi + ) + + +@pytest.mark.parametrize( + "client_class", [ConversationModelsClient, ConversationModelsAsyncClient,] +) +def test_conversation_models_client_from_service_account_info(client_class): + creds = ga_credentials.AnonymousCredentials() + with mock.patch.object( + service_account.Credentials, "from_service_account_info" + ) as factory: + factory.return_value = creds + info = {"valid": True} + client = client_class.from_service_account_info(info) + assert client.transport._credentials == creds + assert isinstance(client, client_class) + + assert client.transport._host == "dialogflow.googleapis.com:443" + + +@pytest.mark.parametrize( + "transport_class,transport_name", + [ + (transports.ConversationModelsGrpcTransport, "grpc"), + (transports.ConversationModelsGrpcAsyncIOTransport, "grpc_asyncio"), + ], +) +def test_conversation_models_client_service_account_always_use_jwt( + transport_class, transport_name +): + with mock.patch.object( + service_account.Credentials, "with_always_use_jwt_access", create=True + ) as use_jwt: + creds = service_account.Credentials(None, None, None) + transport = transport_class(credentials=creds, always_use_jwt_access=True) + use_jwt.assert_called_once_with(True) + + with mock.patch.object( + service_account.Credentials, "with_always_use_jwt_access", create=True + ) as use_jwt: + creds = service_account.Credentials(None, None, None) + transport = transport_class(credentials=creds, always_use_jwt_access=False) + use_jwt.assert_not_called() + + +@pytest.mark.parametrize( + "client_class", [ConversationModelsClient, ConversationModelsAsyncClient,] +) +def test_conversation_models_client_from_service_account_file(client_class): + creds = ga_credentials.AnonymousCredentials() + with mock.patch.object( + service_account.Credentials, "from_service_account_file" + ) as factory: + factory.return_value = creds + client = client_class.from_service_account_file("dummy/file/path.json") + assert client.transport._credentials == creds + assert isinstance(client, client_class) + + client = client_class.from_service_account_json("dummy/file/path.json") + assert client.transport._credentials == creds + assert isinstance(client, client_class) + + assert client.transport._host == "dialogflow.googleapis.com:443" + + +def test_conversation_models_client_get_transport_class(): + transport = ConversationModelsClient.get_transport_class() + available_transports = [ + transports.ConversationModelsGrpcTransport, + ] + assert transport in available_transports + + transport = ConversationModelsClient.get_transport_class("grpc") + assert transport == transports.ConversationModelsGrpcTransport + + +@pytest.mark.parametrize( + "client_class,transport_class,transport_name", + [ + (ConversationModelsClient, transports.ConversationModelsGrpcTransport, "grpc"), + ( + ConversationModelsAsyncClient, + transports.ConversationModelsGrpcAsyncIOTransport, + "grpc_asyncio", + ), + ], +) +@mock.patch.object( + ConversationModelsClient, + "DEFAULT_ENDPOINT", + modify_default_endpoint(ConversationModelsClient), +) +@mock.patch.object( + ConversationModelsAsyncClient, + "DEFAULT_ENDPOINT", + modify_default_endpoint(ConversationModelsAsyncClient), +) +def test_conversation_models_client_client_options( + client_class, transport_class, transport_name +): + # Check that if channel is provided we won't create a new one. + with mock.patch.object(ConversationModelsClient, "get_transport_class") as gtc: + transport = transport_class(credentials=ga_credentials.AnonymousCredentials()) + client = client_class(transport=transport) + gtc.assert_not_called() + + # Check that if channel is provided via str we will create a new one. + with mock.patch.object(ConversationModelsClient, "get_transport_class") as gtc: + client = client_class(transport=transport_name) + gtc.assert_called() + + # Check the case api_endpoint is provided. + options = client_options.ClientOptions(api_endpoint="squid.clam.whelk") + with mock.patch.object(transport_class, "__init__") as patched: + patched.return_value = None + client = client_class(transport=transport_name, client_options=options) + patched.assert_called_once_with( + credentials=None, + credentials_file=None, + host="squid.clam.whelk", + scopes=None, + client_cert_source_for_mtls=None, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + ) + + # Check the case api_endpoint is not provided and GOOGLE_API_USE_MTLS_ENDPOINT is + # "never". + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "never"}): + with mock.patch.object(transport_class, "__init__") as patched: + patched.return_value = None + client = client_class(transport=transport_name) + patched.assert_called_once_with( + credentials=None, + credentials_file=None, + host=client.DEFAULT_ENDPOINT, + scopes=None, + client_cert_source_for_mtls=None, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + ) + + # Check the case api_endpoint is not provided and GOOGLE_API_USE_MTLS_ENDPOINT is + # "always". + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "always"}): + with mock.patch.object(transport_class, "__init__") as patched: + patched.return_value = None + client = client_class(transport=transport_name) + patched.assert_called_once_with( + credentials=None, + credentials_file=None, + host=client.DEFAULT_MTLS_ENDPOINT, + scopes=None, + client_cert_source_for_mtls=None, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + ) + + # Check the case api_endpoint is not provided and GOOGLE_API_USE_MTLS_ENDPOINT has + # unsupported value. + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "Unsupported"}): + with pytest.raises(MutualTLSChannelError): + client = client_class(transport=transport_name) + + # Check the case GOOGLE_API_USE_CLIENT_CERTIFICATE has unsupported value. + with mock.patch.dict( + os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "Unsupported"} + ): + with pytest.raises(ValueError): + client = client_class(transport=transport_name) + + # Check the case quota_project_id is provided + options = client_options.ClientOptions(quota_project_id="octopus") + with mock.patch.object(transport_class, "__init__") as patched: + patched.return_value = None + client = client_class(client_options=options, transport=transport_name) + patched.assert_called_once_with( + credentials=None, + credentials_file=None, + host=client.DEFAULT_ENDPOINT, + scopes=None, + client_cert_source_for_mtls=None, + quota_project_id="octopus", + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + ) + + +@pytest.mark.parametrize( + "client_class,transport_class,transport_name,use_client_cert_env", + [ + ( + ConversationModelsClient, + transports.ConversationModelsGrpcTransport, + "grpc", + "true", + ), + ( + ConversationModelsAsyncClient, + transports.ConversationModelsGrpcAsyncIOTransport, + "grpc_asyncio", + "true", + ), + ( + ConversationModelsClient, + transports.ConversationModelsGrpcTransport, + "grpc", + "false", + ), + ( + ConversationModelsAsyncClient, + transports.ConversationModelsGrpcAsyncIOTransport, + "grpc_asyncio", + "false", + ), + ], +) +@mock.patch.object( + ConversationModelsClient, + "DEFAULT_ENDPOINT", + modify_default_endpoint(ConversationModelsClient), +) +@mock.patch.object( + ConversationModelsAsyncClient, + "DEFAULT_ENDPOINT", + modify_default_endpoint(ConversationModelsAsyncClient), +) +@mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "auto"}) +def test_conversation_models_client_mtls_env_auto( + client_class, transport_class, transport_name, use_client_cert_env +): + # This tests the endpoint autoswitch behavior. Endpoint is autoswitched to the default + # mtls endpoint, if GOOGLE_API_USE_CLIENT_CERTIFICATE is "true" and client cert exists. + + # Check the case client_cert_source is provided. Whether client cert is used depends on + # GOOGLE_API_USE_CLIENT_CERTIFICATE value. + with mock.patch.dict( + os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": use_client_cert_env} + ): + options = client_options.ClientOptions( + client_cert_source=client_cert_source_callback + ) + with mock.patch.object(transport_class, "__init__") as patched: + patched.return_value = None + client = client_class(client_options=options, transport=transport_name) + + if use_client_cert_env == "false": + expected_client_cert_source = None + expected_host = client.DEFAULT_ENDPOINT + else: + expected_client_cert_source = client_cert_source_callback + expected_host = client.DEFAULT_MTLS_ENDPOINT + + patched.assert_called_once_with( + credentials=None, + credentials_file=None, + host=expected_host, + scopes=None, + client_cert_source_for_mtls=expected_client_cert_source, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + ) + + # Check the case ADC client cert is provided. Whether client cert is used depends on + # GOOGLE_API_USE_CLIENT_CERTIFICATE value. + with mock.patch.dict( + os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": use_client_cert_env} + ): + with mock.patch.object(transport_class, "__init__") as patched: + with mock.patch( + "google.auth.transport.mtls.has_default_client_cert_source", + return_value=True, + ): + with mock.patch( + "google.auth.transport.mtls.default_client_cert_source", + return_value=client_cert_source_callback, + ): + if use_client_cert_env == "false": + expected_host = client.DEFAULT_ENDPOINT + expected_client_cert_source = None + else: + expected_host = client.DEFAULT_MTLS_ENDPOINT + expected_client_cert_source = client_cert_source_callback + + patched.return_value = None + client = client_class(transport=transport_name) + patched.assert_called_once_with( + credentials=None, + credentials_file=None, + host=expected_host, + scopes=None, + client_cert_source_for_mtls=expected_client_cert_source, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + ) + + # Check the case client_cert_source and ADC client cert are not provided. + with mock.patch.dict( + os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": use_client_cert_env} + ): + with mock.patch.object(transport_class, "__init__") as patched: + with mock.patch( + "google.auth.transport.mtls.has_default_client_cert_source", + return_value=False, + ): + patched.return_value = None + client = client_class(transport=transport_name) + patched.assert_called_once_with( + credentials=None, + credentials_file=None, + host=client.DEFAULT_ENDPOINT, + scopes=None, + client_cert_source_for_mtls=None, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + ) + + +@pytest.mark.parametrize( + "client_class", [ConversationModelsClient, ConversationModelsAsyncClient] +) +@mock.patch.object( + ConversationModelsClient, + "DEFAULT_ENDPOINT", + modify_default_endpoint(ConversationModelsClient), +) +@mock.patch.object( + ConversationModelsAsyncClient, + "DEFAULT_ENDPOINT", + modify_default_endpoint(ConversationModelsAsyncClient), +) +def test_conversation_models_client_get_mtls_endpoint_and_cert_source(client_class): + mock_client_cert_source = mock.Mock() + + # Test the case GOOGLE_API_USE_CLIENT_CERTIFICATE is "true". + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "true"}): + mock_api_endpoint = "foo" + options = client_options.ClientOptions( + client_cert_source=mock_client_cert_source, api_endpoint=mock_api_endpoint + ) + api_endpoint, cert_source = client_class.get_mtls_endpoint_and_cert_source( + options + ) + assert api_endpoint == mock_api_endpoint + assert cert_source == mock_client_cert_source + + # Test the case GOOGLE_API_USE_CLIENT_CERTIFICATE is "false". + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "false"}): + mock_client_cert_source = mock.Mock() + mock_api_endpoint = "foo" + options = client_options.ClientOptions( + client_cert_source=mock_client_cert_source, api_endpoint=mock_api_endpoint + ) + api_endpoint, cert_source = client_class.get_mtls_endpoint_and_cert_source( + options + ) + assert api_endpoint == mock_api_endpoint + assert cert_source is None + + # Test the case GOOGLE_API_USE_MTLS_ENDPOINT is "never". + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "never"}): + api_endpoint, cert_source = client_class.get_mtls_endpoint_and_cert_source() + assert api_endpoint == client_class.DEFAULT_ENDPOINT + assert cert_source is None + + # Test the case GOOGLE_API_USE_MTLS_ENDPOINT is "always". + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "always"}): + api_endpoint, cert_source = client_class.get_mtls_endpoint_and_cert_source() + assert api_endpoint == client_class.DEFAULT_MTLS_ENDPOINT + assert cert_source is None + + # Test the case GOOGLE_API_USE_MTLS_ENDPOINT is "auto" and default cert doesn't exist. + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "true"}): + with mock.patch( + "google.auth.transport.mtls.has_default_client_cert_source", + return_value=False, + ): + api_endpoint, cert_source = client_class.get_mtls_endpoint_and_cert_source() + assert api_endpoint == client_class.DEFAULT_ENDPOINT + assert cert_source is None + + # Test the case GOOGLE_API_USE_MTLS_ENDPOINT is "auto" and default cert exists. + with mock.patch.dict(os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "true"}): + with mock.patch( + "google.auth.transport.mtls.has_default_client_cert_source", + return_value=True, + ): + with mock.patch( + "google.auth.transport.mtls.default_client_cert_source", + return_value=mock_client_cert_source, + ): + ( + api_endpoint, + cert_source, + ) = client_class.get_mtls_endpoint_and_cert_source() + assert api_endpoint == client_class.DEFAULT_MTLS_ENDPOINT + assert cert_source == mock_client_cert_source + + +@pytest.mark.parametrize( + "client_class,transport_class,transport_name", + [ + (ConversationModelsClient, transports.ConversationModelsGrpcTransport, "grpc"), + ( + ConversationModelsAsyncClient, + transports.ConversationModelsGrpcAsyncIOTransport, + "grpc_asyncio", + ), + ], +) +def test_conversation_models_client_client_options_scopes( + client_class, transport_class, transport_name +): + # Check the case scopes are provided. + options = client_options.ClientOptions(scopes=["1", "2"],) + with mock.patch.object(transport_class, "__init__") as patched: + patched.return_value = None + client = client_class(client_options=options, transport=transport_name) + patched.assert_called_once_with( + credentials=None, + credentials_file=None, + host=client.DEFAULT_ENDPOINT, + scopes=["1", "2"], + client_cert_source_for_mtls=None, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + ) + + +@pytest.mark.parametrize( + "client_class,transport_class,transport_name,grpc_helpers", + [ + ( + ConversationModelsClient, + transports.ConversationModelsGrpcTransport, + "grpc", + grpc_helpers, + ), + ( + ConversationModelsAsyncClient, + transports.ConversationModelsGrpcAsyncIOTransport, + "grpc_asyncio", + grpc_helpers_async, + ), + ], +) +def test_conversation_models_client_client_options_credentials_file( + client_class, transport_class, transport_name, grpc_helpers +): + # Check the case credentials file is provided. + options = client_options.ClientOptions(credentials_file="credentials.json") + + with mock.patch.object(transport_class, "__init__") as patched: + patched.return_value = None + client = client_class(client_options=options, transport=transport_name) + patched.assert_called_once_with( + credentials=None, + credentials_file="credentials.json", + host=client.DEFAULT_ENDPOINT, + scopes=None, + client_cert_source_for_mtls=None, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + ) + + +def test_conversation_models_client_client_options_from_dict(): + with mock.patch( + "google.cloud.dialogflow_v2.services.conversation_models.transports.ConversationModelsGrpcTransport.__init__" + ) as grpc_transport: + grpc_transport.return_value = None + client = ConversationModelsClient( + client_options={"api_endpoint": "squid.clam.whelk"} + ) + grpc_transport.assert_called_once_with( + credentials=None, + credentials_file=None, + host="squid.clam.whelk", + scopes=None, + client_cert_source_for_mtls=None, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + ) + + +@pytest.mark.parametrize( + "client_class,transport_class,transport_name,grpc_helpers", + [ + ( + ConversationModelsClient, + transports.ConversationModelsGrpcTransport, + "grpc", + grpc_helpers, + ), + ( + ConversationModelsAsyncClient, + transports.ConversationModelsGrpcAsyncIOTransport, + "grpc_asyncio", + grpc_helpers_async, + ), + ], +) +def test_conversation_models_client_create_channel_credentials_file( + client_class, transport_class, transport_name, grpc_helpers +): + # Check the case credentials file is provided. + options = client_options.ClientOptions(credentials_file="credentials.json") + + with mock.patch.object(transport_class, "__init__") as patched: + patched.return_value = None + client = client_class(client_options=options, transport=transport_name) + patched.assert_called_once_with( + credentials=None, + credentials_file="credentials.json", + host=client.DEFAULT_ENDPOINT, + scopes=None, + client_cert_source_for_mtls=None, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + ) + + # test that the credentials from file are saved and used as the credentials. + with mock.patch.object( + google.auth, "load_credentials_from_file", autospec=True + ) as load_creds, mock.patch.object( + google.auth, "default", autospec=True + ) as adc, mock.patch.object( + grpc_helpers, "create_channel" + ) as create_channel: + creds = ga_credentials.AnonymousCredentials() + file_creds = ga_credentials.AnonymousCredentials() + load_creds.return_value = (file_creds, None) + adc.return_value = (creds, None) + client = client_class(client_options=options, transport=transport_name) + create_channel.assert_called_with( + "dialogflow.googleapis.com:443", + credentials=file_creds, + credentials_file=None, + quota_project_id=None, + default_scopes=( + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/dialogflow", + ), + scopes=None, + default_host="dialogflow.googleapis.com", + ssl_credentials=None, + options=[ + ("grpc.max_send_message_length", -1), + ("grpc.max_receive_message_length", -1), + ], + ) + + +@pytest.mark.parametrize( + "request_type", [gcd_conversation_model.CreateConversationModelRequest, dict,] +) +def test_create_conversation_model(request_type, transport: str = "grpc"): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_conversation_model), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/spam") + response = client.create_conversation_model(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == gcd_conversation_model.CreateConversationModelRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) + + +def test_create_conversation_model_empty_call(): + # This test is a coverage failsafe to make sure that totally empty calls, + # i.e. request == None and no flattened fields passed, work. + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="grpc", + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_conversation_model), "__call__" + ) as call: + client.create_conversation_model() + call.assert_called() + _, args, _ = call.mock_calls[0] + assert args[0] == gcd_conversation_model.CreateConversationModelRequest() + + +@pytest.mark.asyncio +async def test_create_conversation_model_async( + transport: str = "grpc_asyncio", + request_type=gcd_conversation_model.CreateConversationModelRequest, +): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_conversation_model), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + response = await client.create_conversation_model(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == gcd_conversation_model.CreateConversationModelRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) + + +@pytest.mark.asyncio +async def test_create_conversation_model_async_from_dict(): + await test_create_conversation_model_async(request_type=dict) + + +def test_create_conversation_model_field_headers(): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = gcd_conversation_model.CreateConversationModelRequest() + + request.parent = "parent/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_conversation_model), "__call__" + ) as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.create_conversation_model(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ("x-goog-request-params", "parent=parent/value",) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_create_conversation_model_field_headers_async(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = gcd_conversation_model.CreateConversationModelRequest() + + request.parent = "parent/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_conversation_model), "__call__" + ) as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/op") + ) + await client.create_conversation_model(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ("x-goog-request-params", "parent=parent/value",) in kw["metadata"] + + +def test_create_conversation_model_flattened(): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_conversation_model), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/op") + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + client.create_conversation_model( + parent="parent_value", + conversation_model=gcd_conversation_model.ConversationModel( + name="name_value" + ), + ) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val + arg = args[0].conversation_model + mock_val = gcd_conversation_model.ConversationModel(name="name_value") + assert arg == mock_val + + +def test_create_conversation_model_flattened_error(): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.create_conversation_model( + gcd_conversation_model.CreateConversationModelRequest(), + parent="parent_value", + conversation_model=gcd_conversation_model.ConversationModel( + name="name_value" + ), + ) + + +@pytest.mark.asyncio +async def test_create_conversation_model_flattened_async(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_conversation_model), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/op") + + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + response = await client.create_conversation_model( + parent="parent_value", + conversation_model=gcd_conversation_model.ConversationModel( + name="name_value" + ), + ) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val + arg = args[0].conversation_model + mock_val = gcd_conversation_model.ConversationModel(name="name_value") + assert arg == mock_val + + +@pytest.mark.asyncio +async def test_create_conversation_model_flattened_error_async(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + await client.create_conversation_model( + gcd_conversation_model.CreateConversationModelRequest(), + parent="parent_value", + conversation_model=gcd_conversation_model.ConversationModel( + name="name_value" + ), + ) + + +@pytest.mark.parametrize( + "request_type", [conversation_model.GetConversationModelRequest, dict,] +) +def test_get_conversation_model(request_type, transport: str = "grpc"): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_conversation_model), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = conversation_model.ConversationModel( + name="name_value", + display_name="display_name_value", + state=conversation_model.ConversationModel.State.CREATING, + language_code="language_code_value", + article_suggestion_model_metadata=conversation_model.ArticleSuggestionModelMetadata( + training_model_type=conversation_model.ConversationModel.ModelType.SMART_REPLY_DUAL_ENCODER_MODEL + ), + ) + response = client.get_conversation_model(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_model.GetConversationModelRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, conversation_model.ConversationModel) + assert response.name == "name_value" + assert response.display_name == "display_name_value" + assert response.state == conversation_model.ConversationModel.State.CREATING + assert response.language_code == "language_code_value" + + +def test_get_conversation_model_empty_call(): + # This test is a coverage failsafe to make sure that totally empty calls, + # i.e. request == None and no flattened fields passed, work. + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="grpc", + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_conversation_model), "__call__" + ) as call: + client.get_conversation_model() + call.assert_called() + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_model.GetConversationModelRequest() + + +@pytest.mark.asyncio +async def test_get_conversation_model_async( + transport: str = "grpc_asyncio", + request_type=conversation_model.GetConversationModelRequest, +): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_conversation_model), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + conversation_model.ConversationModel( + name="name_value", + display_name="display_name_value", + state=conversation_model.ConversationModel.State.CREATING, + language_code="language_code_value", + ) + ) + response = await client.get_conversation_model(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_model.GetConversationModelRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, conversation_model.ConversationModel) + assert response.name == "name_value" + assert response.display_name == "display_name_value" + assert response.state == conversation_model.ConversationModel.State.CREATING + assert response.language_code == "language_code_value" + + +@pytest.mark.asyncio +async def test_get_conversation_model_async_from_dict(): + await test_get_conversation_model_async(request_type=dict) + + +def test_get_conversation_model_field_headers(): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = conversation_model.GetConversationModelRequest() + + request.name = "name/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_conversation_model), "__call__" + ) as call: + call.return_value = conversation_model.ConversationModel() + client.get_conversation_model(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ("x-goog-request-params", "name=name/value",) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_get_conversation_model_field_headers_async(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = conversation_model.GetConversationModelRequest() + + request.name = "name/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_conversation_model), "__call__" + ) as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + conversation_model.ConversationModel() + ) + await client.get_conversation_model(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ("x-goog-request-params", "name=name/value",) in kw["metadata"] + + +def test_get_conversation_model_flattened(): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_conversation_model), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = conversation_model.ConversationModel() + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + client.get_conversation_model(name="name_value",) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val + + +def test_get_conversation_model_flattened_error(): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.get_conversation_model( + conversation_model.GetConversationModelRequest(), name="name_value", + ) + + +@pytest.mark.asyncio +async def test_get_conversation_model_flattened_async(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_conversation_model), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = conversation_model.ConversationModel() + + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + conversation_model.ConversationModel() + ) + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + response = await client.get_conversation_model(name="name_value",) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val + + +@pytest.mark.asyncio +async def test_get_conversation_model_flattened_error_async(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + await client.get_conversation_model( + conversation_model.GetConversationModelRequest(), name="name_value", + ) + + +@pytest.mark.parametrize( + "request_type", [conversation_model.ListConversationModelsRequest, dict,] +) +def test_list_conversation_models(request_type, transport: str = "grpc"): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_models), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = conversation_model.ListConversationModelsResponse( + next_page_token="next_page_token_value", + ) + response = client.list_conversation_models(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_model.ListConversationModelsRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, pagers.ListConversationModelsPager) + assert response.next_page_token == "next_page_token_value" + + +def test_list_conversation_models_empty_call(): + # This test is a coverage failsafe to make sure that totally empty calls, + # i.e. request == None and no flattened fields passed, work. + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="grpc", + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_models), "__call__" + ) as call: + client.list_conversation_models() + call.assert_called() + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_model.ListConversationModelsRequest() + + +@pytest.mark.asyncio +async def test_list_conversation_models_async( + transport: str = "grpc_asyncio", + request_type=conversation_model.ListConversationModelsRequest, +): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_models), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + conversation_model.ListConversationModelsResponse( + next_page_token="next_page_token_value", + ) + ) + response = await client.list_conversation_models(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_model.ListConversationModelsRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, pagers.ListConversationModelsAsyncPager) + assert response.next_page_token == "next_page_token_value" + + +@pytest.mark.asyncio +async def test_list_conversation_models_async_from_dict(): + await test_list_conversation_models_async(request_type=dict) + + +def test_list_conversation_models_field_headers(): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = conversation_model.ListConversationModelsRequest() + + request.parent = "parent/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_models), "__call__" + ) as call: + call.return_value = conversation_model.ListConversationModelsResponse() + client.list_conversation_models(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ("x-goog-request-params", "parent=parent/value",) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_list_conversation_models_field_headers_async(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = conversation_model.ListConversationModelsRequest() + + request.parent = "parent/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_models), "__call__" + ) as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + conversation_model.ListConversationModelsResponse() + ) + await client.list_conversation_models(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ("x-goog-request-params", "parent=parent/value",) in kw["metadata"] + + +def test_list_conversation_models_flattened(): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_models), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = conversation_model.ListConversationModelsResponse() + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + client.list_conversation_models(parent="parent_value",) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val + + +def test_list_conversation_models_flattened_error(): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.list_conversation_models( + conversation_model.ListConversationModelsRequest(), parent="parent_value", + ) + + +@pytest.mark.asyncio +async def test_list_conversation_models_flattened_async(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_models), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = conversation_model.ListConversationModelsResponse() + + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + conversation_model.ListConversationModelsResponse() + ) + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + response = await client.list_conversation_models(parent="parent_value",) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val + + +@pytest.mark.asyncio +async def test_list_conversation_models_flattened_error_async(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + await client.list_conversation_models( + conversation_model.ListConversationModelsRequest(), parent="parent_value", + ) + + +def test_list_conversation_models_pager(transport_name: str = "grpc"): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials, transport=transport_name, + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_models), "__call__" + ) as call: + # Set the response to a series of pages. + call.side_effect = ( + conversation_model.ListConversationModelsResponse( + conversation_models=[ + conversation_model.ConversationModel(), + conversation_model.ConversationModel(), + conversation_model.ConversationModel(), + ], + next_page_token="abc", + ), + conversation_model.ListConversationModelsResponse( + conversation_models=[], next_page_token="def", + ), + conversation_model.ListConversationModelsResponse( + conversation_models=[conversation_model.ConversationModel(),], + next_page_token="ghi", + ), + conversation_model.ListConversationModelsResponse( + conversation_models=[ + conversation_model.ConversationModel(), + conversation_model.ConversationModel(), + ], + ), + RuntimeError, + ) + + metadata = () + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", ""),)), + ) + pager = client.list_conversation_models(request={}) + + assert pager._metadata == metadata + + results = [i for i in pager] + assert len(results) == 6 + assert all(isinstance(i, conversation_model.ConversationModel) for i in results) + + +def test_list_conversation_models_pages(transport_name: str = "grpc"): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials, transport=transport_name, + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_models), "__call__" + ) as call: + # Set the response to a series of pages. + call.side_effect = ( + conversation_model.ListConversationModelsResponse( + conversation_models=[ + conversation_model.ConversationModel(), + conversation_model.ConversationModel(), + conversation_model.ConversationModel(), + ], + next_page_token="abc", + ), + conversation_model.ListConversationModelsResponse( + conversation_models=[], next_page_token="def", + ), + conversation_model.ListConversationModelsResponse( + conversation_models=[conversation_model.ConversationModel(),], + next_page_token="ghi", + ), + conversation_model.ListConversationModelsResponse( + conversation_models=[ + conversation_model.ConversationModel(), + conversation_model.ConversationModel(), + ], + ), + RuntimeError, + ) + pages = list(client.list_conversation_models(request={}).pages) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token + + +@pytest.mark.asyncio +async def test_list_conversation_models_async_pager(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials, + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_models), + "__call__", + new_callable=mock.AsyncMock, + ) as call: + # Set the response to a series of pages. + call.side_effect = ( + conversation_model.ListConversationModelsResponse( + conversation_models=[ + conversation_model.ConversationModel(), + conversation_model.ConversationModel(), + conversation_model.ConversationModel(), + ], + next_page_token="abc", + ), + conversation_model.ListConversationModelsResponse( + conversation_models=[], next_page_token="def", + ), + conversation_model.ListConversationModelsResponse( + conversation_models=[conversation_model.ConversationModel(),], + next_page_token="ghi", + ), + conversation_model.ListConversationModelsResponse( + conversation_models=[ + conversation_model.ConversationModel(), + conversation_model.ConversationModel(), + ], + ), + RuntimeError, + ) + async_pager = await client.list_conversation_models(request={},) + assert async_pager.next_page_token == "abc" + responses = [] + async for response in async_pager: + responses.append(response) + + assert len(responses) == 6 + assert all( + isinstance(i, conversation_model.ConversationModel) for i in responses + ) + + +@pytest.mark.asyncio +async def test_list_conversation_models_async_pages(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials, + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_models), + "__call__", + new_callable=mock.AsyncMock, + ) as call: + # Set the response to a series of pages. + call.side_effect = ( + conversation_model.ListConversationModelsResponse( + conversation_models=[ + conversation_model.ConversationModel(), + conversation_model.ConversationModel(), + conversation_model.ConversationModel(), + ], + next_page_token="abc", + ), + conversation_model.ListConversationModelsResponse( + conversation_models=[], next_page_token="def", + ), + conversation_model.ListConversationModelsResponse( + conversation_models=[conversation_model.ConversationModel(),], + next_page_token="ghi", + ), + conversation_model.ListConversationModelsResponse( + conversation_models=[ + conversation_model.ConversationModel(), + conversation_model.ConversationModel(), + ], + ), + RuntimeError, + ) + pages = [] + async for page_ in (await client.list_conversation_models(request={})).pages: + pages.append(page_) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token + + +@pytest.mark.parametrize( + "request_type", [conversation_model.DeleteConversationModelRequest, dict,] +) +def test_delete_conversation_model(request_type, transport: str = "grpc"): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_conversation_model), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/spam") + response = client.delete_conversation_model(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_model.DeleteConversationModelRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) + + +def test_delete_conversation_model_empty_call(): + # This test is a coverage failsafe to make sure that totally empty calls, + # i.e. request == None and no flattened fields passed, work. + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="grpc", + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_conversation_model), "__call__" + ) as call: + client.delete_conversation_model() + call.assert_called() + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_model.DeleteConversationModelRequest() + + +@pytest.mark.asyncio +async def test_delete_conversation_model_async( + transport: str = "grpc_asyncio", + request_type=conversation_model.DeleteConversationModelRequest, +): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_conversation_model), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + response = await client.delete_conversation_model(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_model.DeleteConversationModelRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) + + +@pytest.mark.asyncio +async def test_delete_conversation_model_async_from_dict(): + await test_delete_conversation_model_async(request_type=dict) + + +def test_delete_conversation_model_field_headers(): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = conversation_model.DeleteConversationModelRequest() + + request.name = "name/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_conversation_model), "__call__" + ) as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.delete_conversation_model(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ("x-goog-request-params", "name=name/value",) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_delete_conversation_model_field_headers_async(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = conversation_model.DeleteConversationModelRequest() + + request.name = "name/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_conversation_model), "__call__" + ) as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/op") + ) + await client.delete_conversation_model(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ("x-goog-request-params", "name=name/value",) in kw["metadata"] + + +def test_delete_conversation_model_flattened(): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_conversation_model), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/op") + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + client.delete_conversation_model(name="name_value",) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val + + +def test_delete_conversation_model_flattened_error(): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.delete_conversation_model( + conversation_model.DeleteConversationModelRequest(), name="name_value", + ) + + +@pytest.mark.asyncio +async def test_delete_conversation_model_flattened_async(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_conversation_model), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/op") + + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + response = await client.delete_conversation_model(name="name_value",) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val + + +@pytest.mark.asyncio +async def test_delete_conversation_model_flattened_error_async(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + await client.delete_conversation_model( + conversation_model.DeleteConversationModelRequest(), name="name_value", + ) + + +@pytest.mark.parametrize( + "request_type", [conversation_model.DeployConversationModelRequest, dict,] +) +def test_deploy_conversation_model(request_type, transport: str = "grpc"): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.deploy_conversation_model), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/spam") + response = client.deploy_conversation_model(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_model.DeployConversationModelRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) + + +def test_deploy_conversation_model_empty_call(): + # This test is a coverage failsafe to make sure that totally empty calls, + # i.e. request == None and no flattened fields passed, work. + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="grpc", + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.deploy_conversation_model), "__call__" + ) as call: + client.deploy_conversation_model() + call.assert_called() + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_model.DeployConversationModelRequest() + + +@pytest.mark.asyncio +async def test_deploy_conversation_model_async( + transport: str = "grpc_asyncio", + request_type=conversation_model.DeployConversationModelRequest, +): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.deploy_conversation_model), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + response = await client.deploy_conversation_model(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_model.DeployConversationModelRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) + + +@pytest.mark.asyncio +async def test_deploy_conversation_model_async_from_dict(): + await test_deploy_conversation_model_async(request_type=dict) + + +def test_deploy_conversation_model_field_headers(): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = conversation_model.DeployConversationModelRequest() + + request.name = "name/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.deploy_conversation_model), "__call__" + ) as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.deploy_conversation_model(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ("x-goog-request-params", "name=name/value",) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_deploy_conversation_model_field_headers_async(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = conversation_model.DeployConversationModelRequest() + + request.name = "name/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.deploy_conversation_model), "__call__" + ) as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/op") + ) + await client.deploy_conversation_model(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ("x-goog-request-params", "name=name/value",) in kw["metadata"] + + +@pytest.mark.parametrize( + "request_type", [conversation_model.UndeployConversationModelRequest, dict,] +) +def test_undeploy_conversation_model(request_type, transport: str = "grpc"): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.undeploy_conversation_model), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/spam") + response = client.undeploy_conversation_model(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_model.UndeployConversationModelRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) + + +def test_undeploy_conversation_model_empty_call(): + # This test is a coverage failsafe to make sure that totally empty calls, + # i.e. request == None and no flattened fields passed, work. + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="grpc", + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.undeploy_conversation_model), "__call__" + ) as call: + client.undeploy_conversation_model() + call.assert_called() + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_model.UndeployConversationModelRequest() + + +@pytest.mark.asyncio +async def test_undeploy_conversation_model_async( + transport: str = "grpc_asyncio", + request_type=conversation_model.UndeployConversationModelRequest, +): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.undeploy_conversation_model), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + response = await client.undeploy_conversation_model(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_model.UndeployConversationModelRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) + + +@pytest.mark.asyncio +async def test_undeploy_conversation_model_async_from_dict(): + await test_undeploy_conversation_model_async(request_type=dict) + + +def test_undeploy_conversation_model_field_headers(): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = conversation_model.UndeployConversationModelRequest() + + request.name = "name/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.undeploy_conversation_model), "__call__" + ) as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.undeploy_conversation_model(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ("x-goog-request-params", "name=name/value",) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_undeploy_conversation_model_field_headers_async(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = conversation_model.UndeployConversationModelRequest() + + request.name = "name/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.undeploy_conversation_model), "__call__" + ) as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/op") + ) + await client.undeploy_conversation_model(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ("x-goog-request-params", "name=name/value",) in kw["metadata"] + + +@pytest.mark.parametrize( + "request_type", [conversation_model.GetConversationModelEvaluationRequest, dict,] +) +def test_get_conversation_model_evaluation(request_type, transport: str = "grpc"): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_conversation_model_evaluation), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = conversation_model.ConversationModelEvaluation( + name="name_value", + display_name="display_name_value", + smart_reply_metrics=conversation_model.SmartReplyMetrics( + allowlist_coverage=0.19260000000000002 + ), + ) + response = client.get_conversation_model_evaluation(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_model.GetConversationModelEvaluationRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, conversation_model.ConversationModelEvaluation) + assert response.name == "name_value" + assert response.display_name == "display_name_value" + + +def test_get_conversation_model_evaluation_empty_call(): + # This test is a coverage failsafe to make sure that totally empty calls, + # i.e. request == None and no flattened fields passed, work. + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="grpc", + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_conversation_model_evaluation), "__call__" + ) as call: + client.get_conversation_model_evaluation() + call.assert_called() + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_model.GetConversationModelEvaluationRequest() + + +@pytest.mark.asyncio +async def test_get_conversation_model_evaluation_async( + transport: str = "grpc_asyncio", + request_type=conversation_model.GetConversationModelEvaluationRequest, +): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_conversation_model_evaluation), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + conversation_model.ConversationModelEvaluation( + name="name_value", display_name="display_name_value", + ) + ) + response = await client.get_conversation_model_evaluation(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_model.GetConversationModelEvaluationRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, conversation_model.ConversationModelEvaluation) + assert response.name == "name_value" + assert response.display_name == "display_name_value" + + +@pytest.mark.asyncio +async def test_get_conversation_model_evaluation_async_from_dict(): + await test_get_conversation_model_evaluation_async(request_type=dict) + + +def test_get_conversation_model_evaluation_field_headers(): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = conversation_model.GetConversationModelEvaluationRequest() + + request.name = "name/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_conversation_model_evaluation), "__call__" + ) as call: + call.return_value = conversation_model.ConversationModelEvaluation() + client.get_conversation_model_evaluation(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ("x-goog-request-params", "name=name/value",) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_get_conversation_model_evaluation_field_headers_async(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = conversation_model.GetConversationModelEvaluationRequest() + + request.name = "name/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_conversation_model_evaluation), "__call__" + ) as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + conversation_model.ConversationModelEvaluation() + ) + await client.get_conversation_model_evaluation(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ("x-goog-request-params", "name=name/value",) in kw["metadata"] + + +def test_get_conversation_model_evaluation_flattened(): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_conversation_model_evaluation), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = conversation_model.ConversationModelEvaluation() + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + client.get_conversation_model_evaluation(name="name_value",) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val + + +def test_get_conversation_model_evaluation_flattened_error(): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.get_conversation_model_evaluation( + conversation_model.GetConversationModelEvaluationRequest(), + name="name_value", + ) + + +@pytest.mark.asyncio +async def test_get_conversation_model_evaluation_flattened_async(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_conversation_model_evaluation), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = conversation_model.ConversationModelEvaluation() + + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + conversation_model.ConversationModelEvaluation() + ) + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + response = await client.get_conversation_model_evaluation(name="name_value",) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val + + +@pytest.mark.asyncio +async def test_get_conversation_model_evaluation_flattened_error_async(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + await client.get_conversation_model_evaluation( + conversation_model.GetConversationModelEvaluationRequest(), + name="name_value", + ) + + +@pytest.mark.parametrize( + "request_type", [conversation_model.ListConversationModelEvaluationsRequest, dict,] +) +def test_list_conversation_model_evaluations(request_type, transport: str = "grpc"): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_model_evaluations), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = conversation_model.ListConversationModelEvaluationsResponse( + next_page_token="next_page_token_value", + ) + response = client.list_conversation_model_evaluations(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_model.ListConversationModelEvaluationsRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, pagers.ListConversationModelEvaluationsPager) + assert response.next_page_token == "next_page_token_value" + + +def test_list_conversation_model_evaluations_empty_call(): + # This test is a coverage failsafe to make sure that totally empty calls, + # i.e. request == None and no flattened fields passed, work. + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="grpc", + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_model_evaluations), "__call__" + ) as call: + client.list_conversation_model_evaluations() + call.assert_called() + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_model.ListConversationModelEvaluationsRequest() + + +@pytest.mark.asyncio +async def test_list_conversation_model_evaluations_async( + transport: str = "grpc_asyncio", + request_type=conversation_model.ListConversationModelEvaluationsRequest, +): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_model_evaluations), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + conversation_model.ListConversationModelEvaluationsResponse( + next_page_token="next_page_token_value", + ) + ) + response = await client.list_conversation_model_evaluations(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_model.ListConversationModelEvaluationsRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, pagers.ListConversationModelEvaluationsAsyncPager) + assert response.next_page_token == "next_page_token_value" + + +@pytest.mark.asyncio +async def test_list_conversation_model_evaluations_async_from_dict(): + await test_list_conversation_model_evaluations_async(request_type=dict) + + +def test_list_conversation_model_evaluations_field_headers(): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = conversation_model.ListConversationModelEvaluationsRequest() + + request.parent = "parent/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_model_evaluations), "__call__" + ) as call: + call.return_value = ( + conversation_model.ListConversationModelEvaluationsResponse() + ) + client.list_conversation_model_evaluations(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ("x-goog-request-params", "parent=parent/value",) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_list_conversation_model_evaluations_field_headers_async(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = conversation_model.ListConversationModelEvaluationsRequest() + + request.parent = "parent/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_model_evaluations), "__call__" + ) as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + conversation_model.ListConversationModelEvaluationsResponse() + ) + await client.list_conversation_model_evaluations(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ("x-goog-request-params", "parent=parent/value",) in kw["metadata"] + + +def test_list_conversation_model_evaluations_flattened(): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_model_evaluations), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = ( + conversation_model.ListConversationModelEvaluationsResponse() + ) + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + client.list_conversation_model_evaluations(parent="parent_value",) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val + + +def test_list_conversation_model_evaluations_flattened_error(): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.list_conversation_model_evaluations( + conversation_model.ListConversationModelEvaluationsRequest(), + parent="parent_value", + ) + + +@pytest.mark.asyncio +async def test_list_conversation_model_evaluations_flattened_async(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_model_evaluations), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = ( + conversation_model.ListConversationModelEvaluationsResponse() + ) + + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + conversation_model.ListConversationModelEvaluationsResponse() + ) + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + response = await client.list_conversation_model_evaluations( + parent="parent_value", + ) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val + + +@pytest.mark.asyncio +async def test_list_conversation_model_evaluations_flattened_error_async(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + await client.list_conversation_model_evaluations( + conversation_model.ListConversationModelEvaluationsRequest(), + parent="parent_value", + ) + + +def test_list_conversation_model_evaluations_pager(transport_name: str = "grpc"): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials, transport=transport_name, + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_model_evaluations), "__call__" + ) as call: + # Set the response to a series of pages. + call.side_effect = ( + conversation_model.ListConversationModelEvaluationsResponse( + conversation_model_evaluations=[ + conversation_model.ConversationModelEvaluation(), + conversation_model.ConversationModelEvaluation(), + conversation_model.ConversationModelEvaluation(), + ], + next_page_token="abc", + ), + conversation_model.ListConversationModelEvaluationsResponse( + conversation_model_evaluations=[], next_page_token="def", + ), + conversation_model.ListConversationModelEvaluationsResponse( + conversation_model_evaluations=[ + conversation_model.ConversationModelEvaluation(), + ], + next_page_token="ghi", + ), + conversation_model.ListConversationModelEvaluationsResponse( + conversation_model_evaluations=[ + conversation_model.ConversationModelEvaluation(), + conversation_model.ConversationModelEvaluation(), + ], + ), + RuntimeError, + ) + + metadata = () + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", ""),)), + ) + pager = client.list_conversation_model_evaluations(request={}) + + assert pager._metadata == metadata + + results = [i for i in pager] + assert len(results) == 6 + assert all( + isinstance(i, conversation_model.ConversationModelEvaluation) + for i in results + ) + + +def test_list_conversation_model_evaluations_pages(transport_name: str = "grpc"): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials, transport=transport_name, + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_model_evaluations), "__call__" + ) as call: + # Set the response to a series of pages. + call.side_effect = ( + conversation_model.ListConversationModelEvaluationsResponse( + conversation_model_evaluations=[ + conversation_model.ConversationModelEvaluation(), + conversation_model.ConversationModelEvaluation(), + conversation_model.ConversationModelEvaluation(), + ], + next_page_token="abc", + ), + conversation_model.ListConversationModelEvaluationsResponse( + conversation_model_evaluations=[], next_page_token="def", + ), + conversation_model.ListConversationModelEvaluationsResponse( + conversation_model_evaluations=[ + conversation_model.ConversationModelEvaluation(), + ], + next_page_token="ghi", + ), + conversation_model.ListConversationModelEvaluationsResponse( + conversation_model_evaluations=[ + conversation_model.ConversationModelEvaluation(), + conversation_model.ConversationModelEvaluation(), + ], + ), + RuntimeError, + ) + pages = list(client.list_conversation_model_evaluations(request={}).pages) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token + + +@pytest.mark.asyncio +async def test_list_conversation_model_evaluations_async_pager(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials, + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_model_evaluations), + "__call__", + new_callable=mock.AsyncMock, + ) as call: + # Set the response to a series of pages. + call.side_effect = ( + conversation_model.ListConversationModelEvaluationsResponse( + conversation_model_evaluations=[ + conversation_model.ConversationModelEvaluation(), + conversation_model.ConversationModelEvaluation(), + conversation_model.ConversationModelEvaluation(), + ], + next_page_token="abc", + ), + conversation_model.ListConversationModelEvaluationsResponse( + conversation_model_evaluations=[], next_page_token="def", + ), + conversation_model.ListConversationModelEvaluationsResponse( + conversation_model_evaluations=[ + conversation_model.ConversationModelEvaluation(), + ], + next_page_token="ghi", + ), + conversation_model.ListConversationModelEvaluationsResponse( + conversation_model_evaluations=[ + conversation_model.ConversationModelEvaluation(), + conversation_model.ConversationModelEvaluation(), + ], + ), + RuntimeError, + ) + async_pager = await client.list_conversation_model_evaluations(request={},) + assert async_pager.next_page_token == "abc" + responses = [] + async for response in async_pager: + responses.append(response) + + assert len(responses) == 6 + assert all( + isinstance(i, conversation_model.ConversationModelEvaluation) + for i in responses + ) + + +@pytest.mark.asyncio +async def test_list_conversation_model_evaluations_async_pages(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials, + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_conversation_model_evaluations), + "__call__", + new_callable=mock.AsyncMock, + ) as call: + # Set the response to a series of pages. + call.side_effect = ( + conversation_model.ListConversationModelEvaluationsResponse( + conversation_model_evaluations=[ + conversation_model.ConversationModelEvaluation(), + conversation_model.ConversationModelEvaluation(), + conversation_model.ConversationModelEvaluation(), + ], + next_page_token="abc", + ), + conversation_model.ListConversationModelEvaluationsResponse( + conversation_model_evaluations=[], next_page_token="def", + ), + conversation_model.ListConversationModelEvaluationsResponse( + conversation_model_evaluations=[ + conversation_model.ConversationModelEvaluation(), + ], + next_page_token="ghi", + ), + conversation_model.ListConversationModelEvaluationsResponse( + conversation_model_evaluations=[ + conversation_model.ConversationModelEvaluation(), + conversation_model.ConversationModelEvaluation(), + ], + ), + RuntimeError, + ) + pages = [] + async for page_ in ( + await client.list_conversation_model_evaluations(request={}) + ).pages: + pages.append(page_) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token + + +@pytest.mark.parametrize( + "request_type", [conversation_model.CreateConversationModelEvaluationRequest, dict,] +) +def test_create_conversation_model_evaluation(request_type, transport: str = "grpc"): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_conversation_model_evaluation), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/spam") + response = client.create_conversation_model_evaluation(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_model.CreateConversationModelEvaluationRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) + + +def test_create_conversation_model_evaluation_empty_call(): + # This test is a coverage failsafe to make sure that totally empty calls, + # i.e. request == None and no flattened fields passed, work. + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="grpc", + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_conversation_model_evaluation), "__call__" + ) as call: + client.create_conversation_model_evaluation() + call.assert_called() + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_model.CreateConversationModelEvaluationRequest() + + +@pytest.mark.asyncio +async def test_create_conversation_model_evaluation_async( + transport: str = "grpc_asyncio", + request_type=conversation_model.CreateConversationModelEvaluationRequest, +): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_conversation_model_evaluation), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + response = await client.create_conversation_model_evaluation(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == conversation_model.CreateConversationModelEvaluationRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) + + +@pytest.mark.asyncio +async def test_create_conversation_model_evaluation_async_from_dict(): + await test_create_conversation_model_evaluation_async(request_type=dict) + + +def test_create_conversation_model_evaluation_field_headers(): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = conversation_model.CreateConversationModelEvaluationRequest() + + request.parent = "parent/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_conversation_model_evaluation), "__call__" + ) as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.create_conversation_model_evaluation(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ("x-goog-request-params", "parent=parent/value",) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_create_conversation_model_evaluation_field_headers_async(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = conversation_model.CreateConversationModelEvaluationRequest() + + request.parent = "parent/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_conversation_model_evaluation), "__call__" + ) as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/op") + ) + await client.create_conversation_model_evaluation(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ("x-goog-request-params", "parent=parent/value",) in kw["metadata"] + + +def test_create_conversation_model_evaluation_flattened(): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_conversation_model_evaluation), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/op") + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + client.create_conversation_model_evaluation( + parent="parent_value", + conversation_model_evaluation=conversation_model.ConversationModelEvaluation( + name="name_value" + ), + ) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val + arg = args[0].conversation_model_evaluation + mock_val = conversation_model.ConversationModelEvaluation(name="name_value") + assert arg == mock_val + + +def test_create_conversation_model_evaluation_flattened_error(): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.create_conversation_model_evaluation( + conversation_model.CreateConversationModelEvaluationRequest(), + parent="parent_value", + conversation_model_evaluation=conversation_model.ConversationModelEvaluation( + name="name_value" + ), + ) + + +@pytest.mark.asyncio +async def test_create_conversation_model_evaluation_flattened_async(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_conversation_model_evaluation), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/op") + + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + response = await client.create_conversation_model_evaluation( + parent="parent_value", + conversation_model_evaluation=conversation_model.ConversationModelEvaluation( + name="name_value" + ), + ) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val + arg = args[0].conversation_model_evaluation + mock_val = conversation_model.ConversationModelEvaluation(name="name_value") + assert arg == mock_val + + +@pytest.mark.asyncio +async def test_create_conversation_model_evaluation_flattened_error_async(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + await client.create_conversation_model_evaluation( + conversation_model.CreateConversationModelEvaluationRequest(), + parent="parent_value", + conversation_model_evaluation=conversation_model.ConversationModelEvaluation( + name="name_value" + ), + ) + + +def test_credentials_transport_error(): + # It is an error to provide credentials and a transport instance. + transport = transports.ConversationModelsGrpcTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # It is an error to provide a credentials file and a transport instance. + transport = transports.ConversationModelsGrpcTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = ConversationModelsClient( + client_options={"credentials_file": "credentials.json"}, + transport=transport, + ) + + # It is an error to provide an api_key and a transport instance. + transport = transports.ConversationModelsGrpcTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + options = client_options.ClientOptions() + options.api_key = "api_key" + with pytest.raises(ValueError): + client = ConversationModelsClient(client_options=options, transport=transport,) + + # It is an error to provide an api_key and a credential. + options = mock.Mock() + options.api_key = "api_key" + with pytest.raises(ValueError): + client = ConversationModelsClient( + client_options=options, credentials=ga_credentials.AnonymousCredentials() + ) + + # It is an error to provide scopes and a transport instance. + transport = transports.ConversationModelsGrpcTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = ConversationModelsClient( + client_options={"scopes": ["1", "2"]}, transport=transport, + ) + + +def test_transport_instance(): + # A client may be instantiated with a custom transport instance. + transport = transports.ConversationModelsGrpcTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + client = ConversationModelsClient(transport=transport) + assert client.transport is transport + + +def test_transport_get_channel(): + # A client may be instantiated with a custom transport instance. + transport = transports.ConversationModelsGrpcTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + channel = transport.grpc_channel + assert channel + + transport = transports.ConversationModelsGrpcAsyncIOTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + channel = transport.grpc_channel + assert channel + + +@pytest.mark.parametrize( + "transport_class", + [ + transports.ConversationModelsGrpcTransport, + transports.ConversationModelsGrpcAsyncIOTransport, + ], +) +def test_transport_adc(transport_class): + # Test default credentials are used if not provided. + with mock.patch.object(google.auth, "default") as adc: + adc.return_value = (ga_credentials.AnonymousCredentials(), None) + transport_class() + adc.assert_called_once() + + +def test_transport_grpc_default(): + # A client should use the gRPC transport by default. + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + assert isinstance(client.transport, transports.ConversationModelsGrpcTransport,) + + +def test_conversation_models_base_transport_error(): + # Passing both a credentials object and credentials_file should raise an error + with pytest.raises(core_exceptions.DuplicateCredentialArgs): + transport = transports.ConversationModelsTransport( + credentials=ga_credentials.AnonymousCredentials(), + credentials_file="credentials.json", + ) + + +def test_conversation_models_base_transport(): + # Instantiate the base transport. + with mock.patch( + "google.cloud.dialogflow_v2.services.conversation_models.transports.ConversationModelsTransport.__init__" + ) as Transport: + Transport.return_value = None + transport = transports.ConversationModelsTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Every method on the transport should just blindly + # raise NotImplementedError. + methods = ( + "create_conversation_model", + "get_conversation_model", + "list_conversation_models", + "delete_conversation_model", + "deploy_conversation_model", + "undeploy_conversation_model", + "get_conversation_model_evaluation", + "list_conversation_model_evaluations", + "create_conversation_model_evaluation", + ) + for method in methods: + with pytest.raises(NotImplementedError): + getattr(transport, method)(request=object()) + + with pytest.raises(NotImplementedError): + transport.close() + + # Additionally, the LRO client (a property) should + # also raise NotImplementedError + with pytest.raises(NotImplementedError): + transport.operations_client + + +def test_conversation_models_base_transport_with_credentials_file(): + # Instantiate the base transport with a credentials file + with mock.patch.object( + google.auth, "load_credentials_from_file", autospec=True + ) as load_creds, mock.patch( + "google.cloud.dialogflow_v2.services.conversation_models.transports.ConversationModelsTransport._prep_wrapped_messages" + ) as Transport: + Transport.return_value = None + load_creds.return_value = (ga_credentials.AnonymousCredentials(), None) + transport = transports.ConversationModelsTransport( + credentials_file="credentials.json", quota_project_id="octopus", + ) + load_creds.assert_called_once_with( + "credentials.json", + scopes=None, + default_scopes=( + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/dialogflow", + ), + quota_project_id="octopus", + ) + + +def test_conversation_models_base_transport_with_adc(): + # Test the default credentials are used if credentials and credentials_file are None. + with mock.patch.object(google.auth, "default", autospec=True) as adc, mock.patch( + "google.cloud.dialogflow_v2.services.conversation_models.transports.ConversationModelsTransport._prep_wrapped_messages" + ) as Transport: + Transport.return_value = None + adc.return_value = (ga_credentials.AnonymousCredentials(), None) + transport = transports.ConversationModelsTransport() + adc.assert_called_once() + + +def test_conversation_models_auth_adc(): + # If no credentials are provided, we should use ADC credentials. + with mock.patch.object(google.auth, "default", autospec=True) as adc: + adc.return_value = (ga_credentials.AnonymousCredentials(), None) + ConversationModelsClient() + adc.assert_called_once_with( + scopes=None, + default_scopes=( + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/dialogflow", + ), + quota_project_id=None, + ) + + +@pytest.mark.parametrize( + "transport_class", + [ + transports.ConversationModelsGrpcTransport, + transports.ConversationModelsGrpcAsyncIOTransport, + ], +) +def test_conversation_models_transport_auth_adc(transport_class): + # If credentials and host are not provided, the transport class should use + # ADC credentials. + with mock.patch.object(google.auth, "default", autospec=True) as adc: + adc.return_value = (ga_credentials.AnonymousCredentials(), None) + transport_class(quota_project_id="octopus", scopes=["1", "2"]) + adc.assert_called_once_with( + scopes=["1", "2"], + default_scopes=( + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/dialogflow", + ), + quota_project_id="octopus", + ) + + +@pytest.mark.parametrize( + "transport_class,grpc_helpers", + [ + (transports.ConversationModelsGrpcTransport, grpc_helpers), + (transports.ConversationModelsGrpcAsyncIOTransport, grpc_helpers_async), + ], +) +def test_conversation_models_transport_create_channel(transport_class, grpc_helpers): + # If credentials and host are not provided, the transport class should use + # ADC credentials. + with mock.patch.object( + google.auth, "default", autospec=True + ) as adc, mock.patch.object( + grpc_helpers, "create_channel", autospec=True + ) as create_channel: + creds = ga_credentials.AnonymousCredentials() + adc.return_value = (creds, None) + transport_class(quota_project_id="octopus", scopes=["1", "2"]) + + create_channel.assert_called_with( + "dialogflow.googleapis.com:443", + credentials=creds, + credentials_file=None, + quota_project_id="octopus", + default_scopes=( + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/dialogflow", + ), + scopes=["1", "2"], + default_host="dialogflow.googleapis.com", + ssl_credentials=None, + options=[ + ("grpc.max_send_message_length", -1), + ("grpc.max_receive_message_length", -1), + ], + ) + + +@pytest.mark.parametrize( + "transport_class", + [ + transports.ConversationModelsGrpcTransport, + transports.ConversationModelsGrpcAsyncIOTransport, + ], +) +def test_conversation_models_grpc_transport_client_cert_source_for_mtls( + transport_class, +): + cred = ga_credentials.AnonymousCredentials() + + # Check ssl_channel_credentials is used if provided. + with mock.patch.object(transport_class, "create_channel") as mock_create_channel: + mock_ssl_channel_creds = mock.Mock() + transport_class( + host="squid.clam.whelk", + credentials=cred, + ssl_channel_credentials=mock_ssl_channel_creds, + ) + mock_create_channel.assert_called_once_with( + "squid.clam.whelk:443", + credentials=cred, + credentials_file=None, + scopes=None, + ssl_credentials=mock_ssl_channel_creds, + quota_project_id=None, + options=[ + ("grpc.max_send_message_length", -1), + ("grpc.max_receive_message_length", -1), + ], + ) + + # Check if ssl_channel_credentials is not provided, then client_cert_source_for_mtls + # is used. + with mock.patch.object(transport_class, "create_channel", return_value=mock.Mock()): + with mock.patch("grpc.ssl_channel_credentials") as mock_ssl_cred: + transport_class( + credentials=cred, + client_cert_source_for_mtls=client_cert_source_callback, + ) + expected_cert, expected_key = client_cert_source_callback() + mock_ssl_cred.assert_called_once_with( + certificate_chain=expected_cert, private_key=expected_key + ) + + +def test_conversation_models_host_no_port(): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), + client_options=client_options.ClientOptions( + api_endpoint="dialogflow.googleapis.com" + ), + ) + assert client.transport._host == "dialogflow.googleapis.com:443" + + +def test_conversation_models_host_with_port(): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), + client_options=client_options.ClientOptions( + api_endpoint="dialogflow.googleapis.com:8000" + ), + ) + assert client.transport._host == "dialogflow.googleapis.com:8000" + + +def test_conversation_models_grpc_transport_channel(): + channel = grpc.secure_channel("http://localhost/", grpc.local_channel_credentials()) + + # Check that channel is used if provided. + transport = transports.ConversationModelsGrpcTransport( + host="squid.clam.whelk", channel=channel, + ) + assert transport.grpc_channel == channel + assert transport._host == "squid.clam.whelk:443" + assert transport._ssl_channel_credentials == None + + +def test_conversation_models_grpc_asyncio_transport_channel(): + channel = aio.secure_channel("http://localhost/", grpc.local_channel_credentials()) + + # Check that channel is used if provided. + transport = transports.ConversationModelsGrpcAsyncIOTransport( + host="squid.clam.whelk", channel=channel, + ) + assert transport.grpc_channel == channel + assert transport._host == "squid.clam.whelk:443" + assert transport._ssl_channel_credentials == None + + +# Remove this test when deprecated arguments (api_mtls_endpoint, client_cert_source) are +# removed from grpc/grpc_asyncio transport constructor. +@pytest.mark.parametrize( + "transport_class", + [ + transports.ConversationModelsGrpcTransport, + transports.ConversationModelsGrpcAsyncIOTransport, + ], +) +def test_conversation_models_transport_channel_mtls_with_client_cert_source( + transport_class, +): + with mock.patch( + "grpc.ssl_channel_credentials", autospec=True + ) as grpc_ssl_channel_cred: + with mock.patch.object( + transport_class, "create_channel" + ) as grpc_create_channel: + mock_ssl_cred = mock.Mock() + grpc_ssl_channel_cred.return_value = mock_ssl_cred + + mock_grpc_channel = mock.Mock() + grpc_create_channel.return_value = mock_grpc_channel + + cred = ga_credentials.AnonymousCredentials() + with pytest.warns(DeprecationWarning): + with mock.patch.object(google.auth, "default") as adc: + adc.return_value = (cred, None) + transport = transport_class( + host="squid.clam.whelk", + api_mtls_endpoint="mtls.squid.clam.whelk", + client_cert_source=client_cert_source_callback, + ) + adc.assert_called_once() + + grpc_ssl_channel_cred.assert_called_once_with( + certificate_chain=b"cert bytes", private_key=b"key bytes" + ) + grpc_create_channel.assert_called_once_with( + "mtls.squid.clam.whelk:443", + credentials=cred, + credentials_file=None, + scopes=None, + ssl_credentials=mock_ssl_cred, + quota_project_id=None, + options=[ + ("grpc.max_send_message_length", -1), + ("grpc.max_receive_message_length", -1), + ], + ) + assert transport.grpc_channel == mock_grpc_channel + assert transport._ssl_channel_credentials == mock_ssl_cred + + +# Remove this test when deprecated arguments (api_mtls_endpoint, client_cert_source) are +# removed from grpc/grpc_asyncio transport constructor. +@pytest.mark.parametrize( + "transport_class", + [ + transports.ConversationModelsGrpcTransport, + transports.ConversationModelsGrpcAsyncIOTransport, + ], +) +def test_conversation_models_transport_channel_mtls_with_adc(transport_class): + mock_ssl_cred = mock.Mock() + with mock.patch.multiple( + "google.auth.transport.grpc.SslCredentials", + __init__=mock.Mock(return_value=None), + ssl_credentials=mock.PropertyMock(return_value=mock_ssl_cred), + ): + with mock.patch.object( + transport_class, "create_channel" + ) as grpc_create_channel: + mock_grpc_channel = mock.Mock() + grpc_create_channel.return_value = mock_grpc_channel + mock_cred = mock.Mock() + + with pytest.warns(DeprecationWarning): + transport = transport_class( + host="squid.clam.whelk", + credentials=mock_cred, + api_mtls_endpoint="mtls.squid.clam.whelk", + client_cert_source=None, + ) + + grpc_create_channel.assert_called_once_with( + "mtls.squid.clam.whelk:443", + credentials=mock_cred, + credentials_file=None, + scopes=None, + ssl_credentials=mock_ssl_cred, + quota_project_id=None, + options=[ + ("grpc.max_send_message_length", -1), + ("grpc.max_receive_message_length", -1), + ], + ) + assert transport.grpc_channel == mock_grpc_channel + + +def test_conversation_models_grpc_lro_client(): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="grpc", + ) + transport = client.transport + + # Ensure that we have a api-core operations client. + assert isinstance(transport.operations_client, operations_v1.OperationsClient,) + + # Ensure that subsequent calls to the property send the exact same object. + assert transport.operations_client is transport.operations_client + + +def test_conversation_models_grpc_lro_async_client(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), transport="grpc_asyncio", + ) + transport = client.transport + + # Ensure that we have a api-core operations client. + assert isinstance(transport.operations_client, operations_v1.OperationsAsyncClient,) + + # Ensure that subsequent calls to the property send the exact same object. + assert transport.operations_client is transport.operations_client + + +def test_conversation_dataset_path(): + project = "squid" + location = "clam" + conversation_dataset = "whelk" + expected = "projects/{project}/locations/{location}/conversationDatasets/{conversation_dataset}".format( + project=project, location=location, conversation_dataset=conversation_dataset, + ) + actual = ConversationModelsClient.conversation_dataset_path( + project, location, conversation_dataset + ) + assert expected == actual + + +def test_parse_conversation_dataset_path(): + expected = { + "project": "octopus", + "location": "oyster", + "conversation_dataset": "nudibranch", + } + path = ConversationModelsClient.conversation_dataset_path(**expected) + + # Check that the path construction is reversible. + actual = ConversationModelsClient.parse_conversation_dataset_path(path) + assert expected == actual + + +def test_conversation_model_path(): + project = "cuttlefish" + location = "mussel" + conversation_model = "winkle" + expected = "projects/{project}/locations/{location}/conversationModels/{conversation_model}".format( + project=project, location=location, conversation_model=conversation_model, + ) + actual = ConversationModelsClient.conversation_model_path( + project, location, conversation_model + ) + assert expected == actual + + +def test_parse_conversation_model_path(): + expected = { + "project": "nautilus", + "location": "scallop", + "conversation_model": "abalone", + } + path = ConversationModelsClient.conversation_model_path(**expected) + + # Check that the path construction is reversible. + actual = ConversationModelsClient.parse_conversation_model_path(path) + assert expected == actual + + +def test_conversation_model_evaluation_path(): + project = "squid" + conversation_model = "clam" + expected = "projects/{project}/conversationModels/{conversation_model}/evaluations/evaluation".format( + project=project, conversation_model=conversation_model, + ) + actual = ConversationModelsClient.conversation_model_evaluation_path( + project, conversation_model + ) + assert expected == actual + + +def test_parse_conversation_model_evaluation_path(): + expected = { + "project": "whelk", + "conversation_model": "octopus", + } + path = ConversationModelsClient.conversation_model_evaluation_path(**expected) + + # Check that the path construction is reversible. + actual = ConversationModelsClient.parse_conversation_model_evaluation_path(path) + assert expected == actual + + +def test_document_path(): + project = "oyster" + knowledge_base = "nudibranch" + document = "cuttlefish" + expected = "projects/{project}/knowledgeBases/{knowledge_base}/documents/{document}".format( + project=project, knowledge_base=knowledge_base, document=document, + ) + actual = ConversationModelsClient.document_path(project, knowledge_base, document) + assert expected == actual + + +def test_parse_document_path(): + expected = { + "project": "mussel", + "knowledge_base": "winkle", + "document": "nautilus", + } + path = ConversationModelsClient.document_path(**expected) + + # Check that the path construction is reversible. + actual = ConversationModelsClient.parse_document_path(path) + assert expected == actual + + +def test_common_billing_account_path(): + billing_account = "scallop" + expected = "billingAccounts/{billing_account}".format( + billing_account=billing_account, + ) + actual = ConversationModelsClient.common_billing_account_path(billing_account) + assert expected == actual + + +def test_parse_common_billing_account_path(): + expected = { + "billing_account": "abalone", + } + path = ConversationModelsClient.common_billing_account_path(**expected) + + # Check that the path construction is reversible. + actual = ConversationModelsClient.parse_common_billing_account_path(path) + assert expected == actual + + +def test_common_folder_path(): + folder = "squid" + expected = "folders/{folder}".format(folder=folder,) + actual = ConversationModelsClient.common_folder_path(folder) + assert expected == actual + + +def test_parse_common_folder_path(): + expected = { + "folder": "clam", + } + path = ConversationModelsClient.common_folder_path(**expected) + + # Check that the path construction is reversible. + actual = ConversationModelsClient.parse_common_folder_path(path) + assert expected == actual + + +def test_common_organization_path(): + organization = "whelk" + expected = "organizations/{organization}".format(organization=organization,) + actual = ConversationModelsClient.common_organization_path(organization) + assert expected == actual + + +def test_parse_common_organization_path(): + expected = { + "organization": "octopus", + } + path = ConversationModelsClient.common_organization_path(**expected) + + # Check that the path construction is reversible. + actual = ConversationModelsClient.parse_common_organization_path(path) + assert expected == actual + + +def test_common_project_path(): + project = "oyster" + expected = "projects/{project}".format(project=project,) + actual = ConversationModelsClient.common_project_path(project) + assert expected == actual + + +def test_parse_common_project_path(): + expected = { + "project": "nudibranch", + } + path = ConversationModelsClient.common_project_path(**expected) + + # Check that the path construction is reversible. + actual = ConversationModelsClient.parse_common_project_path(path) + assert expected == actual + + +def test_common_location_path(): + project = "cuttlefish" + location = "mussel" + expected = "projects/{project}/locations/{location}".format( + project=project, location=location, + ) + actual = ConversationModelsClient.common_location_path(project, location) + assert expected == actual + + +def test_parse_common_location_path(): + expected = { + "project": "winkle", + "location": "nautilus", + } + path = ConversationModelsClient.common_location_path(**expected) + + # Check that the path construction is reversible. + actual = ConversationModelsClient.parse_common_location_path(path) + assert expected == actual + + +def test_client_with_default_client_info(): + client_info = gapic_v1.client_info.ClientInfo() + + with mock.patch.object( + transports.ConversationModelsTransport, "_prep_wrapped_messages" + ) as prep: + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), client_info=client_info, + ) + prep.assert_called_once_with(client_info) + + with mock.patch.object( + transports.ConversationModelsTransport, "_prep_wrapped_messages" + ) as prep: + transport_class = ConversationModelsClient.get_transport_class() + transport = transport_class( + credentials=ga_credentials.AnonymousCredentials(), client_info=client_info, + ) + prep.assert_called_once_with(client_info) + + +@pytest.mark.asyncio +async def test_transport_close_async(): + client = ConversationModelsAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), transport="grpc_asyncio", + ) + with mock.patch.object( + type(getattr(client.transport, "grpc_channel")), "close" + ) as close: + async with client: + close.assert_not_called() + close.assert_called_once() + + +def test_transport_close(): + transports = { + "grpc": "_grpc_channel", + } + + for transport, close_name in transports.items(): + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport + ) + with mock.patch.object( + type(getattr(client.transport, close_name)), "close" + ) as close: + with client: + close.assert_not_called() + close.assert_called_once() + + +def test_client_ctx(): + transports = [ + "grpc", + ] + for transport in transports: + client = ConversationModelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport + ) + # Test client calls underlying transport. + with mock.patch.object(type(client.transport), "close") as close: + close.assert_not_called() + with client: + pass + close.assert_called() + + +@pytest.mark.parametrize( + "client_class,transport_class", + [ + (ConversationModelsClient, transports.ConversationModelsGrpcTransport), + ( + ConversationModelsAsyncClient, + transports.ConversationModelsGrpcAsyncIOTransport, + ), + ], +) +def test_api_key_credentials(client_class, transport_class): + with mock.patch.object( + google.auth._default, "get_api_key_credentials", create=True + ) as get_api_key_credentials: + mock_cred = mock.Mock() + get_api_key_credentials.return_value = mock_cred + options = client_options.ClientOptions() + options.api_key = "api_key" + with mock.patch.object(transport_class, "__init__") as patched: + patched.return_value = None + client = client_class(client_options=options) + patched.assert_called_once_with( + credentials=mock_cred, + credentials_file=None, + host=client.DEFAULT_ENDPOINT, + scopes=None, + client_cert_source_for_mtls=None, + quota_project_id=None, + client_info=transports.base.DEFAULT_CLIENT_INFO, + always_use_jwt_access=True, + ) diff --git a/tests/unit/gapic/dialogflow_v2/test_conversation_profiles.py b/tests/unit/gapic/dialogflow_v2/test_conversation_profiles.py index f1e93c4ca..5cba54e6b 100644 --- a/tests/unit/gapic/dialogflow_v2/test_conversation_profiles.py +++ b/tests/unit/gapic/dialogflow_v2/test_conversation_profiles.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -25,9 +25,13 @@ from google.api_core import client_options from google.api_core import exceptions as core_exceptions +from google.api_core import future from google.api_core import gapic_v1 from google.api_core import grpc_helpers from google.api_core import grpc_helpers_async +from google.api_core import operation +from google.api_core import operation_async # type: ignore +from google.api_core import operations_v1 from google.api_core import path_template from google.auth import credentials as ga_credentials from google.auth.exceptions import MutualTLSChannelError @@ -44,6 +48,8 @@ from google.cloud.dialogflow_v2.types import ( conversation_profile as gcd_conversation_profile, ) +from google.cloud.dialogflow_v2.types import participant +from google.longrunning import operations_pb2 from google.oauth2 import service_account from google.protobuf import field_mask_pb2 # type: ignore from google.protobuf import timestamp_pb2 # type: ignore @@ -2077,6 +2083,475 @@ async def test_delete_conversation_profile_flattened_error_async(): ) +@pytest.mark.parametrize( + "request_type", [gcd_conversation_profile.SetSuggestionFeatureConfigRequest, dict,] +) +def test_set_suggestion_feature_config(request_type, transport: str = "grpc"): + client = ConversationProfilesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_suggestion_feature_config), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/spam") + response = client.set_suggestion_feature_config(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == gcd_conversation_profile.SetSuggestionFeatureConfigRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) + + +def test_set_suggestion_feature_config_empty_call(): + # This test is a coverage failsafe to make sure that totally empty calls, + # i.e. request == None and no flattened fields passed, work. + client = ConversationProfilesClient( + credentials=ga_credentials.AnonymousCredentials(), transport="grpc", + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_suggestion_feature_config), "__call__" + ) as call: + client.set_suggestion_feature_config() + call.assert_called() + _, args, _ = call.mock_calls[0] + assert args[0] == gcd_conversation_profile.SetSuggestionFeatureConfigRequest() + + +@pytest.mark.asyncio +async def test_set_suggestion_feature_config_async( + transport: str = "grpc_asyncio", + request_type=gcd_conversation_profile.SetSuggestionFeatureConfigRequest, +): + client = ConversationProfilesAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_suggestion_feature_config), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + response = await client.set_suggestion_feature_config(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == gcd_conversation_profile.SetSuggestionFeatureConfigRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) + + +@pytest.mark.asyncio +async def test_set_suggestion_feature_config_async_from_dict(): + await test_set_suggestion_feature_config_async(request_type=dict) + + +def test_set_suggestion_feature_config_field_headers(): + client = ConversationProfilesClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = gcd_conversation_profile.SetSuggestionFeatureConfigRequest() + + request.conversation_profile = "conversation_profile/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_suggestion_feature_config), "__call__" + ) as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.set_suggestion_feature_config(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "conversation_profile=conversation_profile/value", + ) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_set_suggestion_feature_config_field_headers_async(): + client = ConversationProfilesAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = gcd_conversation_profile.SetSuggestionFeatureConfigRequest() + + request.conversation_profile = "conversation_profile/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_suggestion_feature_config), "__call__" + ) as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/op") + ) + await client.set_suggestion_feature_config(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "conversation_profile=conversation_profile/value", + ) in kw["metadata"] + + +def test_set_suggestion_feature_config_flattened(): + client = ConversationProfilesClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_suggestion_feature_config), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/op") + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + client.set_suggestion_feature_config( + conversation_profile="conversation_profile_value", + ) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + arg = args[0].conversation_profile + mock_val = "conversation_profile_value" + assert arg == mock_val + + +def test_set_suggestion_feature_config_flattened_error(): + client = ConversationProfilesClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.set_suggestion_feature_config( + gcd_conversation_profile.SetSuggestionFeatureConfigRequest(), + conversation_profile="conversation_profile_value", + ) + + +@pytest.mark.asyncio +async def test_set_suggestion_feature_config_flattened_async(): + client = ConversationProfilesAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_suggestion_feature_config), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/op") + + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + response = await client.set_suggestion_feature_config( + conversation_profile="conversation_profile_value", + ) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + arg = args[0].conversation_profile + mock_val = "conversation_profile_value" + assert arg == mock_val + + +@pytest.mark.asyncio +async def test_set_suggestion_feature_config_flattened_error_async(): + client = ConversationProfilesAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + await client.set_suggestion_feature_config( + gcd_conversation_profile.SetSuggestionFeatureConfigRequest(), + conversation_profile="conversation_profile_value", + ) + + +@pytest.mark.parametrize( + "request_type", + [gcd_conversation_profile.ClearSuggestionFeatureConfigRequest, dict,], +) +def test_clear_suggestion_feature_config(request_type, transport: str = "grpc"): + client = ConversationProfilesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.clear_suggestion_feature_config), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/spam") + response = client.clear_suggestion_feature_config(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == gcd_conversation_profile.ClearSuggestionFeatureConfigRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) + + +def test_clear_suggestion_feature_config_empty_call(): + # This test is a coverage failsafe to make sure that totally empty calls, + # i.e. request == None and no flattened fields passed, work. + client = ConversationProfilesClient( + credentials=ga_credentials.AnonymousCredentials(), transport="grpc", + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.clear_suggestion_feature_config), "__call__" + ) as call: + client.clear_suggestion_feature_config() + call.assert_called() + _, args, _ = call.mock_calls[0] + assert args[0] == gcd_conversation_profile.ClearSuggestionFeatureConfigRequest() + + +@pytest.mark.asyncio +async def test_clear_suggestion_feature_config_async( + transport: str = "grpc_asyncio", + request_type=gcd_conversation_profile.ClearSuggestionFeatureConfigRequest, +): + client = ConversationProfilesAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.clear_suggestion_feature_config), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + response = await client.clear_suggestion_feature_config(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == gcd_conversation_profile.ClearSuggestionFeatureConfigRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) + + +@pytest.mark.asyncio +async def test_clear_suggestion_feature_config_async_from_dict(): + await test_clear_suggestion_feature_config_async(request_type=dict) + + +def test_clear_suggestion_feature_config_field_headers(): + client = ConversationProfilesClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = gcd_conversation_profile.ClearSuggestionFeatureConfigRequest() + + request.conversation_profile = "conversation_profile/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.clear_suggestion_feature_config), "__call__" + ) as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.clear_suggestion_feature_config(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "conversation_profile=conversation_profile/value", + ) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_clear_suggestion_feature_config_field_headers_async(): + client = ConversationProfilesAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = gcd_conversation_profile.ClearSuggestionFeatureConfigRequest() + + request.conversation_profile = "conversation_profile/value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.clear_suggestion_feature_config), "__call__" + ) as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/op") + ) + await client.clear_suggestion_feature_config(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "conversation_profile=conversation_profile/value", + ) in kw["metadata"] + + +def test_clear_suggestion_feature_config_flattened(): + client = ConversationProfilesClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.clear_suggestion_feature_config), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/op") + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + client.clear_suggestion_feature_config( + conversation_profile="conversation_profile_value", + ) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + arg = args[0].conversation_profile + mock_val = "conversation_profile_value" + assert arg == mock_val + + +def test_clear_suggestion_feature_config_flattened_error(): + client = ConversationProfilesClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.clear_suggestion_feature_config( + gcd_conversation_profile.ClearSuggestionFeatureConfigRequest(), + conversation_profile="conversation_profile_value", + ) + + +@pytest.mark.asyncio +async def test_clear_suggestion_feature_config_flattened_async(): + client = ConversationProfilesAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.clear_suggestion_feature_config), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/op") + + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + response = await client.clear_suggestion_feature_config( + conversation_profile="conversation_profile_value", + ) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + arg = args[0].conversation_profile + mock_val = "conversation_profile_value" + assert arg == mock_val + + +@pytest.mark.asyncio +async def test_clear_suggestion_feature_config_flattened_error_async(): + client = ConversationProfilesAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + await client.clear_suggestion_feature_config( + gcd_conversation_profile.ClearSuggestionFeatureConfigRequest(), + conversation_profile="conversation_profile_value", + ) + + def test_credentials_transport_error(): # It is an error to provide credentials and a transport instance. transport = transports.ConversationProfilesGrpcTransport( @@ -2200,6 +2675,8 @@ def test_conversation_profiles_base_transport(): "create_conversation_profile", "update_conversation_profile", "delete_conversation_profile", + "set_suggestion_feature_config", + "clear_suggestion_feature_config", ) for method in methods: with pytest.raises(NotImplementedError): @@ -2208,6 +2685,11 @@ def test_conversation_profiles_base_transport(): with pytest.raises(NotImplementedError): transport.close() + # Additionally, the LRO client (a property) should + # also raise NotImplementedError + with pytest.raises(NotImplementedError): + transport.operations_client + def test_conversation_profiles_base_transport_with_credentials_file(): # Instantiate the base transport with a credentials file @@ -2510,6 +2992,32 @@ def test_conversation_profiles_transport_channel_mtls_with_adc(transport_class): assert transport.grpc_channel == mock_grpc_channel +def test_conversation_profiles_grpc_lro_client(): + client = ConversationProfilesClient( + credentials=ga_credentials.AnonymousCredentials(), transport="grpc", + ) + transport = client.transport + + # Ensure that we have a api-core operations client. + assert isinstance(transport.operations_client, operations_v1.OperationsClient,) + + # Ensure that subsequent calls to the property send the exact same object. + assert transport.operations_client is transport.operations_client + + +def test_conversation_profiles_grpc_lro_async_client(): + client = ConversationProfilesAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), transport="grpc_asyncio", + ) + transport = client.transport + + # Ensure that we have a api-core operations client. + assert isinstance(transport.operations_client, operations_v1.OperationsAsyncClient,) + + # Ensure that subsequent calls to the property send the exact same object. + assert transport.operations_client is transport.operations_client + + def test_agent_path(): project = "squid" expected = "projects/{project}/agent".format(project=project,) diff --git a/tests/unit/gapic/dialogflow_v2/test_conversations.py b/tests/unit/gapic/dialogflow_v2/test_conversations.py index bbdfd3584..621fedbe4 100644 --- a/tests/unit/gapic/dialogflow_v2/test_conversations.py +++ b/tests/unit/gapic/dialogflow_v2/test_conversations.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2/test_documents.py b/tests/unit/gapic/dialogflow_v2/test_documents.py index 0c077435e..130f329c4 100644 --- a/tests/unit/gapic/dialogflow_v2/test_documents.py +++ b/tests/unit/gapic/dialogflow_v2/test_documents.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -972,6 +972,7 @@ def test_get_document(request_type, transport: str = "grpc"): mime_type="mime_type_value", knowledge_types=[document.Document.KnowledgeType.FAQ], enable_auto_reload=True, + state=document.Document.State.CREATING, content_uri="content_uri_value", ) response = client.get_document(request) @@ -988,6 +989,7 @@ def test_get_document(request_type, transport: str = "grpc"): assert response.mime_type == "mime_type_value" assert response.knowledge_types == [document.Document.KnowledgeType.FAQ] assert response.enable_auto_reload is True + assert response.state == document.Document.State.CREATING def test_get_document_empty_call(): @@ -1027,6 +1029,7 @@ async def test_get_document_async( mime_type="mime_type_value", knowledge_types=[document.Document.KnowledgeType.FAQ], enable_auto_reload=True, + state=document.Document.State.CREATING, ) ) response = await client.get_document(request) @@ -1043,6 +1046,7 @@ async def test_get_document_async( assert response.mime_type == "mime_type_value" assert response.knowledge_types == [document.Document.KnowledgeType.FAQ] assert response.enable_auto_reload is True + assert response.state == document.Document.State.CREATING @pytest.mark.asyncio diff --git a/tests/unit/gapic/dialogflow_v2/test_entity_types.py b/tests/unit/gapic/dialogflow_v2/test_entity_types.py index f4de60d57..a28c6730b 100644 --- a/tests/unit/gapic/dialogflow_v2/test_entity_types.py +++ b/tests/unit/gapic/dialogflow_v2/test_entity_types.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2/test_environments.py b/tests/unit/gapic/dialogflow_v2/test_environments.py index f1d90c24c..8e030750a 100644 --- a/tests/unit/gapic/dialogflow_v2/test_environments.py +++ b/tests/unit/gapic/dialogflow_v2/test_environments.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2/test_fulfillments.py b/tests/unit/gapic/dialogflow_v2/test_fulfillments.py index e3d5849b3..b8363464a 100644 --- a/tests/unit/gapic/dialogflow_v2/test_fulfillments.py +++ b/tests/unit/gapic/dialogflow_v2/test_fulfillments.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2/test_intents.py b/tests/unit/gapic/dialogflow_v2/test_intents.py index 9091677d0..02351dc14 100644 --- a/tests/unit/gapic/dialogflow_v2/test_intents.py +++ b/tests/unit/gapic/dialogflow_v2/test_intents.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2/test_knowledge_bases.py b/tests/unit/gapic/dialogflow_v2/test_knowledge_bases.py index 63404d163..733e42aa4 100644 --- a/tests/unit/gapic/dialogflow_v2/test_knowledge_bases.py +++ b/tests/unit/gapic/dialogflow_v2/test_knowledge_bases.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2/test_participants.py b/tests/unit/gapic/dialogflow_v2/test_participants.py index bc0e2e868..3633d154e 100644 --- a/tests/unit/gapic/dialogflow_v2/test_participants.py +++ b/tests/unit/gapic/dialogflow_v2/test_participants.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2/test_session_entity_types.py b/tests/unit/gapic/dialogflow_v2/test_session_entity_types.py index bcd25296e..0c0cee480 100644 --- a/tests/unit/gapic/dialogflow_v2/test_session_entity_types.py +++ b/tests/unit/gapic/dialogflow_v2/test_session_entity_types.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2/test_sessions.py b/tests/unit/gapic/dialogflow_v2/test_sessions.py index 33915ea90..dc0777cd8 100644 --- a/tests/unit/gapic/dialogflow_v2/test_sessions.py +++ b/tests/unit/gapic/dialogflow_v2/test_sessions.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2/test_versions.py b/tests/unit/gapic/dialogflow_v2/test_versions.py index 1a3cc890b..2d13678e0 100644 --- a/tests/unit/gapic/dialogflow_v2/test_versions.py +++ b/tests/unit/gapic/dialogflow_v2/test_versions.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2beta1/__init__.py b/tests/unit/gapic/dialogflow_v2beta1/__init__.py index 4de65971c..e8e1c3845 100644 --- a/tests/unit/gapic/dialogflow_v2beta1/__init__.py +++ b/tests/unit/gapic/dialogflow_v2beta1/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2beta1/test_agents.py b/tests/unit/gapic/dialogflow_v2beta1/test_agents.py index 8c8c88186..e966245cd 100644 --- a/tests/unit/gapic/dialogflow_v2beta1/test_agents.py +++ b/tests/unit/gapic/dialogflow_v2beta1/test_agents.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2beta1/test_answer_records.py b/tests/unit/gapic/dialogflow_v2beta1/test_answer_records.py index e1f103a98..08ddaf79f 100644 --- a/tests/unit/gapic/dialogflow_v2beta1/test_answer_records.py +++ b/tests/unit/gapic/dialogflow_v2beta1/test_answer_records.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2beta1/test_contexts.py b/tests/unit/gapic/dialogflow_v2beta1/test_contexts.py index 5c5b03c90..6ef215e50 100644 --- a/tests/unit/gapic/dialogflow_v2beta1/test_contexts.py +++ b/tests/unit/gapic/dialogflow_v2beta1/test_contexts.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2beta1/test_conversation_profiles.py b/tests/unit/gapic/dialogflow_v2beta1/test_conversation_profiles.py index b10548f06..fa8b39183 100644 --- a/tests/unit/gapic/dialogflow_v2beta1/test_conversation_profiles.py +++ b/tests/unit/gapic/dialogflow_v2beta1/test_conversation_profiles.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2beta1/test_conversations.py b/tests/unit/gapic/dialogflow_v2beta1/test_conversations.py index 8d411494a..7dbecb3e8 100644 --- a/tests/unit/gapic/dialogflow_v2beta1/test_conversations.py +++ b/tests/unit/gapic/dialogflow_v2beta1/test_conversations.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2beta1/test_documents.py b/tests/unit/gapic/dialogflow_v2beta1/test_documents.py index 44106179a..a2e011b03 100644 --- a/tests/unit/gapic/dialogflow_v2beta1/test_documents.py +++ b/tests/unit/gapic/dialogflow_v2beta1/test_documents.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2beta1/test_entity_types.py b/tests/unit/gapic/dialogflow_v2beta1/test_entity_types.py index 3e387087c..5493ded96 100644 --- a/tests/unit/gapic/dialogflow_v2beta1/test_entity_types.py +++ b/tests/unit/gapic/dialogflow_v2beta1/test_entity_types.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2beta1/test_environments.py b/tests/unit/gapic/dialogflow_v2beta1/test_environments.py index f687a4bc2..fd07d058d 100644 --- a/tests/unit/gapic/dialogflow_v2beta1/test_environments.py +++ b/tests/unit/gapic/dialogflow_v2beta1/test_environments.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2beta1/test_fulfillments.py b/tests/unit/gapic/dialogflow_v2beta1/test_fulfillments.py index ac840ee78..0392f22c3 100644 --- a/tests/unit/gapic/dialogflow_v2beta1/test_fulfillments.py +++ b/tests/unit/gapic/dialogflow_v2beta1/test_fulfillments.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2beta1/test_intents.py b/tests/unit/gapic/dialogflow_v2beta1/test_intents.py index fd6c26656..72b25f477 100644 --- a/tests/unit/gapic/dialogflow_v2beta1/test_intents.py +++ b/tests/unit/gapic/dialogflow_v2beta1/test_intents.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2beta1/test_knowledge_bases.py b/tests/unit/gapic/dialogflow_v2beta1/test_knowledge_bases.py index cdb83b9f2..1aece444a 100644 --- a/tests/unit/gapic/dialogflow_v2beta1/test_knowledge_bases.py +++ b/tests/unit/gapic/dialogflow_v2beta1/test_knowledge_bases.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2beta1/test_participants.py b/tests/unit/gapic/dialogflow_v2beta1/test_participants.py index fe215eaf1..145993052 100644 --- a/tests/unit/gapic/dialogflow_v2beta1/test_participants.py +++ b/tests/unit/gapic/dialogflow_v2beta1/test_participants.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2beta1/test_session_entity_types.py b/tests/unit/gapic/dialogflow_v2beta1/test_session_entity_types.py index 46c4a45bf..c18b784a4 100644 --- a/tests/unit/gapic/dialogflow_v2beta1/test_session_entity_types.py +++ b/tests/unit/gapic/dialogflow_v2beta1/test_session_entity_types.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2beta1/test_sessions.py b/tests/unit/gapic/dialogflow_v2beta1/test_sessions.py index 3e7e12014..e98e2afe2 100644 --- a/tests/unit/gapic/dialogflow_v2beta1/test_sessions.py +++ b/tests/unit/gapic/dialogflow_v2beta1/test_sessions.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/unit/gapic/dialogflow_v2beta1/test_versions.py b/tests/unit/gapic/dialogflow_v2beta1/test_versions.py index 2cf8fa801..a8ada3ac5 100644 --- a/tests/unit/gapic/dialogflow_v2beta1/test_versions.py +++ b/tests/unit/gapic/dialogflow_v2beta1/test_versions.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. From 1d1ac96d0a93edfde3d6d398b1adccddd70cfbc3 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 8 Mar 2022 12:36:38 -0500 Subject: [PATCH 9/9] chore(main): release 2.13.0 (#481) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- CHANGELOG.md | 26 ++++++++++++++++++++++++++ setup.py | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 09ac6d8e0..64012a679 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,32 @@ [1]: https://pypi.org/project/dialogflow/#history +## [2.13.0](https://github.com/googleapis/python-dialogflow/compare/v2.12.0...v2.13.0) (2022-03-08) + + +### Features + +* added ConversationDataset resource and its APIs ([bd93557](https://github.com/googleapis/python-dialogflow/commit/bd935578a57d7738796bf8d3c02dfca126bfdfbb)) +* added ConversationModel resource and its APIs ([bd93557](https://github.com/googleapis/python-dialogflow/commit/bd935578a57d7738796bf8d3c02dfca126bfdfbb)) +* added metadata for the Knowledge operation ([bd93557](https://github.com/googleapis/python-dialogflow/commit/bd935578a57d7738796bf8d3c02dfca126bfdfbb)) +* added new knowledge type of Document content ([bd93557](https://github.com/googleapis/python-dialogflow/commit/bd935578a57d7738796bf8d3c02dfca126bfdfbb)) +* added SetSuggestionFeatureConfig and ClearSuggestionFeatureConfig APIs for ConversationProfile ([bd93557](https://github.com/googleapis/python-dialogflow/commit/bd935578a57d7738796bf8d3c02dfca126bfdfbb)) +* added states of Document ([bd93557](https://github.com/googleapis/python-dialogflow/commit/bd935578a57d7738796bf8d3c02dfca126bfdfbb)) + + +### Bug Fixes + +* **deps:** require google-api-core>=1.31.5, >=2.3.2 ([#479](https://github.com/googleapis/python-dialogflow/issues/479)) ([4a62e80](https://github.com/googleapis/python-dialogflow/commit/4a62e80e045639061779bb097dacab744276973a)) +* **deps:** require proto-plus>=1.15.0 ([4a62e80](https://github.com/googleapis/python-dialogflow/commit/4a62e80e045639061779bb097dacab744276973a)) + + +### Documentation + +* added a new resource name pattern for ConversationModel ([bd93557](https://github.com/googleapis/python-dialogflow/commit/bd935578a57d7738796bf8d3c02dfca126bfdfbb)) +* clarified the behavior of language_code in EventInput ([#475](https://github.com/googleapis/python-dialogflow/issues/475)) ([bd93557](https://github.com/googleapis/python-dialogflow/commit/bd935578a57d7738796bf8d3c02dfca126bfdfbb)) +* clarified wording around Cloud Storage usage ([bd93557](https://github.com/googleapis/python-dialogflow/commit/bd935578a57d7738796bf8d3c02dfca126bfdfbb)) +* updated copyright ([bd93557](https://github.com/googleapis/python-dialogflow/commit/bd935578a57d7738796bf8d3c02dfca126bfdfbb)) + ## [2.12.0](https://github.com/googleapis/python-dialogflow/compare/v2.11.0...v2.12.0) (2022-02-11) diff --git a/setup.py b/setup.py index 4ad9c769e..95919c2ec 100644 --- a/setup.py +++ b/setup.py @@ -19,7 +19,7 @@ name = "dialogflow" description = "Client library for the Dialogflow API" -version = "2.12.0" +version = "2.13.0" release_status = "Development Status :: 5 - Production/Stable" dependencies = [ # NOTE: Maintainers, please do not require google-api-core>=2.x.x