Gemini Enterprise for Customer Experience v1 API - Class SessionService.SessionServiceBase (1.0.0-beta01)

[BindServiceMethod(typeof(SessionService), "BindService")]
public abstract class SessionService.SessionServiceBase

Reference documentation and code samples for the Gemini Enterprise for Customer Experience v1 API class SessionService.SessionServiceBase.

Base class for server-side implementations of SessionService

Inheritance

object > SessionService.SessionServiceBase

Namespace

Google.Cloud.Ces.V1

Assembly

Google.Cloud.Ces.V1.dll

Methods

BidiRunSession(IAsyncStreamReader<BidiSessionClientMessage>, IServerStreamWriter<BidiSessionServerMessage>, ServerCallContext)

public virtual Task BidiRunSession(IAsyncStreamReader<BidiSessionClientMessage> requestStream, IServerStreamWriter<BidiSessionServerMessage> responseStream, ServerCallContext context)

Establishes a bidirectional streaming connection with the CES agent. The agent processes continuous multimodal inputs (e.g., text, audio) and generates real-time multimodal output streams.

--- Client Request Stream --- The client streams requests in the following order:

  1. Initialization: The first message must contain [SessionConfig][google.cloud.ces.v1.BidiSessionClientMessage.config]. For audio sessions, this should also include [InputAudioConfig][google.cloud.ces.v1.SessionConfig.input_audio_config] and [OutputAudioConfig][google.cloud.ces.v1.SessionConfig.output_audio_config] to define audio processing and synthesis parameters.

  2. Interaction: Subsequent messages stream [SessionInput][google.cloud.ces.v1.BidiSessionClientMessage.realtime_input] containing real-time user input data.

  3. Termination: The client should half-close the stream when there is no more user input. It should also half-close upon receiving [EndSession][google.cloud.ces.v1.BidiSessionServerMessage.end_session] or [GoAway][google.cloud.ces.v1.BidiSessionServerMessage.go_away] from the agent.

--- Server Response Stream --- For each interaction turn, the agent streams messages in the following sequence:

  1. Speech Recognition (First N messages): Contains [RecognitionResult][google.cloud.ces.v1.BidiSessionServerMessage.recognition_result] representing the concatenated user speech segments captured so far. This is only populated for audio sessions.

  2. Response (Next M messages): Contains [SessionOutput][google.cloud.ces.v1.BidiSessionServerMessage.session_output] delivering the agent's response in various modalities (e.g., text, audio).

  3. Turn Completion (Final message of the turn): Contains [SessionOutput][google.cloud.ces.v1.BidiSessionServerMessage.session_output] with [turn_completed][google.cloud.ces.v1.SessionOutput.turn_completed] set to true. This signals the end of the current turn and includes [DiagnosticInfo][google.cloud.ces.v1.SessionOutput.diagnostic_info] with execution details.

--- Audio Best Practices ---

  1. Streaming: Stream [audio data][google.cloud.ces.v1.SessionInput.audio] CONTINUOUSLY, even during silence. Recommended chunk size: 40-120ms (balances latency vs. efficiency).

  2. Playback & Interruption: Play [audio responses][google.cloud.ces.v1.SessionOutput.audio] upon receipt. Stop playback immediately if an [InterruptionSignal][google.cloud.ces.v1.BidiSessionServerMessage.interruption_signal] is received (e.g., user barge-in or new agent response).

Parameters
Name Description
requestStream IAsyncStreamReaderBidiSessionClientMessage

Used for reading requests from the client.

responseStream IServerStreamWriterBidiSessionServerMessage

Used for sending responses back to the client.

context ServerCallContext

The context of the server-side call handler being invoked.

Returns
Type Description
Task

A task indicating completion of the handler.

RunSession(RunSessionRequest, ServerCallContext)

public virtual Task<RunSessionResponse> RunSession(RunSessionRequest request, ServerCallContext context)

Initiates a single turn interaction with the CES agent within a session.

Parameters
Name Description
request RunSessionRequest

The request received from the client.

context ServerCallContext

The context of the server-side call handler being invoked.

Returns
Type Description
TaskRunSessionResponse

The response to send back to the client (wrapped by a task).