/// <summary>Snippet for StreamingDetectIntent</summary> public async Task StreamingDetectIntent() { // Snippet: StreamingDetectIntent(CallSettings, BidirectionalStreamingSettings) // Create client SessionsClient sessionsClient = SessionsClient.Create(); // Initialize streaming call, retrieving the stream object SessionsClient.StreamingDetectIntentStream response = sessionsClient.StreamingDetectIntent(); // Sending requests and retrieving responses can be arbitrarily interleaved // Exact sequence will depend on client/server behavior // Create task to do something with responses from server Task responseHandlerTask = Task.Run(async() => { // Note that C# 8 code can use await foreach AsyncResponseStream <StreamingDetectIntentResponse> responseStream = response.GetResponseStream(); while (await responseStream.MoveNextAsync()) { StreamingDetectIntentResponse responseItem = responseStream.Current; // Do something with streamed response } // The response stream has completed }); // Send requests to the server bool done = false; while (!done) { // Initialize a request StreamingDetectIntentRequest request = new StreamingDetectIntentRequest { Session = "", QueryParams = new QueryParameters(), QueryInput = new QueryInput(), OutputAudioConfig = new OutputAudioConfig(), InputAudio = ByteString.Empty, OutputAudioConfigMask = new FieldMask(), }; // Stream a request to the server await response.WriteAsync(request); // Set "done" to true when sending requests is complete } // Complete writing requests to the stream await response.WriteCompleteAsync(); // Await the response handler // This will complete once all server responses have been processed await responseHandlerTask; // End snippet }
/// <summary>Snippet for StreamingDetectIntent</summary> public async Task StreamingDetectIntent() { // Snippet: StreamingDetectIntent(CallSettings,BidirectionalStreamingSettings) // Create client SessionsClient sessionsClient = SessionsClient.Create(); // Initialize streaming call, retrieving the stream object SessionsClient.StreamingDetectIntentStream duplexStream = sessionsClient.StreamingDetectIntent(); // Sending requests and retrieving responses can be arbitrarily interleaved. // Exact sequence will depend on client/server behavior. // Create task to do something with responses from server Task responseHandlerTask = Task.Run(async() => { IAsyncEnumerator <StreamingDetectIntentResponse> responseStream = duplexStream.ResponseStream; while (await responseStream.MoveNext()) { StreamingDetectIntentResponse response = responseStream.Current; // Do something with streamed response } // The response stream has completed }); // Send requests to the server bool done = false; while (!done) { // Initialize a request StreamingDetectIntentRequest request = new StreamingDetectIntentRequest { Session = "", QueryInput = new QueryInput(), }; // Stream a request to the server await duplexStream.WriteAsync(request); // Set "done" to true when sending requests is complete } // Complete writing requests to the stream await duplexStream.WriteCompleteAsync(); // Await the response handler. // This will complete once all server responses have been processed. await responseHandlerTask; // End snippet }