Транскрипция в реальном времени во время видеозвонков группы ACSC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Транскрипция в реальном времени во время видеозвонков группы ACS

Сообщение Anonymous »

Я работал над реализацией функции транскрипции в реальном времени Azure Communication Services (ACS) и выполнил шаги, описанные в: https://learn.microsoft.com/en-us/azure ... rvices/how. -tos/call-automation/real-time-transcription-tutorial?pivots=programming-language-csharp
Вот рабочий процесс, которому я следую:
Из внешнего интерфейса я фиксирую serverCallId при запуске вызова с помощью Call Composite.
  • Я передаю serverCallId и groupCallID в свой внутренний API и вызвать метод StartTranscription.
  • Я настроил сервер WebSocket для получения расшифрованных данных в режиме реального времени.
  • Метод StartTranscription успешно возвращает 202 ответ с действительным CallConnectionId. (Например: «16008280-6e77-4226-ac14-1d1235dffe21»). Однако когда я пытаюсь остановить транскрипцию, используя CallConnectionId в следующем коде: я сталкиваюсь с следующей ошибкой:

Код: Выделить всё

[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 });
}
}
Это успешно возвращает 202 с CallConnectionId. Но когда я собираюсь остановить транскрипцию с помощью CallConnectionID, возникает ошибка ниже.

Код: Выделить всё

[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 });
}
}
Ошибка

Код: Выделить всё

{
"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"
}
Кажется, транскрипция не активна, когда я пытаюсь ее остановить, но я не знаю, почему. Не могли бы вы помочь мне определить проблему? Я пропустил какие-либо шаги или настройки?

Подробнее здесь: https://stackoverflow.com/questions/793 ... ideo-calls
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Транскрипция в реальном времени во время видеозвонков группы ACS
    Anonymous » » в форуме C#
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Транскрипция в реальном времени в групповых видеозвонках ACS [закрыто]
    Anonymous » » в форуме C#
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Ошибка API servercallId записи видеозвонков ACS
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Ошибка API servercallId записи видеозвонков ACS
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Ошибка API servercallId записи видеозвонков ACS
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»