Echtzeit-Transkription in Videoanrufen der ACS GroupC#

Ein Treffpunkt für C#-Programmierer
Guest
 Echtzeit-Transkription in Videoanrufen der ACS Group

Post by Guest »

Ich habe an der Implementierung der Echtzeit-Transkriptionsfunktion von Azure Communication Services (ACS) gearbeitet und die Schritte befolgt, die unter https://learn.microsoft.com/en-us/azure ... rvices/how beschrieben sind -tos/call-automation/real-time-transcription-tutorial?pivots=programming-sprache-csharp
Hier ist der Workflow, dem ich folge:
Vom Frontend aus erfasse ich die serverCallId, wenn ich einen Anruf mit dem Call Composite starte.
  • Ich übergebe die serverCallId und die groupCallID an meine Backend-API und rufen Sie die StartTranscription-Methode auf.
  • Ich habe einen WebSocket-Server eingerichtet, um die transkribierten Daten in Echtzeit zu empfangen.
  • Die StartTranscription-Methode gibt erfolgreich a zurück 202-Antwort mit einer gültigen CallConnectionId. (Beispiel: „16008280-6e77-4226-ac14-1d1235dffe21“). Wenn ich jedoch versuche, die Transkription mithilfe der CallConnectionId im folgenden Code zu stoppen, tritt die folgende Fehlermeldung auf:

Code: Select all

[HttpPost("start-tanscription")]
public async Task StartTranscription([FromBody] StartRecordingRequest request)
{
try
{
var serverCallId = new ServerCallLocator(request.ServerCallId);
var websocketUri = callbackUriHost.Replace("https", "wss") + "ws";
_logger.LogInformation($"Callback url: {callbackUri}, websocket Url: {websocketUri}");

var callInvite = new GroupCallLocator(request.GroupCallId);
var connectOptions = new ConnectCallOptions(callInvite, callbackUri)
{
CallIntelligenceOptions = new CallIntelligenceOptions()
{
CognitiveServicesEndpoint = new Uri(_cognitiveServicesEndpoint)
},
TranscriptionOptions = new TranscriptionOptions(
new Uri(websocketUri),
"en-US",
false,
TranscriptionTransport.Websocket
),
};
var createCallResultResponse = _callAutomationClient.ConnectCall(connectOptions);
var callConnectionMedia = createCallResultResponse.CallConnection.GetCallMedia();

StartTranscriptionOptions startTrasnscriptionOption = new StartTranscriptionOptions()
{
Locale = "en-US",
OperationContext = "startMediaStreamingContext"
};

await callConnectionMedia.StartTranscriptionAsync(startTrasnscriptionOption);
_logger.LogInformation("Real-time transcription started...");

_callAutomationClient.GetEventProcessor().AttachOngoingEventProcessor(
createCallResult.CallConnection.CallConnectionId, async (TranscriptionFailed) =>
{
_logger.LogInformation($"Received transcription event: {TranscriptionFailed.GetType()}, CorrelationId: {TranscriptionFailed.CorrelationId}, " +
$"SubCode: {TranscriptionFailed?.ResultInformation?.SubCode}, Message: {TranscriptionFailed?.ResultInformation?.Message}");
});
return Ok(new { CallConnectionId = createCallResult.CallConnection.CallConnectionId });
}
catch (Exception ex)
{
_logger.LogError(ex, "Error occurred while starting the recording.");
return BadRequest(new { error = ex.Message });
}
}
Dies gibt 202 mit CallConnectionId erfolgreich zurück. Aber wenn ich die Transkription mit CallConnectionID stoppe, wird die folgende Fehlermeldung angezeigt.

Code: Select all

[HttpPost("stop-transcription")]
public async Task StopTranscription([FromBody] StopRecordingRequest request)
{
try
{
var callConnection = _callAutomationClient.GetCallConnection(request.CallConnectionId);
var callMedia = callConnection.GetCallMedia();
StopTranscriptionOptions stopOptions = new StopTranscriptionOptions()
{
OperationContext = "stopTranscription"
};
await callMedia.StopTranscriptionAsync(stopOptions);
return Ok(new { message = "Transcription stopped & transcription stopped" });
}
catch (Exception ex)
{
_logger.LogError(ex, "Error occurred while stopping the recording & transcription.");
return BadRequest(new { error = ex.Message });
}
}
Fehler

Code: Select all

{
"error": "Invalid action, Transcription is not active.\r\nStatus: 412 (Precondition Failed)\r\nErrorCode: 8583\r\n\r\nContent:\r\n{\"error\":{\"code\":\"8583\",\"message\":\"Invalid action, Transcription is not active.\"}}\r\n\r\nHeaders:\r\nDate: Sat, 11 Jan 2025 05:15:57 GMT\r\nConnection: keep-alive\r\nX-Microsoft-Skype-Client: REDACTED\r\nx-ms-client-request-id: 08da2a4c-afcd-469e-827f-b04158f829ad\r\nX-Microsoft-Skype-Chain-ID: REDACTED\r\nx-azure-ref: REDACTED\r\nStrict-Transport-Security: REDACTED\r\nX-Cache: REDACTED\r\nContent-Type: application/json; charset=utf-8\r\nContent-Length: 82\r\n"
}
Es scheint, dass die Transkription nicht aktiv ist, wenn ich versuche, sie zu stoppen, aber ich bin mir nicht sicher, warum. Könnten Sie mir bitte helfen, das Problem zu identifizieren? Fehlen mir irgendwelche Schritte oder Konfigurationen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post