# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
import grpc

from google.assistant.embedded.v1alpha2 import embedded_assistant_pb2 as google_dot_assistant_dot_embedded_dot_v1alpha2_dot_embedded__assistant__pb2


class EmbeddedAssistantStub(object):
  """Service that implements Google Assistant API.
  """

  def __init__(self, channel):
    """Constructor.

    Args:
      channel: A grpc.Channel.
    """
    self.Assist = channel.stream_stream(
        '/google.assistant.embedded.v1alpha2.EmbeddedAssistant/Assist',
        request_serializer=google_dot_assistant_dot_embedded_dot_v1alpha2_dot_embedded__assistant__pb2.AssistRequest.SerializeToString,
        response_deserializer=google_dot_assistant_dot_embedded_dot_v1alpha2_dot_embedded__assistant__pb2.AssistResponse.FromString,
        )


class EmbeddedAssistantServicer(object):
  """Service that implements Google Assistant API.
  """

  def Assist(self, request_iterator, context):
    """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:

    *   AssistRequest.config
    *   AssistRequest.audio_in
    *   AssistRequest.audio_in
    *   AssistRequest.audio_in
    *   AssistRequest.audio_in
    *   AssistResponse.event_type.END_OF_UTTERANCE
    *   AssistResponse.speech_results.transcript "add to my shopping list"
    *   AssistResponse.dialog_state_out.microphone_mode.DIALOG_FOLLOW_ON
    *   AssistResponse.audio_out
    *   AssistResponse.audio_out
    *   AssistResponse.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 `Assist` method, again with streamed requests and
    responses, such as:

    *   AssistRequest.config
    *   AssistRequest.audio_in
    *   AssistRequest.audio_in
    *   AssistRequest.audio_in
    *   AssistResponse.event_type.END_OF_UTTERANCE
    *   AssistResponse.dialog_state_out.microphone_mode.CLOSE_MICROPHONE
    *   AssistResponse.audio_out
    *   AssistResponse.audio_out
    *   AssistResponse.audio_out
    *   AssistResponse.audio_out

    Although the precise order of responses is not guaranteed, sequential
    AssistResponse.audio_out messages will always contain sequential portions
    of audio.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')


def add_EmbeddedAssistantServicer_to_server(servicer, server):
  rpc_method_handlers = {
      'Assist': grpc.stream_stream_rpc_method_handler(
          servicer.Assist,
          request_deserializer=google_dot_assistant_dot_embedded_dot_v1alpha2_dot_embedded__assistant__pb2.AssistRequest.FromString,
          response_serializer=google_dot_assistant_dot_embedded_dot_v1alpha2_dot_embedded__assistant__pb2.AssistResponse.SerializeToString,
      ),
  }
  generic_handler = grpc.method_handlers_generic_handler(
      'google.assistant.embedded.v1alpha2.EmbeddedAssistant', rpc_method_handlers)
  server.add_generic_rpc_handlers((generic_handler,))
