Bugfixing KI Spracheingabe im Mok

This commit is contained in:
2026-04-01 19:17:39 +02:00
parent e1d73dadc7
commit db16556d76
5 changed files with 56 additions and 19 deletions

View File

@@ -3583,19 +3583,23 @@ namespace BeWoPlanerMobil.Controllers
var ts = new TranscriptionService();
var avd = ts.InitTranskription(MobileSessionFacade.Tenant, false);
externalUrl = avd.ResultUrl;
externalUrl = avd.OwnChatUrl;
if (!string.IsNullOrEmpty(callId) && !string.IsNullOrEmpty(avd.Token))
{
_externalCallTokens[callId] = ts.MapAiVoiceDataDC(avd);
}
Log.Info($"GetExternalCallUrl: {callId}. Url = {externalUrl}, Transkription startet!");
//var externalBaseUrl = "https://example.com/external-service";
//var externalUrl = externalBaseUrl
// + "?callbackUrl=" + Uri.EscapeDataString(callbackUrl)
// + "&callId=" + Uri.EscapeDataString(callId);
}
else
{
Log.Info($"GetExternalCallUrl: {callId}. Url = {callbackUrl}, Transkription starten hat nicht geklappt. Kein OwnChatCode vorhanden!");
}
return Json(new { success = true, url = externalUrl }, JsonRequestBehavior.AllowGet);
}
@@ -3655,24 +3659,49 @@ namespace BeWoPlanerMobil.Controllers
}
string statusMessage = null;
if(!string.IsNullOrEmpty(callId) && _externalCallTokens.TryRemove(callId, out var avddc))
//Log.Info($"CheckExternalCallStatus: Start {callId}.");
if (!string.IsNullOrEmpty(callId) && _externalCallTokens.TryRemove(callId, out var avddc))
{
var ts = new TranscriptionService();
var avd = ts.MapAiVoiceData(avddc);
avd = ts.GetTranskription(avd);
statusMessage = avd.StatusMessage;
if (!String.IsNullOrEmpty(avd.TranskriptionText))
{
statusMessage = "Transkription erfolgreich durchgeführt";
Log.Info($"CheckExternalCallStatus: {callId}. Transkription erfolgreich durchgeführt!");
ExternalCallCallback(callId, avd.TranskriptionText);
}
else if (!String.IsNullOrEmpty(avd.Error))
{
statusMessage = avd.Error;
Log.Info($"CheckExternalCallStatus: {callId}. Transkription mit Fehler beendet: {avd.Error}");
ExternalCallCallback(callId, "");
}
else
{
//Log.Info($"CheckExternalCallStatus: {callId}. Status: {statusMessage}");
}
avddc = ts.MapAiVoiceDataDC(avd);
_externalCallTokens[callId] = avddc;
//_externalCallStatusMessages.TryGetValue(callId, out statusMessage);
}
else
{
Log.Info($"CheckExternalCallStatus: {callId}. Kein Token gefunden.");
}
return Json(new { completed = false, statusMessage }, JsonRequestBehavior.AllowGet);
}
/// <summary>
/// Wird aufgerufen, wenn der Benutzer den externen Aufruf abbricht.
/// Räumt den Eintrag auf, falls vorhanden.

View File

@@ -250,14 +250,21 @@
}
function onExternalCallCompleted(data) {
// sb-doku-textarea-0 bevorzugen (nur sichtbar wenn mehrere Dokutypes vorhanden),
// sonst auf sb-doku-textarea-5 (Dokumentation6) zurückfallen
var $target = $('#sb-doku-textarea-0');
var targetIndex = 0;
if ($target.length === 0 || !$target.is(':visible')) {
var $target;
var targetIndex;
// Prüfen ob die Tab-Ansicht sichtbar ist (mehrere Dokutypes vorhanden)
var $activeTabTextarea = $('#dokufelderTab .tab-pane.active textarea');
if ($activeTabTextarea.length > 0) {
// Das aktive Tab-Textarea verwenden; Index aus der ID auslesen (sb-doku-textarea-{i})
$target = $activeTabTextarea;
targetIndex = parseInt($target.attr('id').replace('sb-doku-textarea-', ''), 10);
} else {
// Fallback: Einzelfeld Dokumentation6
$target = $('#sb-doku-textarea-5');
targetIndex = 5;
}
if ($target.length > 0) {
$target.val(data);
window.updateDokuText('sb', data, targetIndex);

View File

@@ -18,5 +18,6 @@ namespace BeWo.Data.Entities
public virtual String Token { get; set; }
public virtual String UploadUrl { get; set; }
public virtual String ResultUrl { get; set; }
public virtual String OwnChatUrl { get; set; }
}
}

View File

@@ -37,18 +37,14 @@ namespace BeWo.Service.AI
if (!String.IsNullOrEmpty(avd.Token))
{
var url = String.Format("ownchat://voice/?token={0}", avd.Token);
avd.OwnChatUrl = String.Format("ownchat://voice/?token={0}", avd.Token);
if (sendOwnChatMessage)
{
var msg = String.Format("Bitte klicken Sie auf folgenden Link um die Aufnahme zu starten:\n\n{0}", url);
var msg = String.Format("Bitte klicken Sie auf folgenden Link um die Aufnahme zu starten:\n\n{0}", avd.OwnChatUrl);
OwnChatHelper.SendOwnChatMessage(msg, UserRightHelper.GetLoggedInUser().Employee);
}
else
{
avd.ResultUrl = url;
}
}
@@ -215,8 +211,9 @@ namespace BeWo.Service.AI
StatusMessage = data.StatusMessage,
Token = data.Token,
TranskriptionText = data.TranskriptionText,
UploadUrl = data.UploadUrl
};
UploadUrl = data.UploadUrl,
OwnChatUrl = data.OwnChatUrl
};
}
public AiVoiceData MapAiVoiceData(AiVoiceDataDC data)
@@ -230,7 +227,8 @@ namespace BeWo.Service.AI
StatusMessage = data.StatusMessage,
Token = data.Token,
TranskriptionText = data.TranskriptionText,
UploadUrl = data.UploadUrl
UploadUrl = data.UploadUrl,
OwnChatUrl = data.OwnChatUrl
};
}
}

View File

@@ -21,5 +21,7 @@ namespace BS.Shared.DataContracts
public string UploadUrl { get; set; }
[DataMember]
public string ResultUrl { get; set; }
[DataMember]
public string OwnChatUrl { get; set; }
}
}