public async Task PublishEvent(Guid id, string url, CancellationToken cancellationToken) { var eventdata = new TradiureTranscriptionRequest() { TranscriptionId = id, BlobUri = url }; await _client.PublishEventAsync(Components.PubSubName, Topics.TranscriptionSubmittedTopicName, eventdata, cancellationToken); }
private async Task PublishTranscriptionCompletion(string transcriptionId, string uri) { _logger.LogInformation($"{transcriptionId}. Azure Cognitive Services has completed processing transcription"); await UpdateStateRepository(TraduireTranscriptionStatus.Completed, HttpStatusCode.OK); var completionEvent = new TradiureTranscriptionRequest() { TranscriptionId = new Guid(transcriptionId), BlobUri = uri }; await _client.PublishEventAsync(Components.PubSubName, Topics.TranscriptionCompletedTopicName, completionEvent, CancellationToken.None); await UnregisterReminderAsync(ProcessingStatusReminder); }
public async Task <ActionResult> Transcribe(TradiureTranscriptionRequest request, CancellationToken cancellationToken) { try { _logger.LogInformation($"{request.TranscriptionId}. {request.BlobUri} was successfullly received by Dapr PubSub"); (Transcription response, HttpStatusCode code) = await _cogsClient.SubmitTranscriptionRequestAsync(new Uri(request.BlobUri)); await _serviceClient.PublishNotification(request.TranscriptionId.ToString(), response.Status); return(code switch { HttpStatusCode.Created => await HandleSuccess(response.Self, request.TranscriptionId), _ => await HandleFailure(response.Self, request.TranscriptionId), }); }
public async Task SubmitAsync(string transcriptionId, string uri) { transcriptionRequest = new TradiureTranscriptionRequest() { TranscriptionId = new Guid(transcriptionId), BlobUri = uri }; await UpdateStateRepository(TraduireTranscriptionStatus.Pending, HttpStatusCode.Accepted); _logger.LogInformation($"{transcriptionId}. Registering {ProcessingStatusReminder} Actor Reminder for {WAIT_TIME} seconds"); await RegisterReminderAsync( ProcessingStatusReminder, null, TimeSpan.FromSeconds(WAIT_TIME), TimeSpan.FromSeconds(WAIT_TIME)); }
public async Task <ActionResult> Transcribe(TradiureTranscriptionRequest request, CancellationToken cancellationToken) { try { _logger.LogInformation($"{request.TranscriptionId}. {request.BlobUri} was successfullly received by Dapr PubSub"); _logger.LogInformation($"{request.TranscriptionId}. Instantiating a Transcription Actor to handle saga"); var transcriptionActor = this.GetTranscriptionActor(request.TranscriptionId); await transcriptionActor.SubmitAsync(request.TranscriptionId.ToString(), request.BlobUri); return(Ok()); } catch (Exception ex) { _logger.LogWarning($"Nuts. Something really bad happened processing {request.BlobUri} - {ex.Message}"); } return(BadRequest()); }
public async Task <ActionResult> Transcribe(TradiureTranscriptionRequest request, CancellationToken cancellationToken) { try { _logger.LogInformation($"{request.TranscriptionId}. {request.BlobUri} was successfullly received by Dapr PubSub"); state = await _client.GetStateEntryAsync <TraduireTranscription>(Components.StateStoreName, request.TranscriptionId.ToString()); state.Value ??= new TraduireTranscription(); (TranscriptionResults result, HttpStatusCode code) = await _cogsClient.DownloadTranscriptionResultAsync(new Uri(request.BlobUri)); switch (code) { case HttpStatusCode.OK: _logger.LogInformation($"{request.TranscriptionId}. Transcription from '{request.BlobUri}' was saved to state store "); var firstChannel = result.CombinedRecognizedPhrases.FirstOrDefault(); await _serviceClient.PublishNotification(request.TranscriptionId.ToString(), state.Value.Status.ToString()); await UpdateStateRepository(TraduireTranscriptionStatus.Completed, firstChannel.Display); _logger.LogInformation($"{request.TranscriptionId}. All working completed on request"); return(Ok(request.TranscriptionId)); default: _logger.LogInformation($"{request.TranscriptionId}. Transcription Failed for an unexpected reason. Added to Failed Queue for review"); var failedEvent = await UpdateStateRepository(TraduireTranscriptionStatus.Failed, code, request.BlobUri); await _client.PublishEventAsync(Components.PubSubName, Topics.TranscriptionFailedTopicName, failedEvent, cancellationToken); break; } } catch (Exception ex) { _logger.LogWarning($"Nuts. Something really bad happened processing {request.BlobUri} - {ex.Message}"); } return(BadRequest()); }