Built motion from commit 6a09e18b.|2.6.11
[motion2.git] / legacy-libs / google-proto-files / google / assistant / embedded / v1alpha1 / embedded_assistant.proto
diff --git a/legacy-libs/google-proto-files/google/assistant/embedded/v1alpha1/embedded_assistant.proto b/legacy-libs/google-proto-files/google/assistant/embedded/v1alpha1/embedded_assistant.proto
new file mode 100644 (file)
index 0000000..79aa6cb
--- /dev/null
@@ -0,0 +1,281 @@
+// Copyright 2017 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.assistant.embedded.v1alpha1;
+
+import "google/api/annotations.proto";
+import "google/rpc/status.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/assistant/embedded/v1alpha1;embedded";
+option java_multiple_files = true;
+option java_outer_classname = "AssistantProto";
+option java_package = "com.google.assistant.embedded.v1alpha1";
+
+// Service that implements Google Assistant API.
+service EmbeddedAssistant {
+  // Initiates or continues a conversation with the embedded assistant service.
+  // Each call performs one round-trip, sending an audio request to the service
+  // and receiving the audio response. Uses bidirectional streaming to receive
+  // results, such as the `END_OF_UTTERANCE` event, while sending audio.
+  //
+  // A conversation is one or more gRPC connections, each consisting of several
+  // streamed requests and responses.
+  // For example, the user says *Add to my shopping list* and the assistant
+  // responds *What do you want to add?*. The sequence of streamed requests and
+  // responses in the first gRPC message could be:
+  //
+  // *   ConverseRequest.config
+  // *   ConverseRequest.audio_in
+  // *   ConverseRequest.audio_in
+  // *   ConverseRequest.audio_in
+  // *   ConverseRequest.audio_in
+  // *   ConverseResponse.event_type.END_OF_UTTERANCE
+  // *   ConverseResponse.result.microphone_mode.DIALOG_FOLLOW_ON
+  // *   ConverseResponse.audio_out
+  // *   ConverseResponse.audio_out
+  // *   ConverseResponse.audio_out
+  //
+  // The user then says *bagels* and the assistant responds
+  // *OK, I've added bagels to your shopping list*. This is sent as another gRPC
+  // connection call to the `Converse` method, again with streamed requests and
+  // responses, such as:
+  //
+  // *   ConverseRequest.config
+  // *   ConverseRequest.audio_in
+  // *   ConverseRequest.audio_in
+  // *   ConverseRequest.audio_in
+  // *   ConverseResponse.event_type.END_OF_UTTERANCE
+  // *   ConverseResponse.result.microphone_mode.CLOSE_MICROPHONE
+  // *   ConverseResponse.audio_out
+  // *   ConverseResponse.audio_out
+  // *   ConverseResponse.audio_out
+  // *   ConverseResponse.audio_out
+  //
+  // Although the precise order of responses is not guaranteed, sequential
+  // ConverseResponse.audio_out messages will always contain sequential portions
+  // of audio.
+  rpc Converse(stream ConverseRequest) returns (stream ConverseResponse);
+}
+
+// Specifies how to process the `ConverseRequest` messages.
+message ConverseConfig {
+  // *Required* Specifies how to process the subsequent incoming audio.
+  AudioInConfig audio_in_config = 1;
+
+  // *Required* Specifies how to format the audio that will be returned.
+  AudioOutConfig audio_out_config = 2;
+
+  // *Required* Represents the current dialog state.
+  ConverseState converse_state = 3;
+}
+
+// Specifies how to process the `audio_in` data that will be provided in
+// subsequent requests. For recommended settings, see the Google Assistant SDK
+// [best
+// practices](https://developers.google.com/assistant/sdk/develop/grpc/best-practices/audio).
+message AudioInConfig {
+  // Audio encoding of the data sent in the audio message.
+  // Audio must be one-channel (mono). The only language supported is "en-US".
+  enum Encoding {
+    // Not specified. Will return result [google.rpc.Code.INVALID_ARGUMENT][].
+    ENCODING_UNSPECIFIED = 0;
+
+    // Uncompressed 16-bit signed little-endian samples (Linear PCM).
+    // This encoding includes no header, only the raw audio bytes.
+    LINEAR16 = 1;
+
+    // [`FLAC`](https://xiph.org/flac/documentation.html) (Free Lossless Audio
+    // Codec) is the recommended encoding because it is
+    // lossless--therefore recognition is not compromised--and
+    // requires only about half the bandwidth of `LINEAR16`. This encoding
+    // includes the `FLAC` stream header followed by audio data. It supports
+    // 16-bit and 24-bit samples, however, not all fields in `STREAMINFO` are
+    // supported.
+    FLAC = 2;
+  }
+
+  // *Required* Encoding of audio data sent in all `audio_in` messages.
+  Encoding encoding = 1;
+
+  // *Required* Sample rate (in Hertz) of the audio data sent in all `audio_in`
+  // messages. Valid values are from 16000-24000, but 16000 is optimal.
+  // For best results, set the sampling rate of the audio source to 16000 Hz.
+  // If that's not possible, use the native sample rate of the audio source
+  // (instead of re-sampling).
+  int32 sample_rate_hertz = 2;
+}
+
+// Specifies the desired format for the server to use when it returns
+// `audio_out` messages.
+message AudioOutConfig {
+  // Audio encoding of the data returned in the audio message. All encodings are
+  // raw audio bytes with no header, except as indicated below.
+  enum Encoding {
+    // Not specified. Will return result [google.rpc.Code.INVALID_ARGUMENT][].
+    ENCODING_UNSPECIFIED = 0;
+
+    // Uncompressed 16-bit signed little-endian samples (Linear PCM).
+    LINEAR16 = 1;
+
+    // MP3 audio encoding. The sample rate is encoded in the payload.
+    MP3 = 2;
+
+    // Opus-encoded audio wrapped in an ogg container. The result will be a
+    // file which can be played natively on Android and in some browsers (such
+    // as Chrome). The quality of the encoding is considerably higher than MP3
+    // while using the same bitrate. The sample rate is encoded in the payload.
+    OPUS_IN_OGG = 3;
+  }
+
+  // *Required* The encoding of audio data to be returned in all `audio_out`
+  // messages.
+  Encoding encoding = 1;
+
+  // *Required* The sample rate in Hertz of the audio data returned in
+  // `audio_out` messages. Valid values are: 16000-24000.
+  int32 sample_rate_hertz = 2;
+
+  // *Required* Current volume setting of the device's audio output.
+  // Valid values are 1 to 100 (corresponding to 1% to 100%).
+  int32 volume_percentage = 3;
+}
+
+// Provides information about the current dialog state.
+message ConverseState {
+  // *Required* The `conversation_state` value returned in the prior
+  // `ConverseResponse`. Omit (do not set the field) if there was no prior
+  // `ConverseResponse`. If there was a prior `ConverseResponse`, do not omit
+  // this field; doing so will end that conversation (and this new request will
+  // start a new conversation).
+  bytes conversation_state = 1;
+}
+
+// The audio containing the assistant's response to the query. Sequential chunks
+// of audio data are received in sequential `ConverseResponse` messages.
+message AudioOut {
+  // *Output-only* The audio data containing the assistant's response to the
+  // query. Sequential chunks of audio data are received in sequential
+  // `ConverseResponse` messages.
+  bytes audio_data = 1;
+}
+
+// The semantic result for the user's spoken query.
+message ConverseResult {
+  // Possible states of the microphone after a `Converse` RPC completes.
+  enum MicrophoneMode {
+    // No mode specified.
+    MICROPHONE_MODE_UNSPECIFIED = 0;
+
+    // The service is not expecting a follow-on question from the user.
+    // The microphone should remain off until the user re-activates it.
+    CLOSE_MICROPHONE = 1;
+
+    // The service is expecting a follow-on question from the user. The
+    // microphone should be re-opened when the `AudioOut` playback completes
+    // (by starting a new `Converse` RPC call to send the new audio).
+    DIALOG_FOLLOW_ON = 2;
+  }
+
+  // *Output-only* The recognized transcript of what the user said.
+  string spoken_request_text = 1;
+
+  // *Output-only* The text of the assistant's spoken response. This is only
+  // returned for an IFTTT action.
+  string spoken_response_text = 2;
+
+  // *Output-only* State information for subsequent `ConverseRequest`. This
+  // value should be saved in the client and returned in the
+  // `conversation_state` with the next `ConverseRequest`. (The client does not
+  // need to interpret or otherwise use this value.) There is no need to save
+  // this information across device restarts.
+  bytes conversation_state = 3;
+
+  // *Output-only* Specifies the mode of the microphone after this `Converse`
+  // RPC is processed.
+  MicrophoneMode microphone_mode = 4;
+
+  // *Output-only* Updated volume level. The value will be 0 or omitted
+  // (indicating no change) unless a voice command such as "Increase the volume"
+  // or "Set volume level 4" was recognized, in which case the value will be
+  // between 1 and 100 (corresponding to the new volume level of 1% to 100%).
+  // Typically, a client should use this volume level when playing the
+  // `audio_out` data, and retain this value as the current volume level and
+  // supply it in the `AudioOutConfig` of the next `ConverseRequest`. (Some
+  // clients may also implement other ways to allow the current volume level to
+  // be changed, for example, by providing a knob that the user can turn.)
+  int32 volume_percentage = 5;
+}
+
+// The top-level message sent by the client. Clients must send at least two, and
+// typically numerous `ConverseRequest` messages. The first message must
+// contain a `config` message and must not contain `audio_in` data. All
+// subsequent messages must contain `audio_in` data and must not contain a
+// `config` message.
+message ConverseRequest {
+  // Exactly one of these fields must be specified in each `ConverseRequest`.
+  oneof converse_request {
+    // The `config` message provides information to the recognizer that
+    // specifies how to process the request.
+    // The first `ConverseRequest` message must contain a `config` message.
+    ConverseConfig config = 1;
+
+    // The audio data to be recognized. Sequential chunks of audio data are sent
+    // in sequential `ConverseRequest` messages. The first `ConverseRequest`
+    // message must not contain `audio_in` data and all subsequent
+    // `ConverseRequest` messages must contain `audio_in` data. The audio bytes
+    // must be encoded as specified in `AudioInConfig`.
+    // Audio must be sent at approximately real-time (16000 samples per second).
+    // An error will be returned if audio is sent significantly faster or
+    // slower.
+    bytes audio_in = 2;
+  }
+}
+
+// The top-level message received by the client. A series of one or more
+// `ConverseResponse` messages are streamed back to the client.
+message ConverseResponse {
+  // Indicates the type of event.
+  enum EventType {
+    // No event specified.
+    EVENT_TYPE_UNSPECIFIED = 0;
+
+    // This event indicates that the server has detected the end of the user's
+    // speech utterance and expects no additional speech. Therefore, the server
+    // will not process additional audio (although it may subsequently return
+    // additional results). The client should stop sending additional audio
+    // data, half-close the gRPC connection, and wait for any additional results
+    // until the server closes the gRPC connection.
+    END_OF_UTTERANCE = 1;
+  }
+
+  // Exactly one of these fields will be populated in each `ConverseResponse`.
+  oneof converse_response {
+    // *Output-only* If set, returns a [google.rpc.Status][google.rpc.Status]
+    // message that specifies the error for the operation. If an error occurs
+    // during processing, this message will be set and there will be no further
+    // messages sent.
+    google.rpc.Status error = 1;
+
+    // *Output-only* Indicates the type of event.
+    EventType event_type = 2;
+
+    // *Output-only* The audio containing the assistant's response to the query.
+    AudioOut audio_out = 3;
+
+    // *Output-only* The semantic result for the user's spoken query.
+    ConverseResult result = 5;
+  }
+}