fix for quiet Jibo ASR and NLU events
This commit is contained in:
@@ -44,7 +44,22 @@ public sealed class JiboWebSocketService(
|
||||
return replies;
|
||||
}
|
||||
|
||||
if (parsedType is "LISTEN" or "CLIENT_NLU" or "CLIENT_ASR")
|
||||
if (parsedType == "LISTEN")
|
||||
{
|
||||
var replies = ContainsInlineTurnPayload(envelope.Text)
|
||||
? await turnFinalizationService.HandleTurnAsync(session, envelope, parsedType, cancellationToken)
|
||||
: turnFinalizationService.HandleListenSetup(session, envelope);
|
||||
await telemetrySink.RecordTurnEventAsync(envelope, session, "turn_processed", new Dictionary<string, object?>
|
||||
{
|
||||
["messageType"] = parsedType,
|
||||
["replyCount"] = replies.Count,
|
||||
["transcript"] = session.LastTranscript,
|
||||
["intent"] = session.LastIntent
|
||||
}, cancellationToken);
|
||||
return replies;
|
||||
}
|
||||
|
||||
if (parsedType is "CLIENT_NLU" or "CLIENT_ASR")
|
||||
{
|
||||
var replies = await turnFinalizationService.HandleTurnAsync(session, envelope, parsedType, cancellationToken);
|
||||
await telemetrySink.RecordTurnEventAsync(envelope, session, "turn_processed", new Dictionary<string, object?>
|
||||
@@ -96,4 +111,38 @@ public sealed class JiboWebSocketService(
|
||||
|
||||
return "UNKNOWN";
|
||||
}
|
||||
|
||||
private static bool ContainsInlineTurnPayload(string? text)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(text))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
using var document = JsonDocument.Parse(text);
|
||||
if (!document.RootElement.TryGetProperty("data", out var data) || data.ValueKind != JsonValueKind.Object)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (data.TryGetProperty("text", out var transcript) &&
|
||||
transcript.ValueKind == JsonValueKind.String &&
|
||||
!string.IsNullOrWhiteSpace(transcript.GetString()))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return data.TryGetProperty("asr", out var asr) &&
|
||||
asr.ValueKind == JsonValueKind.Object &&
|
||||
asr.TryGetProperty("text", out var asrText) &&
|
||||
asrText.ValueKind == JsonValueKind.String &&
|
||||
!string.IsNullOrWhiteSpace(asrText.GetString());
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -129,6 +129,43 @@ public sealed class WebSocketTurnFinalizationService(
|
||||
return await FinalizeTurnAsync(session, envelope, messageType, allowFallbackOnMissingTranscript: false, cancellationToken);
|
||||
}
|
||||
|
||||
public IReadOnlyList<WebSocketReply> HandleListenSetup(CloudSession session, WebSocketMessageEnvelope envelope)
|
||||
{
|
||||
PersistTurnHints(session, envelope.Text);
|
||||
|
||||
var turn = ProtocolToTurnContextMapper.MapListenMessage(envelope, session, "LISTEN");
|
||||
if (ShouldIgnoreCompletedWordOfDayTurn(turn))
|
||||
{
|
||||
session.TurnState.AwaitingTurnCompletion = false;
|
||||
session.TurnState.IgnoreAdditionalAudioUntilUtc = DateTimeOffset.UtcNow.Add(WebSocketTurnState.DefaultLateAudioIgnoreWindow);
|
||||
session.FollowUpExpiresUtc = null;
|
||||
ResetBufferedAudio(session);
|
||||
return [];
|
||||
}
|
||||
|
||||
session.TurnState.AwaitingTurnCompletion = true;
|
||||
return
|
||||
[
|
||||
new WebSocketReply
|
||||
{
|
||||
Text = JsonSerializer.Serialize(new
|
||||
{
|
||||
type = "OPENJIBO_TURN_PENDING",
|
||||
data = new
|
||||
{
|
||||
sessionId = session.SessionId,
|
||||
transID = session.LastTransId,
|
||||
bufferedAudioBytes = session.TurnState.BufferedAudioBytes,
|
||||
bufferedAudioChunks = session.TurnState.BufferedAudioChunkCount,
|
||||
awaitingAudio = session.TurnState.BufferedAudioBytes == 0,
|
||||
awaitingTranscriptHint = session.TurnState.BufferedAudioBytes > 0 && string.IsNullOrWhiteSpace(session.TurnState.AudioTranscriptHint),
|
||||
finalizeAttempts = session.TurnState.FinalizeAttemptCount
|
||||
}
|
||||
})
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
private async Task<TurnContext> ResolveTranscriptAsync(TurnContext turn, CloudSession session, CancellationToken cancellationToken)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(turn.NormalizedTranscript) || !string.IsNullOrWhiteSpace(turn.RawTranscript))
|
||||
|
||||
Reference in New Issue
Block a user