From 4de416f616c8d3be32ea5cf54a49527e0a642db4 Mon Sep 17 00:00:00 2001 From: Google APIs Date: Fri, 5 May 2023 22:26:48 -0700 Subject: [PATCH] feat: extended CreateAgent timeout to 180 seconds feat: added debug info to StreamingDetectIntent feat: added dtmf digits to WebhookRequest feat: added FLOW as a new DiffType in TestRunDifference PiperOrigin-RevId: 529897408 --- .../cloud/dialogflow/cx/v3beta1/BUILD.bazel | 1 + .../cx/v3beta1/advanced_settings.proto | 2 +- .../cloud/dialogflow/cx/v3beta1/agent.proto | 4 +- .../dialogflow/cx/v3beta1/audio_config.proto | 24 +++++- .../dialogflow/cx/v3beta1/changelog.proto | 2 +- .../dialogflow/cx/v3beta1/deployment.proto | 2 +- .../dialogflow_grpc_service_config.json | 17 ++++ .../cx/v3beta1/dialogflow_v3beta1.yaml | 7 +- .../dialogflow/cx/v3beta1/entity_type.proto | 2 +- .../dialogflow/cx/v3beta1/environment.proto | 2 +- .../dialogflow/cx/v3beta1/experiment.proto | 2 +- google/cloud/dialogflow/cx/v3beta1/flow.proto | 2 +- .../dialogflow/cx/v3beta1/fulfillment.proto | 2 +- google/cloud/dialogflow/cx/v3beta1/gcs.proto | 8 +- .../cloud/dialogflow/cx/v3beta1/intent.proto | 2 +- google/cloud/dialogflow/cx/v3beta1/page.proto | 2 +- .../cx/v3beta1/response_message.proto | 2 +- .../cx/v3beta1/security_settings.proto | 2 +- .../cloud/dialogflow/cx/v3beta1/session.proto | 80 ++++++++++++++++++- .../cx/v3beta1/session_entity_type.proto | 2 +- .../dialogflow/cx/v3beta1/test_case.proto | 11 ++- .../cx/v3beta1/transition_route_group.proto | 2 +- .../cx/v3beta1/validation_message.proto | 2 +- .../cloud/dialogflow/cx/v3beta1/version.proto | 2 +- .../cloud/dialogflow/cx/v3beta1/webhook.proto | 6 +- 25 files changed, 150 insertions(+), 40 deletions(-) diff --git a/google/cloud/dialogflow/cx/v3beta1/BUILD.bazel b/google/cloud/dialogflow/cx/v3beta1/BUILD.bazel index 7a29f40739..a9c3a16114 100644 --- a/google/cloud/dialogflow/cx/v3beta1/BUILD.bazel +++ b/google/cloud/dialogflow/cx/v3beta1/BUILD.bazel @@ -298,6 +298,7 @@ php_gapic_library( name = "cx_php_gapic", srcs = [":cx_proto_with_info"], grpc_service_config = "dialogflow_grpc_service_config.json", + migration_mode = "PRE_MIGRATION_SURFACE_ONLY", rest_numeric_enums = True, service_yaml = "dialogflow_v3beta1.yaml", transport = "grpc+rest", diff --git a/google/cloud/dialogflow/cx/v3beta1/advanced_settings.proto b/google/cloud/dialogflow/cx/v3beta1/advanced_settings.proto index 32e181b8a8..983fb1ff87 100644 --- a/google/cloud/dialogflow/cx/v3beta1/advanced_settings.proto +++ b/google/cloud/dialogflow/cx/v3beta1/advanced_settings.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 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/cx/v3beta1/agent.proto b/google/cloud/dialogflow/cx/v3beta1/agent.proto index d3f314ee4f..403b185980 100644 --- a/google/cloud/dialogflow/cx/v3beta1/agent.proto +++ b/google/cloud/dialogflow/cx/v3beta1/agent.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -416,7 +416,7 @@ message ExportAgentResponse { // The exported agent. oneof agent { // The URI to a file containing the exported agent. This field is populated - // only if `agent_uri` is specified in + // if `agent_uri` is specified in // [ExportAgentRequest][google.cloud.dialogflow.cx.v3beta1.ExportAgentRequest]. string agent_uri = 1; diff --git a/google/cloud/dialogflow/cx/v3beta1/audio_config.proto b/google/cloud/dialogflow/cx/v3beta1/audio_config.proto index 455b3695cb..7c6cf8bf9c 100644 --- a/google/cloud/dialogflow/cx/v3beta1/audio_config.proto +++ b/google/cloud/dialogflow/cx/v3beta1/audio_config.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -190,6 +190,12 @@ message InputAudioConfig { // [Cloud Speech API // documentation](https://cloud.google.com/speech-to-text/docs/basics#select-model) // for more details. + // If you specify a model, the following models typically have the best + // performance: + // + // - phone_call (best for Agent Assist and telephony) + // - latest_short (best for Dialogflow non-telephony) + // - command_and_search (best for very short utterances and commands) string model = 7; // Optional. Which variant of the [Speech @@ -317,10 +323,20 @@ message OutputAudioConfig { SynthesizeSpeechConfig synthesize_speech_config = 3; } -// Settings related to speech generating. +// Settings related to speech synthesizing. message TextToSpeechSettings { - // Configuration of how speech should be synthesized, mapping from - // language (https://dialogflow.com/docs/reference/language) to + // Configuration of how speech should be synthesized, mapping from language + // (https://cloud.google.com/dialogflow/cx/docs/reference/language) to // SynthesizeSpeechConfig. + // + // These settings affect: + // + // - The synthesize configuration used in [phone + // gateway](https://cloud.google.com/dialogflow/cx/docs/concept/integration/phone-gateway). + // + // - You no longer need to specify + // [OutputAudioConfig.synthesize_speech_config][google.cloud.dialogflow.cx.v3beta1.OutputAudioConfig.synthesize_speech_config] + // when invoking API calls. Your agent will use the pre-configured options + // for speech synthesizing. map synthesize_speech_configs = 1; } diff --git a/google/cloud/dialogflow/cx/v3beta1/changelog.proto b/google/cloud/dialogflow/cx/v3beta1/changelog.proto index 2a51f5c57f..e25e7c672a 100644 --- a/google/cloud/dialogflow/cx/v3beta1/changelog.proto +++ b/google/cloud/dialogflow/cx/v3beta1/changelog.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 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/cx/v3beta1/deployment.proto b/google/cloud/dialogflow/cx/v3beta1/deployment.proto index 580c753ea1..3ace56c7ae 100644 --- a/google/cloud/dialogflow/cx/v3beta1/deployment.proto +++ b/google/cloud/dialogflow/cx/v3beta1/deployment.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 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/cx/v3beta1/dialogflow_grpc_service_config.json b/google/cloud/dialogflow/cx/v3beta1/dialogflow_grpc_service_config.json index 9b81916b48..b2c1262d38 100644 --- a/google/cloud/dialogflow/cx/v3beta1/dialogflow_grpc_service_config.json +++ b/google/cloud/dialogflow/cx/v3beta1/dialogflow_grpc_service_config.json @@ -70,6 +70,23 @@ ] } }, + { + "name": [ + { + "service": "google.cloud.dialogflow.cx.v3beta1.Agents", + "method": "CreateAgent" + } + ], + "timeout": "180s", + "retryPolicy": { + "initialBackoff": "0.100s", + "maxBackoff": "60s", + "backoffMultiplier": 1.3, + "retryableStatusCodes": [ + "UNAVAILABLE" + ] + } + }, { "name": [ { diff --git a/google/cloud/dialogflow/cx/v3beta1/dialogflow_v3beta1.yaml b/google/cloud/dialogflow/cx/v3beta1/dialogflow_v3beta1.yaml index fa2e0db6df..0119290df7 100644 --- a/google/cloud/dialogflow/cx/v3beta1/dialogflow_v3beta1.yaml +++ b/google/cloud/dialogflow/cx/v3beta1/dialogflow_v3beta1.yaml @@ -70,15 +70,12 @@ documentation: - selector: google.cloud.location.Locations.ListLocations description: Lists information about the supported locations for this service. - - selector: google.longrunning.Operations.ListOperations - description: |- - Lists operations that match the specified filter in the request. If - the server doesn't support this method, it returns `UNIMPLEMENTED`. - backend: rules: - selector: 'google.cloud.dialogflow.cx.v3beta1.Agents.*' deadline: 60.0 + - selector: google.cloud.dialogflow.cx.v3beta1.Agents.CreateAgent + deadline: 180.0 - selector: google.cloud.dialogflow.cx.v3beta1.Changelogs.GetChangelog deadline: 60.0 - selector: google.cloud.dialogflow.cx.v3beta1.Changelogs.ListChangelogs diff --git a/google/cloud/dialogflow/cx/v3beta1/entity_type.proto b/google/cloud/dialogflow/cx/v3beta1/entity_type.proto index d7b08b81e3..41d853e7d2 100644 --- a/google/cloud/dialogflow/cx/v3beta1/entity_type.proto +++ b/google/cloud/dialogflow/cx/v3beta1/entity_type.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 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/cx/v3beta1/environment.proto b/google/cloud/dialogflow/cx/v3beta1/environment.proto index 6b975bf997..140af1ab0d 100644 --- a/google/cloud/dialogflow/cx/v3beta1/environment.proto +++ b/google/cloud/dialogflow/cx/v3beta1/environment.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 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/cx/v3beta1/experiment.proto b/google/cloud/dialogflow/cx/v3beta1/experiment.proto index 8c33b259da..e9f8e51a40 100644 --- a/google/cloud/dialogflow/cx/v3beta1/experiment.proto +++ b/google/cloud/dialogflow/cx/v3beta1/experiment.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 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/cx/v3beta1/flow.proto b/google/cloud/dialogflow/cx/v3beta1/flow.proto index 736ce1acdd..f85168113d 100644 --- a/google/cloud/dialogflow/cx/v3beta1/flow.proto +++ b/google/cloud/dialogflow/cx/v3beta1/flow.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 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/cx/v3beta1/fulfillment.proto b/google/cloud/dialogflow/cx/v3beta1/fulfillment.proto index 76c90b48b7..23d8e388de 100644 --- a/google/cloud/dialogflow/cx/v3beta1/fulfillment.proto +++ b/google/cloud/dialogflow/cx/v3beta1/fulfillment.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 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/cx/v3beta1/gcs.proto b/google/cloud/dialogflow/cx/v3beta1/gcs.proto index 19ed9a8f1e..c0b4d747f6 100644 --- a/google/cloud/dialogflow/cx/v3beta1/gcs.proto +++ b/google/cloud/dialogflow/cx/v3beta1/gcs.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 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,9 +31,7 @@ option ruby_package = "Google::Cloud::Dialogflow::CX::V3beta1"; // exports objects (e.g. exported agent or transcripts) outside of Dialogflow. message GcsDestination { // Required. The Google Cloud Storage URI for the exported objects. A URI is - // of the form: - // gs://bucket/object-name-or-prefix - // Whether a full object name, or just a prefix, its usage depends on the - // Dialogflow operation. + // of the form: `gs://bucket/object-name-or-prefix` Whether a full object + // name, or just a prefix, its usage depends on the Dialogflow operation. string uri = 1 [(google.api.field_behavior) = REQUIRED]; } diff --git a/google/cloud/dialogflow/cx/v3beta1/intent.proto b/google/cloud/dialogflow/cx/v3beta1/intent.proto index d3bf64da00..b62ae80682 100644 --- a/google/cloud/dialogflow/cx/v3beta1/intent.proto +++ b/google/cloud/dialogflow/cx/v3beta1/intent.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 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/cx/v3beta1/page.proto b/google/cloud/dialogflow/cx/v3beta1/page.proto index d0aa008e2f..6c59bcea40 100644 --- a/google/cloud/dialogflow/cx/v3beta1/page.proto +++ b/google/cloud/dialogflow/cx/v3beta1/page.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 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/cx/v3beta1/response_message.proto b/google/cloud/dialogflow/cx/v3beta1/response_message.proto index 4ebf02cd1b..ba7dcbf288 100644 --- a/google/cloud/dialogflow/cx/v3beta1/response_message.proto +++ b/google/cloud/dialogflow/cx/v3beta1/response_message.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 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/cx/v3beta1/security_settings.proto b/google/cloud/dialogflow/cx/v3beta1/security_settings.proto index 03fc1e392b..08d59f8627 100644 --- a/google/cloud/dialogflow/cx/v3beta1/security_settings.proto +++ b/google/cloud/dialogflow/cx/v3beta1/security_settings.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 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/cx/v3beta1/session.proto b/google/cloud/dialogflow/cx/v3beta1/session.proto index 0d1f3c31c2..4e691c5ba4 100644 --- a/google/cloud/dialogflow/cx/v3beta1/session.proto +++ b/google/cloud/dialogflow/cx/v3beta1/session.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -267,6 +267,74 @@ message StreamingDetectIntentRequest { // if some `Fulfillment`s in the agent have been configured to return partial // responses. bool enable_partial_response = 5; + + // If true, `StreamingDetectIntentResponse.debugging_info` will get populated. + bool enable_debugging_info = 8; +} + +// Cloud conversation info for easier debugging. +// It will get populated in `StreamingDetectIntentResponse` or +// `StreamingAnalyzeContentResponse` when the flag `enable_debugging_info` is +// set to true in corresponding requests. +message CloudConversationDebuggingInfo { + // Number of input audio data chunks in streaming requests. + int32 audio_data_chunks = 1; + + // Time offset of the end of speech utterance relative to the + // beginning of the first audio chunk. + google.protobuf.Duration result_end_time_offset = 2; + + // Duration of first audio chunk. + google.protobuf.Duration first_audio_duration = 3; + + // Whether client used single utterance mode. + bool single_utterance = 5; + + // Time offsets of the speech partial results relative to the beginning of + // the stream. + repeated google.protobuf.Duration speech_partial_results_end_times = 6; + + // Time offsets of the speech final results (is_final=true) relative to the + // beginning of the stream. + repeated google.protobuf.Duration speech_final_results_end_times = 7; + + // Total number of partial responses. + int32 partial_responses = 8; + + // Time offset of Speaker ID stream close time relative to the Speech stream + // close time in milliseconds. Only meaningful for conversations involving + // passive verification. + int32 speaker_id_passive_latency_ms_offset = 9; + + // Whether a barge-in event is triggered in this request. + bool bargein_event_triggered = 10; + + // Whether speech uses single utterance mode. + bool speech_single_utterance = 11; + + // Time offsets of the DTMF partial results relative to the beginning of + // the stream. + repeated google.protobuf.Duration dtmf_partial_results_times = 12; + + // Time offsets of the DTMF final results relative to the beginning of + // the stream. + repeated google.protobuf.Duration dtmf_final_results_times = 13; + + // Time offset of the end-of-single-utterance signal relative to the + // beginning of the stream. + google.protobuf.Duration single_utterance_end_time_offset = 14; + + // No speech timeout settings observed at runtime. + google.protobuf.Duration no_speech_timeout = 15; + + // Whether the streaming terminates with an injected text query. + bool is_input_text = 16; + + // Client half close time in terms of input audio duration. + google.protobuf.Duration client_half_close_time_offset = 17; + + // Client half close time in terms of API streaming duration. + google.protobuf.Duration client_half_close_streaming_time_offset = 18; } // The top-level message returned from the @@ -306,6 +374,10 @@ message StreamingDetectIntentResponse { // The response from detect intent. DetectIntentResponse detect_intent_response = 2; } + + // Debugging info that would get populated when + // `StreamingDetectIntentRequest.enable_debugging_info` is set to true. + CloudConversationDebuggingInfo debugging_info = 4; } // Contains a speech recognition result corresponding to a portion of the audio @@ -538,6 +610,7 @@ message QueryParameters { // // 4. An event to be triggered. // +// 5. DTMF digits to invoke an intent and fill in parameter value. message QueryInput { // Required. The input specification. oneof input { @@ -589,8 +662,9 @@ message QueryResult { // as input, this field will contain the name of the event. string trigger_event = 14; - // If a [DTMF][DTMFInput] was provided as input, this field will contain - // a copy of the [DTMFInput][]. + // If a [DTMF][google.cloud.dialogflow.cx.v3beta1.DtmfInput] was provided as + // input, this field will contain a copy of the + // [DtmfInput][google.cloud.dialogflow.cx.v3beta1.DtmfInput]. DtmfInput dtmf = 23; } diff --git a/google/cloud/dialogflow/cx/v3beta1/session_entity_type.proto b/google/cloud/dialogflow/cx/v3beta1/session_entity_type.proto index 4df5508df1..0297d628ec 100644 --- a/google/cloud/dialogflow/cx/v3beta1/session_entity_type.proto +++ b/google/cloud/dialogflow/cx/v3beta1/session_entity_type.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 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/cx/v3beta1/test_case.proto b/google/cloud/dialogflow/cx/v3beta1/test_case.proto index 837db529c9..62e0d5e6d7 100644 --- a/google/cloud/dialogflow/cx/v3beta1/test_case.proto +++ b/google/cloud/dialogflow/cx/v3beta1/test_case.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -398,6 +398,9 @@ message TestRunDifference { // The message utterance. UTTERANCE = 4; + + // The flow. + FLOW = 5; } // The type of diff. @@ -438,7 +441,7 @@ message TransitionCoverage { // The end node of a transition. TransitionNode target = 2; - // Whether or not the transition is covered by at least one of the + // Whether the transition is covered by at least one of the // agent's test cases. bool covered = 3; @@ -470,7 +473,7 @@ message TransitionRouteGroupCoverage { // Intent route or condition route. TransitionRoute transition_route = 1; - // Whether or not the transition route is covered by at least one of the + // Whether the transition route is covered by at least one of the // agent's test cases. bool covered = 2; } @@ -504,7 +507,7 @@ message IntentCoverage { type: "dialogflow.googleapis.com/Intent" }]; - // Whether or not the intent is covered by at least one of the agent's + // Whether the intent is covered by at least one of the agent's // test cases. bool covered = 2; } diff --git a/google/cloud/dialogflow/cx/v3beta1/transition_route_group.proto b/google/cloud/dialogflow/cx/v3beta1/transition_route_group.proto index d92e09e6a3..e616c7a371 100644 --- a/google/cloud/dialogflow/cx/v3beta1/transition_route_group.proto +++ b/google/cloud/dialogflow/cx/v3beta1/transition_route_group.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 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/cx/v3beta1/validation_message.proto b/google/cloud/dialogflow/cx/v3beta1/validation_message.proto index 57acc9ee42..96ec7c6ddf 100644 --- a/google/cloud/dialogflow/cx/v3beta1/validation_message.proto +++ b/google/cloud/dialogflow/cx/v3beta1/validation_message.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 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/cx/v3beta1/version.proto b/google/cloud/dialogflow/cx/v3beta1/version.proto index 52b58025be..452fd8b00c 100644 --- a/google/cloud/dialogflow/cx/v3beta1/version.proto +++ b/google/cloud/dialogflow/cx/v3beta1/version.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 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/cx/v3beta1/webhook.proto b/google/cloud/dialogflow/cx/v3beta1/webhook.proto index 2e818508ee..878f34ccbd 100644 --- a/google/cloud/dialogflow/cx/v3beta1/webhook.proto +++ b/google/cloud/dialogflow/cx/v3beta1/webhook.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -373,6 +373,10 @@ message WebhookRequest { // If an [event][google.cloud.dialogflow.cx.v3beta1.EventInput] was provided // as input, this field will contain the name of the event. string trigger_event = 14; + + // If [DTMF][google.cloud.dialogflow.cx.v3beta1.DtmfInput] was provided as + // input, this field will contain the DTMF digits. + string dtmf_digits = 17; } // The language code specified in the [original