From 95c5403203eeac16e5af043ed934bf7773463349 Mon Sep 17 00:00:00 2001 From: Shawn Jackson Date: Sat, 8 Aug 2026 11:02:57 -0700 Subject: [PATCH 1/2] RG-T117 Chatbot fixes --- .../Handlers/DispatchCallHandler.cs | 2 +- .../Handlers/HelpActionHandler.cs | 2 +- .../Handlers/MessageSendHandler.cs | 2 +- .../Handlers/PollCreateHandler.cs | 2 +- .../Services/ChatbotIngressService.cs | 8 ++--- .../Services/CodeLinkingService.cs | 2 +- .../Areas/User/Department/Department.ar.resx | 24 +++++++------- .../Areas/User/Department/Department.de.resx | 24 +++++++------- .../Areas/User/Department/Department.en.resx | 24 +++++++------- .../Areas/User/Department/Department.es.resx | 24 +++++++------- .../Areas/User/Department/Department.fr.resx | 24 +++++++------- .../Areas/User/Department/Department.it.resx | 24 +++++++------- .../Areas/User/Department/Department.pl.resx | 24 +++++++------- .../Areas/User/Department/Department.resx | 2 +- .../Areas/User/Department/Department.sv.resx | 24 +++++++------- .../Areas/User/Department/Department.uk.resx | 24 +++++++------- .../Areas/User/Home/EditProfile.ar.resx | 6 ++-- .../Areas/User/Home/EditProfile.de.resx | 6 ++-- .../Areas/User/Home/EditProfile.en.resx | 6 ++-- .../Areas/User/Home/EditProfile.es.resx | 6 ++-- .../Areas/User/Home/EditProfile.fr.resx | 6 ++-- .../Areas/User/Home/EditProfile.it.resx | 6 ++-- .../Areas/User/Home/EditProfile.pl.resx | 6 ++-- .../Areas/User/Home/EditProfile.sv.resx | 6 ++-- .../Areas/User/Home/EditProfile.uk.resx | 6 ++-- .../Controllers/v4/ChatController.cs | 31 ++++++++++++++++++- .../Controllers/v4/ChatbotController.cs | 8 ++++- .../User/Apps/src/components/chat/chatApi.ts | 10 +++--- 28 files changed, 188 insertions(+), 151 deletions(-) diff --git a/Core/Resgrid.Chatbot/Handlers/DispatchCallHandler.cs b/Core/Resgrid.Chatbot/Handlers/DispatchCallHandler.cs index a89916162..850833c7b 100644 --- a/Core/Resgrid.Chatbot/Handlers/DispatchCallHandler.cs +++ b/Core/Resgrid.Chatbot/Handlers/DispatchCallHandler.cs @@ -44,7 +44,7 @@ public async Task HandleAsync(ChatbotMessage message, ChatbotIn if (config != null && !config.AllowDispatchViaChatbot) return new ChatbotResponse { - Text = "Creating calls through the chatbot is disabled for this department.", + Text = "Creating calls through the assistant is disabled for this department.", Processed = false }; diff --git a/Core/Resgrid.Chatbot/Handlers/HelpActionHandler.cs b/Core/Resgrid.Chatbot/Handlers/HelpActionHandler.cs index 3bf3f8047..7bba627aa 100644 --- a/Core/Resgrid.Chatbot/Handlers/HelpActionHandler.cs +++ b/Core/Resgrid.Chatbot/Handlers/HelpActionHandler.cs @@ -60,7 +60,7 @@ public async Task HandleAsync(ChatbotMessage message, ChatbotIn private static string BuildTopicMenu() { - return "Resgrid Chatbot. Text a command, or HELP for details.\n" + return "Resgrid Assistant. Text a command, or HELP for details.\n" + "Topics: STATUS, STAFFING, CALLS, MESSAGES, UNITS, SHIFTS, CALENDAR, PERSONNEL, DEPARTMENTS, STOP"; } diff --git a/Core/Resgrid.Chatbot/Handlers/MessageSendHandler.cs b/Core/Resgrid.Chatbot/Handlers/MessageSendHandler.cs index 36deb5248..c36387251 100644 --- a/Core/Resgrid.Chatbot/Handlers/MessageSendHandler.cs +++ b/Core/Resgrid.Chatbot/Handlers/MessageSendHandler.cs @@ -45,7 +45,7 @@ public async Task HandleAsync(ChatbotMessage message, ChatbotIn var msg = new Message { - Subject = "Message via chatbot", + Subject = "Message via assistant", Body = body.Truncate(4000), SendingUserId = session.UserId, SentOn = DateTime.UtcNow, diff --git a/Core/Resgrid.Chatbot/Handlers/PollCreateHandler.cs b/Core/Resgrid.Chatbot/Handlers/PollCreateHandler.cs index 7d93c7768..39e721501 100644 --- a/Core/Resgrid.Chatbot/Handlers/PollCreateHandler.cs +++ b/Core/Resgrid.Chatbot/Handlers/PollCreateHandler.cs @@ -79,7 +79,7 @@ public async Task HandleAsync(ChatbotMessage message, ChatbotIn } var profile = await _userProfileService.GetProfileByUserIdAsync(session.UserId); - var senderName = profile?.FullName?.AsFirstNameLastName ?? "Chatbot"; + var senderName = profile?.FullName?.AsFirstNameLastName ?? "Assistant"; var msg = new Message { diff --git a/Core/Resgrid.Chatbot/Services/ChatbotIngressService.cs b/Core/Resgrid.Chatbot/Services/ChatbotIngressService.cs index 30ac89bf8..14acf0491 100644 --- a/Core/Resgrid.Chatbot/Services/ChatbotIngressService.cs +++ b/Core/Resgrid.Chatbot/Services/ChatbotIngressService.cs @@ -190,7 +190,7 @@ await _userIdentityService.LinkUserAsync( if (switchableDepartments.Count == 0) { return await _templateRenderer.RenderResponseAsync("error", - new Services.ErrorModel { Message = "Your department's plan does not support chatbot features. Please upgrade your plan." }, + new Services.ErrorModel { Message = "Your department's plan does not support assistant features. Please upgrade your plan." }, message.Platform, new ChatbotIntent { Type = ChatbotIntentType.Unknown }); } } @@ -205,14 +205,14 @@ await _userIdentityService.LinkUserAsync( if (!deptConfig.IsEnabled) { return await _templateRenderer.RenderResponseAsync("error", - new Services.ErrorModel { Message = "The chatbot is not enabled for your department. Please contact your administrator." }, + new Services.ErrorModel { Message = "The assistant is not enabled for your department. Please contact your administrator." }, message.Platform, new ChatbotIntent { Type = ChatbotIntentType.Unknown }); } if (!IsPlatformAllowed(deptConfig.AllowedPlatforms, message.Platform)) { return await _templateRenderer.RenderResponseAsync("error", - new Services.ErrorModel { Message = "This channel isn't enabled for your department's chatbot." }, + new Services.ErrorModel { Message = "This channel isn't enabled for your department's assistant." }, message.Platform, new ChatbotIntent { Type = ChatbotIntentType.Unknown }); } } @@ -310,7 +310,7 @@ await _userIdentityService.LinkUserAsync( } var optionsBuilder = new System.Text.StringBuilder(); - optionsBuilder.AppendLine("Your active department's plan does not support chatbot features, but you belong to other departments that do:"); + optionsBuilder.AppendLine("Your active department's plan does not support assistant features, but you belong to other departments that do:"); for (int i = 0; i < switchableDepartments.Count; i++) { var switchableDept = await _departmentsService.GetDepartmentByIdAsync(switchableDepartments[i].DepartmentId); diff --git a/Core/Resgrid.Chatbot/Services/CodeLinkingService.cs b/Core/Resgrid.Chatbot/Services/CodeLinkingService.cs index 1e460b676..47b49c6ef 100644 --- a/Core/Resgrid.Chatbot/Services/CodeLinkingService.cs +++ b/Core/Resgrid.Chatbot/Services/CodeLinkingService.cs @@ -119,7 +119,7 @@ public async Task ProcessCodeAsync( "code", code); - return LinkResult.Ok("Account linked successfully! You can now use all chatbot features.", identity); + return LinkResult.Ok("Account linked successfully! You can now use all assistant features.", identity); } private static string GenerateRandomCode() diff --git a/Core/Resgrid.Localization/Areas/User/Department/Department.ar.resx b/Core/Resgrid.Localization/Areas/User/Department/Department.ar.resx index b101355df..08c46955a 100644 --- a/Core/Resgrid.Localization/Areas/User/Department/Department.ar.resx +++ b/Core/Resgrid.Localization/Areas/User/Department/Department.ar.resx @@ -637,19 +637,19 @@ حفظ الإعدادات العامة - إعدادات روبوت الدردشة + إعدادات المساعد - روبوت الدردشة + المساعد - تكوين روبوت الدردشة + تكوين المساعد - تفعيل روبوت الدردشة + تفعيل المساعد - السماح لأعضاء هذا القسم بالتفاعل مع روبوت الدردشة. + السماح لأعضاء هذا القسم بالتفاعل مع المساعد. المنصات المسموح بها @@ -658,10 +658,10 @@ أسماء المنصات مفصولة بفواصل المسموح بها لهذا القسم، أو * للكل. الأسماء الصالحة: SmsTwilio, SmsSignalWire, Discord, Slack, Telegram, WhatsApp, Teams, Signal, WebChat. - السماح بالإرسال عبر روبوت الدردشة + السماح بالإرسال عبر المساعد - السماح للمستخدمين المصرّح لهم بإنشاء أو إرسال المكالمات عبر روبوت الدردشة. + السماح للمستخدمين المصرّح لهم بإنشاء أو إرسال المكالمات عبر المساعد. تأكيد تغييرات الحالة @@ -679,7 +679,7 @@ الإشعارات الاستباقية - السماح لروبوت الدردشة بإرسال إشعارات استباقية (مكالمات، تذكيرات) إلى المستخدمين المرتبطين. + السماح للمساعد بإرسال إشعارات استباقية (مكالمات، تذكيرات) إلى المستخدمين المرتبطين. الرسائل / المستخدم / الدقيقة @@ -697,7 +697,7 @@ مزوّد الذكاء الاصطناعي / LLM للقسم (اختياري) - اترك هذه الحقول فارغة لاستخدام مزوّد الذكاء الاصطناعي لنظام Resgrid. للإبقاء على معالجة روبوت الدردشة لدى مزوّدك الخاص، أدخل نقطة نهاية متوافقة مع OpenAI ونموذجًا ومفتاح API. + اترك هذه الحقول فارغة لاستخدام مزوّد الذكاء الاصطناعي لنظام Resgrid. للإبقاء على معالجة المساعد لدى مزوّدك الخاص، أدخل نقطة نهاية متوافقة مع OpenAI ونموذجًا ومفتاح API. نقطة نهاية LLM @@ -721,10 +721,10 @@ إلغاء - تم حفظ إعدادات روبوت الدردشة. + تم حفظ إعدادات المساعد. - حدث خطأ أثناء حفظ إعدادات روبوت الدردشة. + حدث خطأ أثناء حفظ إعدادات المساعد. Enable Modern Notifications @@ -736,6 +736,6 @@ طلب رمز PIN الأمان - يتطلب من كل عضو تأكيد الإجراءات الخطرة أو على مستوى القسم عبر روبوت الدردشة/الرسائل النصية باستخدام رمز PIN الأمان الشخصي المكون من 4 أرقام. يحصل الأعضاء الذين ليس لديهم رمز PIN على رمز يتم إنشاؤه عشوائيًا (يمكن عرضه في صفحة ملفهم الشخصي). + يتطلب من كل عضو تأكيد الإجراءات الخطرة أو على مستوى القسم عبر المساعد/الرسائل النصية باستخدام رمز PIN الأمان الشخصي المكون من 4 أرقام. يحصل الأعضاء الذين ليس لديهم رمز PIN على رمز يتم إنشاؤه عشوائيًا (يمكن عرضه في صفحة ملفهم الشخصي). \ No newline at end of file diff --git a/Core/Resgrid.Localization/Areas/User/Department/Department.de.resx b/Core/Resgrid.Localization/Areas/User/Department/Department.de.resx index 58200d5b5..4b997926c 100644 --- a/Core/Resgrid.Localization/Areas/User/Department/Department.de.resx +++ b/Core/Resgrid.Localization/Areas/User/Department/Department.de.resx @@ -588,19 +588,19 @@ Allgemeine Einstellungen speichern - Chatbot-Einstellungen + Assistenten-Einstellungen - Chatbot + Assistent - Chatbot-Konfiguration + Assistenten-Konfiguration - Chatbot aktivieren + Assistenten aktivieren - Mitgliedern dieser Abteilung erlauben, mit dem Chatbot zu interagieren. + Mitgliedern dieser Abteilung erlauben, mit dem Assistenten zu interagieren. Zugelassene Plattformen @@ -609,10 +609,10 @@ Durch Kommas getrennte Plattformnamen, die diese Abteilung zulässt, oder * für alle. Gültige Namen: SmsTwilio, SmsSignalWire, Discord, Slack, Telegram, WhatsApp, Teams, Signal, WebChat. - Disposition über den Chatbot zulassen + Disposition über den Assistenten zulassen - Berechtigten Benutzern erlauben, über den Chatbot Einsätze zu erstellen oder zu disponieren. + Berechtigten Benutzern erlauben, über den Assistenten Einsätze zu erstellen oder zu disponieren. Statusänderungen bestätigen @@ -630,7 +630,7 @@ Proaktive Benachrichtigungen - Dem Chatbot erlauben, proaktive Benachrichtigungen (Einsätze, Erinnerungen) an verknüpfte Benutzer zu senden. + Dem Assistenten erlauben, proaktive Benachrichtigungen (Einsätze, Erinnerungen) an verknüpfte Benutzer zu senden. Nachrichten / Benutzer / Minute @@ -648,7 +648,7 @@ KI-/LLM-Anbieter der Abteilung (optional) - Leer lassen, um den KI-Anbieter des Resgrid-Systems zu verwenden. Um die Verarbeitung Ihres Chatbots bei Ihrem eigenen Anbieter zu belassen, geben Sie einen OpenAI-kompatiblen Endpunkt, ein Modell und einen API-Schlüssel ein. + Leer lassen, um den KI-Anbieter des Resgrid-Systems zu verwenden. Um die Verarbeitung Ihres Assistenten bei Ihrem eigenen Anbieter zu belassen, geben Sie einen OpenAI-kompatiblen Endpunkt, ein Modell und einen API-Schlüssel ein. LLM-Endpunkt @@ -672,10 +672,10 @@ Abbrechen - Chatbot-Einstellungen gespeichert. + Assistenten-Einstellungen gespeichert. - Beim Speichern Ihrer Chatbot-Einstellungen ist ein Fehler aufgetreten. + Beim Speichern Ihrer Assistenten-Einstellungen ist ein Fehler aufgetreten. Enable Modern Notifications @@ -687,6 +687,6 @@ Sicherheits-PIN erforderlich - Verlangt, dass jedes Mitglied gefährliche oder abteilungsweite Chatbot-/SMS-Aktionen mit seiner persönlichen 4-stelligen Sicherheits-PIN bestätigt. Mitglieder ohne PIN erhalten eine zufällig generierte (einsehbar auf ihrer Profilseite). + Verlangt, dass jedes Mitglied gefährliche oder abteilungsweite Assistenten-/SMS-Aktionen mit seiner persönlichen 4-stelligen Sicherheits-PIN bestätigt. Mitglieder ohne PIN erhalten eine zufällig generierte (einsehbar auf ihrer Profilseite). \ No newline at end of file diff --git a/Core/Resgrid.Localization/Areas/User/Department/Department.en.resx b/Core/Resgrid.Localization/Areas/User/Department/Department.en.resx index 5ad4fe260..c8f1002bb 100644 --- a/Core/Resgrid.Localization/Areas/User/Department/Department.en.resx +++ b/Core/Resgrid.Localization/Areas/User/Department/Department.en.resx @@ -667,19 +667,19 @@ Select the eSpeak-NG language or dialect to use for this department's voice prompts. - Chatbot Settings + Assistant Settings - Chatbot + Assistant - Chatbot Configuration + Assistant Configuration - Enable Chatbot + Enable Assistant - Allow members of this department to interact with the chatbot. + Allow members of this department to interact with the assistant. Allowed Platforms @@ -688,10 +688,10 @@ Comma-separated platform names this department allows, or * for all. Valid names: SmsTwilio, SmsSignalWire, Discord, Slack, Telegram, WhatsApp, Teams, Signal, WebChat. - Allow Dispatch via Chatbot + Allow Dispatch via Assistant - Allow authorized users to create or dispatch calls through the chatbot. + Allow authorized users to create or dispatch calls through the assistant. Confirm Status Changes @@ -709,7 +709,7 @@ Proactive Notifications - Allow the chatbot to push proactive notifications (calls, reminders) to linked users. + Allow the assistant to push proactive notifications (calls, reminders) to linked users. Messages / User / Minute @@ -727,7 +727,7 @@ Department AI / LLM Provider (optional) - Leave these blank to use the Resgrid system AI provider. To keep your chatbot processing with your own provider, enter an OpenAI-compatible endpoint, model, and API key. + Leave these blank to use the Resgrid system AI provider. To keep your assistant processing with your own provider, enter an OpenAI-compatible endpoint, model, and API key. LLM Endpoint @@ -751,10 +751,10 @@ Cancel - Chatbot settings saved. + Assistant settings saved. - An error occurred saving your chatbot settings. + An error occurred saving your assistant settings. Enable Modern Notifications @@ -766,6 +766,6 @@ Require Security PIN - Require every member to confirm dangerous or department-wide chatbot/text actions with their personal 4-digit security PIN. Members without a PIN get a randomly generated one (viewable on their profile page). + Require every member to confirm dangerous or department-wide assistant/text actions with their personal 4-digit security PIN. Members without a PIN get a randomly generated one (viewable on their profile page). \ No newline at end of file diff --git a/Core/Resgrid.Localization/Areas/User/Department/Department.es.resx b/Core/Resgrid.Localization/Areas/User/Department/Department.es.resx index 98127dc05..cc23448bd 100644 --- a/Core/Resgrid.Localization/Areas/User/Department/Department.es.resx +++ b/Core/Resgrid.Localization/Areas/User/Department/Department.es.resx @@ -523,19 +523,19 @@ Guardar Configuraciones Generales - Ajustes del chatbot + Ajustes del asistente - Chatbot + Asistente - Configuración del chatbot + Configuración del asistente - Activar el chatbot + Activar el asistente - Permitir que los miembros de este departamento interactúen con el chatbot. + Permitir que los miembros de este departamento interactúen con el asistente. Plataformas permitidas @@ -544,10 +544,10 @@ Nombres de plataformas separados por comas permitidos para este departamento, o * para todas. Nombres válidos: SmsTwilio, SmsSignalWire, Discord, Slack, Telegram, WhatsApp, Teams, Signal, WebChat. - Permitir despacho mediante el chatbot + Permitir despacho mediante el asistente - Permitir que los usuarios autorizados creen o despachen llamadas mediante el chatbot. + Permitir que los usuarios autorizados creen o despachen llamadas mediante el asistente. Confirmar cambios de estado @@ -565,7 +565,7 @@ Notificaciones proactivas - Permitir que el chatbot envíe notificaciones proactivas (llamadas, recordatorios) a los usuarios vinculados. + Permitir que el asistente envíe notificaciones proactivas (llamadas, recordatorios) a los usuarios vinculados. Mensajes / usuario / minuto @@ -583,7 +583,7 @@ Proveedor de IA / LLM del departamento (opcional) - Deje estos campos en blanco para usar el proveedor de IA del sistema de Resgrid. Para mantener el procesamiento de su chatbot con su propio proveedor, introduzca un endpoint compatible con OpenAI, un modelo y una clave API. + Deje estos campos en blanco para usar el proveedor de IA del sistema de Resgrid. Para mantener el procesamiento de su asistente con su propio proveedor, introduzca un endpoint compatible con OpenAI, un modelo y una clave API. Endpoint de LLM @@ -607,10 +607,10 @@ Cancelar - Configuración del chatbot guardada. + Configuración del asistente guardada. - Se produjo un error al guardar la configuración del chatbot. + Se produjo un error al guardar la configuración del asistente. Enable Modern Notifications @@ -622,6 +622,6 @@ Requerir PIN de seguridad - Exige que cada miembro confirme las acciones peligrosas o de todo el departamento del chatbot/mensajes de texto con su PIN de seguridad personal de 4 dígitos. Los miembros sin PIN reciben uno generado aleatoriamente (visible en su página de perfil). + Exige que cada miembro confirme las acciones peligrosas o de todo el departamento del asistente/mensajes de texto con su PIN de seguridad personal de 4 dígitos. Los miembros sin PIN reciben uno generado aleatoriamente (visible en su página de perfil). \ No newline at end of file diff --git a/Core/Resgrid.Localization/Areas/User/Department/Department.fr.resx b/Core/Resgrid.Localization/Areas/User/Department/Department.fr.resx index 5bd75802d..bc5a4d947 100644 --- a/Core/Resgrid.Localization/Areas/User/Department/Department.fr.resx +++ b/Core/Resgrid.Localization/Areas/User/Department/Department.fr.resx @@ -588,19 +588,19 @@ Enregistrer les Paramètres Généraux - Paramètres du chatbot + Paramètres de l'assistant - Chatbot + Assistant - Configuration du chatbot + Configuration de l'assistant - Activer le chatbot + Activer l'assistant - Autoriser les membres de ce service à interagir avec le chatbot. + Autoriser les membres de ce service à interagir avec l'assistant. Plateformes autorisées @@ -609,10 +609,10 @@ Noms de plateformes séparés par des virgules autorisés pour ce service, ou * pour toutes. Noms valides : SmsTwilio, SmsSignalWire, Discord, Slack, Telegram, WhatsApp, Teams, Signal, WebChat. - Autoriser la répartition via le chatbot + Autoriser la répartition via l'assistant - Autoriser les utilisateurs habilités à créer ou répartir des appels via le chatbot. + Autoriser les utilisateurs habilités à créer ou répartir des appels via l'assistant. Confirmer les changements de statut @@ -630,7 +630,7 @@ Notifications proactives - Autoriser le chatbot à envoyer des notifications proactives (appels, rappels) aux utilisateurs liés. + Autoriser l'assistant à envoyer des notifications proactives (appels, rappels) aux utilisateurs liés. Messages / utilisateur / minute @@ -648,7 +648,7 @@ Fournisseur d'IA / LLM du service (facultatif) - Laissez ces champs vides pour utiliser le fournisseur d'IA système de Resgrid. Pour conserver le traitement de votre chatbot chez votre propre fournisseur, saisissez un point de terminaison compatible OpenAI, un modèle et une clé API. + Laissez ces champs vides pour utiliser le fournisseur d'IA système de Resgrid. Pour conserver le traitement de votre assistant chez votre propre fournisseur, saisissez un point de terminaison compatible OpenAI, un modèle et une clé API. Point de terminaison LLM @@ -672,10 +672,10 @@ Annuler - Paramètres du chatbot enregistrés. + Paramètres de l'assistant enregistrés. - Une erreur s'est produite lors de l'enregistrement des paramètres du chatbot. + Une erreur s'est produite lors de l'enregistrement des paramètres de l'assistant. Enable Modern Notifications @@ -687,6 +687,6 @@ Exiger le code PIN de sécurité - Exige que chaque membre confirme les actions dangereuses ou à l'échelle du service du chatbot/SMS avec son code PIN de sécurité personnel à 4 chiffres. Les membres sans PIN en reçoivent un généré aléatoirement (visible sur leur page de profil). + Exige que chaque membre confirme les actions dangereuses ou à l'échelle du service de l'assistant/SMS avec son code PIN de sécurité personnel à 4 chiffres. Les membres sans PIN en reçoivent un généré aléatoirement (visible sur leur page de profil). \ No newline at end of file diff --git a/Core/Resgrid.Localization/Areas/User/Department/Department.it.resx b/Core/Resgrid.Localization/Areas/User/Department/Department.it.resx index 4cc37f7a2..6067adac8 100644 --- a/Core/Resgrid.Localization/Areas/User/Department/Department.it.resx +++ b/Core/Resgrid.Localization/Areas/User/Department/Department.it.resx @@ -588,19 +588,19 @@ Salva Impostazioni Generali - Impostazioni del chatbot + Impostazioni dell'assistente - Chatbot + Assistente - Configurazione del chatbot + Configurazione dell'assistente - Abilita il chatbot + Abilita l'assistente - Consenti ai membri di questo dipartimento di interagire con il chatbot. + Consenti ai membri di questo dipartimento di interagire con l'assistente. Piattaforme consentite @@ -609,10 +609,10 @@ Nomi di piattaforme separati da virgole consentiti per questo dipartimento, oppure * per tutte. Nomi validi: SmsTwilio, SmsSignalWire, Discord, Slack, Telegram, WhatsApp, Teams, Signal, WebChat. - Consenti l'invio di chiamate tramite il chatbot + Consenti l'invio di chiamate tramite l'assistente - Consenti agli utenti autorizzati di creare o inviare chiamate tramite il chatbot. + Consenti agli utenti autorizzati di creare o inviare chiamate tramite l'assistente. Conferma le modifiche di stato @@ -630,7 +630,7 @@ Notifiche proattive - Consenti al chatbot di inviare notifiche proattive (chiamate, promemoria) agli utenti collegati. + Consenti all'assistente di inviare notifiche proattive (chiamate, promemoria) agli utenti collegati. Messaggi / utente / minuto @@ -648,7 +648,7 @@ Provider IA / LLM del dipartimento (facoltativo) - Lascia questi campi vuoti per usare il provider IA di sistema di Resgrid. Per mantenere l'elaborazione del tuo chatbot presso il tuo provider, inserisci un endpoint compatibile con OpenAI, un modello e una chiave API. + Lascia questi campi vuoti per usare il provider IA di sistema di Resgrid. Per mantenere l'elaborazione del tuo assistente presso il tuo provider, inserisci un endpoint compatibile con OpenAI, un modello e una chiave API. Endpoint LLM @@ -672,10 +672,10 @@ Annulla - Impostazioni del chatbot salvate. + Impostazioni dell'assistente salvate. - Si è verificato un errore durante il salvataggio delle impostazioni del chatbot. + Si è verificato un errore durante il salvataggio delle impostazioni dell'assistente. Enable Modern Notifications @@ -687,6 +687,6 @@ Richiedi PIN di sicurezza - Richiede che ogni membro confermi le azioni pericolose o a livello di dipartimento del chatbot/SMS con il proprio PIN di sicurezza personale a 4 cifre. I membri senza PIN ne ricevono uno generato casualmente (visibile nella pagina del profilo). + Richiede che ogni membro confermi le azioni pericolose o a livello di dipartimento dell'assistente/SMS con il proprio PIN di sicurezza personale a 4 cifre. I membri senza PIN ne ricevono uno generato casualmente (visibile nella pagina del profilo). \ No newline at end of file diff --git a/Core/Resgrid.Localization/Areas/User/Department/Department.pl.resx b/Core/Resgrid.Localization/Areas/User/Department/Department.pl.resx index 60f7a531b..48e1fc071 100644 --- a/Core/Resgrid.Localization/Areas/User/Department/Department.pl.resx +++ b/Core/Resgrid.Localization/Areas/User/Department/Department.pl.resx @@ -588,19 +588,19 @@ Zapisz Ustawienia Ogólne - Ustawienia chatbota + Ustawienia asystenta - Chatbot + Asystent - Konfiguracja chatbota + Konfiguracja asystenta - Włącz chatbota + Włącz asystenta - Zezwól członkom tego działu na interakcję z chatbotem. + Zezwól członkom tego działu na interakcję z asystentem. Dozwolone platformy @@ -609,10 +609,10 @@ Nazwy platform oddzielone przecinkami dozwolone dla tego działu lub * dla wszystkich. Prawidłowe nazwy: SmsTwilio, SmsSignalWire, Discord, Slack, Telegram, WhatsApp, Teams, Signal, WebChat. - Zezwól na dysponowanie przez chatbota + Zezwól na dysponowanie przez asystenta - Zezwól uprawnionym użytkownikom na tworzenie lub dysponowanie zgłoszeniami przez chatbota. + Zezwól uprawnionym użytkownikom na tworzenie lub dysponowanie zgłoszeniami przez asystenta. Potwierdzaj zmiany statusu @@ -630,7 +630,7 @@ Powiadomienia proaktywne - Zezwól chatbotowi na wysyłanie proaktywnych powiadomień (zgłoszenia, przypomnienia) do powiązanych użytkowników. + Zezwól asystentowi na wysyłanie proaktywnych powiadomień (zgłoszenia, przypomnienia) do powiązanych użytkowników. Wiadomości / użytkownik / minuta @@ -648,7 +648,7 @@ Dostawca AI / LLM działu (opcjonalnie) - Pozostaw te pola puste, aby użyć systemowego dostawcy AI Resgrid. Aby przetwarzanie chatbota pozostało u własnego dostawcy, podaj punkt końcowy zgodny z OpenAI, model i klucz API. + Pozostaw te pola puste, aby użyć systemowego dostawcy AI Resgrid. Aby przetwarzanie asystenta pozostało u własnego dostawcy, podaj punkt końcowy zgodny z OpenAI, model i klucz API. Punkt końcowy LLM @@ -672,10 +672,10 @@ Anuluj - Zapisano ustawienia chatbota. + Zapisano ustawienia asystenta. - Wystąpił błąd podczas zapisywania ustawień chatbota. + Wystąpił błąd podczas zapisywania ustawień asystenta. Enable Modern Notifications @@ -687,6 +687,6 @@ Wymagaj kodu PIN bezpieczeństwa - Wymaga, aby każdy członek potwierdzał niebezpieczne lub obejmujące cały wydział akcje chatbota/SMS swoim osobistym 4-cyfrowym kodem PIN bezpieczeństwa. Członkowie bez kodu PIN otrzymują losowo wygenerowany (widoczny na stronie profilu). + Wymaga, aby każdy członek potwierdzał niebezpieczne lub obejmujące cały wydział akcje asystenta/SMS swoim osobistym 4-cyfrowym kodem PIN bezpieczeństwa. Członkowie bez kodu PIN otrzymują losowo wygenerowany (widoczny na stronie profilu). \ No newline at end of file diff --git a/Core/Resgrid.Localization/Areas/User/Department/Department.resx b/Core/Resgrid.Localization/Areas/User/Department/Department.resx index 2e5ac6d8b..7c3a6de72 100644 --- a/Core/Resgrid.Localization/Areas/User/Department/Department.resx +++ b/Core/Resgrid.Localization/Areas/User/Department/Department.resx @@ -361,6 +361,6 @@ Require Security PIN - Require every member to confirm dangerous or department-wide chatbot/text actions with their personal 4-digit security PIN. Members without a PIN get a randomly generated one (viewable on their profile page). + Require every member to confirm dangerous or department-wide assistant/text actions with their personal 4-digit security PIN. Members without a PIN get a randomly generated one (viewable on their profile page). \ No newline at end of file diff --git a/Core/Resgrid.Localization/Areas/User/Department/Department.sv.resx b/Core/Resgrid.Localization/Areas/User/Department/Department.sv.resx index 34b760ba7..e2b67889f 100644 --- a/Core/Resgrid.Localization/Areas/User/Department/Department.sv.resx +++ b/Core/Resgrid.Localization/Areas/User/Department/Department.sv.resx @@ -588,19 +588,19 @@ Spara Allmänna Inställningar - Chatbot-inställningar + Assistentinställningar - Chatbot + Assistent - Chatbot-konfiguration + Assistentkonfiguration - Aktivera chatbot + Aktivera assistent - Tillåt medlemmar i denna avdelning att interagera med chatboten. + Tillåt medlemmar i denna avdelning att interagera med assistenten. Tillåtna plattformar @@ -609,10 +609,10 @@ Kommaseparerade plattformsnamn som denna avdelning tillåter, eller * för alla. Giltiga namn: SmsTwilio, SmsSignalWire, Discord, Slack, Telegram, WhatsApp, Teams, Signal, WebChat. - Tillåt utlarmning via chatboten + Tillåt utlarmning via assistenten - Tillåt behöriga användare att skapa eller larma ut ärenden via chatboten. + Tillåt behöriga användare att skapa eller larma ut ärenden via assistenten. Bekräfta statusändringar @@ -630,7 +630,7 @@ Proaktiva aviseringar - Tillåt chatboten att skicka proaktiva aviseringar (ärenden, påminnelser) till kopplade användare. + Tillåt assistenten att skicka proaktiva aviseringar (ärenden, påminnelser) till kopplade användare. Meddelanden / användare / minut @@ -648,7 +648,7 @@ Avdelningens AI-/LLM-leverantör (valfritt) - Lämna dessa tomma för att använda Resgrids system-AI-leverantör. För att behålla din chatbots bearbetning hos din egen leverantör, ange en OpenAI-kompatibel slutpunkt, modell och API-nyckel. + Lämna dessa tomma för att använda Resgrids system-AI-leverantör. För att behålla din assistents bearbetning hos din egen leverantör, ange en OpenAI-kompatibel slutpunkt, modell och API-nyckel. LLM-slutpunkt @@ -672,10 +672,10 @@ Avbryt - Chatbot-inställningarna sparades. + Assistentinställningarna sparades. - Ett fel uppstod när dina chatbot-inställningar skulle sparas. + Ett fel uppstod när dina assistentinställningar skulle sparas. Enable Modern Notifications @@ -687,6 +687,6 @@ Kräv säkerhets-PIN - Kräver att varje medlem bekräftar farliga eller avdelningsövergripande chatbot-/SMS-åtgärder med sin personliga 4-siffriga säkerhets-PIN. Medlemmar utan PIN får en slumpmässigt genererad (visas på deras profilsida). + Kräver att varje medlem bekräftar farliga eller avdelningsövergripande assistent-/SMS-åtgärder med sin personliga 4-siffriga säkerhets-PIN. Medlemmar utan PIN får en slumpmässigt genererad (visas på deras profilsida). \ No newline at end of file diff --git a/Core/Resgrid.Localization/Areas/User/Department/Department.uk.resx b/Core/Resgrid.Localization/Areas/User/Department/Department.uk.resx index 9fa659bf7..ea0b5c104 100644 --- a/Core/Resgrid.Localization/Areas/User/Department/Department.uk.resx +++ b/Core/Resgrid.Localization/Areas/User/Department/Department.uk.resx @@ -588,19 +588,19 @@ Зберегти Загальні Налаштування - Налаштування чат-бота + Налаштування асистента - Чат-бот + Асистент - Конфігурація чат-бота + Конфігурація асистента - Увімкнути чат-бота + Увімкнути асистента - Дозволити учасникам цього підрозділу взаємодіяти з чат-ботом. + Дозволити учасникам цього підрозділу взаємодіяти з асистентом. Дозволені платформи @@ -609,10 +609,10 @@ Назви платформ, розділені комами, дозволені для цього підрозділу, або * для всіх. Дійсні назви: SmsTwilio, SmsSignalWire, Discord, Slack, Telegram, WhatsApp, Teams, Signal, WebChat. - Дозволити диспетчеризацію через чат-бот + Дозволити диспетчеризацію через асистент - Дозволити уповноваженим користувачам створювати або диспетчеризувати виклики через чат-бот. + Дозволити уповноваженим користувачам створювати або диспетчеризувати виклики через асистент. Підтверджувати зміни статусу @@ -630,7 +630,7 @@ Проактивні сповіщення - Дозволити чат-боту надсилати проактивні сповіщення (виклики, нагадування) прив'язаним користувачам. + Дозволити асистенту надсилати проактивні сповіщення (виклики, нагадування) прив'язаним користувачам. Повідомлення / користувач / хвилина @@ -648,7 +648,7 @@ Постачальник ШІ / LLM підрозділу (необов'язково) - Залиште ці поля порожніми, щоб використовувати системного постачальника ШІ Resgrid. Щоб обробка вашого чат-бота залишалася у вашого власного постачальника, введіть сумісну з OpenAI кінцеву точку, модель і ключ API. + Залиште ці поля порожніми, щоб використовувати системного постачальника ШІ Resgrid. Щоб обробка вашого асистента залишалася у вашого власного постачальника, введіть сумісну з OpenAI кінцеву точку, модель і ключ API. Кінцева точка LLM @@ -672,10 +672,10 @@ Скасувати - Налаштування чат-бота збережено. + Налаштування асистента збережено. - Під час збереження налаштувань чат-бота сталася помилка. + Під час збереження налаштувань асистента сталася помилка. Enable Modern Notifications @@ -687,6 +687,6 @@ Вимагати PIN-код безпеки - Вимагає, щоб кожен учасник підтверджував небезпечні або загальновідомчі дії чат-бота/SMS своїм особистим 4-значним PIN-кодом безпеки. Учасники без PIN-коду отримують випадково згенерований (доступний на сторінці профілю). + Вимагає, щоб кожен учасник підтверджував небезпечні або загальновідомчі дії асистента/SMS своїм особистим 4-значним PIN-кодом безпеки. Учасники без PIN-коду отримують випадково згенерований (доступний на сторінці профілю). \ No newline at end of file diff --git a/Core/Resgrid.Localization/Areas/User/Home/EditProfile.ar.resx b/Core/Resgrid.Localization/Areas/User/Home/EditProfile.ar.resx index 62285da01..0a530e48b 100644 --- a/Core/Resgrid.Localization/Areas/User/Home/EditProfile.ar.resx +++ b/Core/Resgrid.Localization/Areas/User/Home/EditProfile.ar.resx @@ -113,16 +113,16 @@ رقم واحد على الأقل حرف كبير وحرف صغير على الأقل - عند التفعيل، تطلب الإجراءات الخطرة عبر روبوت الدردشة/الرسائل النصية رمز PIN كخطوة أمان إضافية. إذا فعّلت هذا بدون رمز PIN، يتم إنشاء رمز عشوائي لك. + عند التفعيل، تطلب الإجراءات الخطرة عبر المساعد/الرسائل النصية رمز PIN كخطوة أمان إضافية. إذا فعّلت هذا بدون رمز PIN، يتم إنشاء رمز عشوائي لك. طلب رمز PIN الأمان - يتطلب قسمك رمز PIN الأمان للإجراءات الخطرة عبر روبوت الدردشة/الرسائل النصية، لذلك يكون هذا الخيار مفعلاً دائمًا. + يتطلب قسمك رمز PIN الأمان للإجراءات الخطرة عبر المساعد/الرسائل النصية، لذلك يكون هذا الخيار مفعلاً دائمًا. - يؤكد رمز PIN الأمان المكون من 4 أرقام الإجراءات الخطرة أو على مستوى القسم التي تتم عبر الرسائل النصية أو روبوت الدردشة. تجنب الأرقام المتكررة (0000) والمتسلسلة (1234، 4321). اتركه فارغًا للاحتفاظ برمز PIN الحالي. + يؤكد رمز PIN الأمان المكون من 4 أرقام الإجراءات الخطرة أو على مستوى القسم التي تتم عبر الرسائل النصية أو المساعد. تجنب الأرقام المتكررة (0000) والمتسلسلة (1234، 4321). اتركه فارغًا للاحتفاظ برمز PIN الحالي. رمز PIN الأمان diff --git a/Core/Resgrid.Localization/Areas/User/Home/EditProfile.de.resx b/Core/Resgrid.Localization/Areas/User/Home/EditProfile.de.resx index f0e4ce041..18d4c90a9 100644 --- a/Core/Resgrid.Localization/Areas/User/Home/EditProfile.de.resx +++ b/Core/Resgrid.Localization/Areas/User/Home/EditProfile.de.resx @@ -381,16 +381,16 @@ Mindestens eine Ziffer (Zahl) Mindestens ein Groß- und ein Kleinbuchstabe - Wenn aktiviert, fragen gefährliche Chatbot-/SMS-Aktionen Ihre PIN als zusätzlichen Sicherheitsschritt ab. Wenn Sie dies ohne PIN aktivieren, wird eine zufällige PIN für Sie generiert. + Wenn aktiviert, fragen gefährliche Assistenten-/SMS-Aktionen Ihre PIN als zusätzlichen Sicherheitsschritt ab. Wenn Sie dies ohne PIN aktivieren, wird eine zufällige PIN für Sie generiert. Sicherheits-PIN erforderlich - Ihre Abteilung verlangt eine Sicherheits-PIN für gefährliche Chatbot-/SMS-Aktionen, daher ist diese Option immer aktiviert. + Ihre Abteilung verlangt eine Sicherheits-PIN für gefährliche Assistenten-/SMS-Aktionen, daher ist diese Option immer aktiviert. - Ihre 4-stellige Sicherheits-PIN bestätigt gefährliche oder abteilungsweite Aktionen per SMS oder Chatbot. Vermeiden Sie wiederholte Ziffern (0000) und Folgen (1234, 4321). Leer lassen, um Ihre aktuelle PIN zu behalten. + Ihre 4-stellige Sicherheits-PIN bestätigt gefährliche oder abteilungsweite Aktionen per SMS oder Assistenten. Vermeiden Sie wiederholte Ziffern (0000) und Folgen (1234, 4321). Leer lassen, um Ihre aktuelle PIN zu behalten. Sicherheits-PIN diff --git a/Core/Resgrid.Localization/Areas/User/Home/EditProfile.en.resx b/Core/Resgrid.Localization/Areas/User/Home/EditProfile.en.resx index 889e43be8..1c0011bde 100644 --- a/Core/Resgrid.Localization/Areas/User/Home/EditProfile.en.resx +++ b/Core/Resgrid.Localization/Areas/User/Home/EditProfile.en.resx @@ -436,16 +436,16 @@ At least one digit (number) At least one uppercase and one lowercase letter - When enabled, dangerous chatbot/text actions ask for your PIN as an extra security step. If you enable this without a PIN a random one is generated for you. + When enabled, dangerous assistant/text actions ask for your PIN as an extra security step. If you enable this without a PIN a random one is generated for you. Require Security PIN - Your department requires a security PIN for dangerous chatbot/text actions, so this option is always on. + Your department requires a security PIN for dangerous assistant/text actions, so this option is always on. - Your 4-digit security PIN confirms dangerous or department-wide actions performed over text message or chatbot. Avoid repeated digits (0000) and sequences (1234, 4321). Leave blank to keep your current PIN. + Your 4-digit security PIN confirms dangerous or department-wide actions performed over text message or assistant. Avoid repeated digits (0000) and sequences (1234, 4321). Leave blank to keep your current PIN. Security PIN diff --git a/Core/Resgrid.Localization/Areas/User/Home/EditProfile.es.resx b/Core/Resgrid.Localization/Areas/User/Home/EditProfile.es.resx index 536179197..77a797d66 100644 --- a/Core/Resgrid.Localization/Areas/User/Home/EditProfile.es.resx +++ b/Core/Resgrid.Localization/Areas/User/Home/EditProfile.es.resx @@ -427,16 +427,16 @@ Al menos un dígito (número) Al menos una letra mayúscula y una minúscula - Cuando está activado, las acciones peligrosas de chatbot/mensajes de texto solicitan su PIN como paso de seguridad adicional. Si lo activa sin un PIN, se genera uno aleatorio para usted. + Cuando está activado, las acciones peligrosas de asistente/mensajes de texto solicitan su PIN como paso de seguridad adicional. Si lo activa sin un PIN, se genera uno aleatorio para usted. Requerir PIN de seguridad - Su departamento requiere un PIN de seguridad para acciones peligrosas de chatbot/mensajes de texto, por lo que esta opción está siempre activada. + Su departamento requiere un PIN de seguridad para acciones peligrosas de asistente/mensajes de texto, por lo que esta opción está siempre activada. - Su PIN de seguridad de 4 dígitos confirma acciones peligrosas o de todo el departamento realizadas por mensaje de texto o chatbot. Evite dígitos repetidos (0000) y secuencias (1234, 4321). Déjelo en blanco para conservar su PIN actual. + Su PIN de seguridad de 4 dígitos confirma acciones peligrosas o de todo el departamento realizadas por mensaje de texto o asistente. Evite dígitos repetidos (0000) y secuencias (1234, 4321). Déjelo en blanco para conservar su PIN actual. PIN de seguridad diff --git a/Core/Resgrid.Localization/Areas/User/Home/EditProfile.fr.resx b/Core/Resgrid.Localization/Areas/User/Home/EditProfile.fr.resx index 3dbf98d8c..9b25d2837 100644 --- a/Core/Resgrid.Localization/Areas/User/Home/EditProfile.fr.resx +++ b/Core/Resgrid.Localization/Areas/User/Home/EditProfile.fr.resx @@ -381,16 +381,16 @@ Au moins un chiffre Au moins une lettre majuscule et une minuscule - Lorsqu'elle est activée, les actions dangereuses du chatbot/SMS demandent votre PIN comme étape de sécurité supplémentaire. Si vous l'activez sans PIN, un code aléatoire est généré pour vous. + Lorsqu'elle est activée, les actions dangereuses de l'assistant/SMS demandent votre PIN comme étape de sécurité supplémentaire. Si vous l'activez sans PIN, un code aléatoire est généré pour vous. Exiger le code PIN de sécurité - Votre service exige un code PIN de sécurité pour les actions dangereuses du chatbot/SMS, cette option est donc toujours activée. + Votre service exige un code PIN de sécurité pour les actions dangereuses de l'assistant/SMS, cette option est donc toujours activée. - Votre code PIN de sécurité à 4 chiffres confirme les actions dangereuses ou à l'échelle du service effectuées par SMS ou chatbot. Évitez les chiffres répétés (0000) et les séquences (1234, 4321). Laissez vide pour conserver votre PIN actuel. + Votre code PIN de sécurité à 4 chiffres confirme les actions dangereuses ou à l'échelle du service effectuées par SMS ou assistant. Évitez les chiffres répétés (0000) et les séquences (1234, 4321). Laissez vide pour conserver votre PIN actuel. Code PIN de sécurité diff --git a/Core/Resgrid.Localization/Areas/User/Home/EditProfile.it.resx b/Core/Resgrid.Localization/Areas/User/Home/EditProfile.it.resx index 87490d367..f234f1bff 100644 --- a/Core/Resgrid.Localization/Areas/User/Home/EditProfile.it.resx +++ b/Core/Resgrid.Localization/Areas/User/Home/EditProfile.it.resx @@ -381,16 +381,16 @@ Almeno una cifra (numero) Almeno una lettera maiuscola e una minuscola - Se attivato, le azioni pericolose di chatbot/SMS richiedono il tuo PIN come passaggio di sicurezza aggiuntivo. Se lo attivi senza un PIN, ne viene generato uno casuale per te. + Se attivato, le azioni pericolose dell'assistente/SMS richiedono il tuo PIN come passaggio di sicurezza aggiuntivo. Se lo attivi senza un PIN, ne viene generato uno casuale per te. Richiedi PIN di sicurezza - Il tuo dipartimento richiede un PIN di sicurezza per le azioni pericolose di chatbot/SMS, quindi questa opzione è sempre attiva. + Il tuo dipartimento richiede un PIN di sicurezza per le azioni pericolose dell'assistente/SMS, quindi questa opzione è sempre attiva. - Il tuo PIN di sicurezza a 4 cifre conferma le azioni pericolose o a livello di dipartimento eseguite tramite SMS o chatbot. Evita cifre ripetute (0000) e sequenze (1234, 4321). Lascia vuoto per mantenere il PIN attuale. + Il tuo PIN di sicurezza a 4 cifre conferma le azioni pericolose o a livello di dipartimento eseguite tramite SMS o assistente. Evita cifre ripetute (0000) e sequenze (1234, 4321). Lascia vuoto per mantenere il PIN attuale. PIN di sicurezza diff --git a/Core/Resgrid.Localization/Areas/User/Home/EditProfile.pl.resx b/Core/Resgrid.Localization/Areas/User/Home/EditProfile.pl.resx index 15551c1c3..7601ad0a6 100644 --- a/Core/Resgrid.Localization/Areas/User/Home/EditProfile.pl.resx +++ b/Core/Resgrid.Localization/Areas/User/Home/EditProfile.pl.resx @@ -381,16 +381,16 @@ Co najmniej jedna cyfra Co najmniej jedna wielka i jedna mała litera - Po włączeniu niebezpieczne akcje chatbota/SMS wymagają podania kodu PIN jako dodatkowego zabezpieczenia. Jeśli włączysz tę opcję bez kodu PIN, zostanie wygenerowany losowy. + Po włączeniu niebezpieczne akcje asystenta/SMS wymagają podania kodu PIN jako dodatkowego zabezpieczenia. Jeśli włączysz tę opcję bez kodu PIN, zostanie wygenerowany losowy. Wymagaj kodu PIN bezpieczeństwa - Twój wydział wymaga kodu PIN bezpieczeństwa dla niebezpiecznych akcji chatbota/SMS, więc ta opcja jest zawsze włączona. + Twój wydział wymaga kodu PIN bezpieczeństwa dla niebezpiecznych akcji asystenta/SMS, więc ta opcja jest zawsze włączona. - Twój 4-cyfrowy kod PIN bezpieczeństwa potwierdza niebezpieczne lub obejmujące cały wydział akcje wykonywane przez SMS lub chatbota. Unikaj powtarzających się cyfr (0000) i sekwencji (1234, 4321). Pozostaw puste, aby zachować obecny PIN. + Twój 4-cyfrowy kod PIN bezpieczeństwa potwierdza niebezpieczne lub obejmujące cały wydział akcje wykonywane przez SMS lub asystenta. Unikaj powtarzających się cyfr (0000) i sekwencji (1234, 4321). Pozostaw puste, aby zachować obecny PIN. Kod PIN bezpieczeństwa diff --git a/Core/Resgrid.Localization/Areas/User/Home/EditProfile.sv.resx b/Core/Resgrid.Localization/Areas/User/Home/EditProfile.sv.resx index cb6812b51..57f9380c8 100644 --- a/Core/Resgrid.Localization/Areas/User/Home/EditProfile.sv.resx +++ b/Core/Resgrid.Localization/Areas/User/Home/EditProfile.sv.resx @@ -381,16 +381,16 @@ Minst en siffra Minst en stor och en liten bokstav - När det är aktiverat begär farliga chatbot-/SMS-åtgärder din PIN som ett extra säkerhetssteg. Om du aktiverar detta utan PIN genereras en slumpmässig åt dig. + När det är aktiverat begär farliga assistent-/SMS-åtgärder din PIN som ett extra säkerhetssteg. Om du aktiverar detta utan PIN genereras en slumpmässig åt dig. Kräv säkerhets-PIN - Din avdelning kräver en säkerhets-PIN för farliga chatbot-/SMS-åtgärder, så det här alternativet är alltid på. + Din avdelning kräver en säkerhets-PIN för farliga assistent-/SMS-åtgärder, så det här alternativet är alltid på. - Din 4-siffriga säkerhets-PIN bekräftar farliga eller avdelningsövergripande åtgärder som utförs via SMS eller chatbot. Undvik upprepade siffror (0000) och sekvenser (1234, 4321). Lämna tomt för att behålla din nuvarande PIN. + Din 4-siffriga säkerhets-PIN bekräftar farliga eller avdelningsövergripande åtgärder som utförs via SMS eller assistent. Undvik upprepade siffror (0000) och sekvenser (1234, 4321). Lämna tomt för att behålla din nuvarande PIN. Säkerhets-PIN diff --git a/Core/Resgrid.Localization/Areas/User/Home/EditProfile.uk.resx b/Core/Resgrid.Localization/Areas/User/Home/EditProfile.uk.resx index 3f1d4c5d7..65cc99fa5 100644 --- a/Core/Resgrid.Localization/Areas/User/Home/EditProfile.uk.resx +++ b/Core/Resgrid.Localization/Areas/User/Home/EditProfile.uk.resx @@ -381,16 +381,16 @@ Щонайменше одна цифра Щонайменше одна велика та одна мала літера - Якщо ввімкнено, небезпечні дії чат-бота/SMS запитують ваш PIN як додатковий крок безпеки. Якщо ви ввімкнете це без PIN-коду, для вас буде згенеровано випадковий. + Якщо ввімкнено, небезпечні дії асистента/SMS запитують ваш PIN як додатковий крок безпеки. Якщо ви ввімкнете це без PIN-коду, для вас буде згенеровано випадковий. Вимагати PIN-код безпеки - Ваш відділ вимагає PIN-код безпеки для небезпечних дій чат-бота/SMS, тому цей параметр завжди ввімкнено. + Ваш відділ вимагає PIN-код безпеки для небезпечних дій асистента/SMS, тому цей параметр завжди ввімкнено. - Ваш 4-значний PIN-код безпеки підтверджує небезпечні або загальновідомчі дії, виконані через SMS або чат-бот. Уникайте повторюваних цифр (0000) і послідовностей (1234, 4321). Залиште порожнім, щоб зберегти поточний PIN. + Ваш 4-значний PIN-код безпеки підтверджує небезпечні або загальновідомчі дії, виконані через SMS або асистент. Уникайте повторюваних цифр (0000) і послідовностей (1234, 4321). Залиште порожнім, щоб зберегти поточний PIN. PIN-код безпеки diff --git a/Web/Resgrid.Web.Services/Controllers/v4/ChatController.cs b/Web/Resgrid.Web.Services/Controllers/v4/ChatController.cs index 1e222abf9..800bda41c 100644 --- a/Web/Resgrid.Web.Services/Controllers/v4/ChatController.cs +++ b/Web/Resgrid.Web.Services/Controllers/v4/ChatController.cs @@ -51,6 +51,7 @@ public class ChatController : V4AuthenticatedApiControllerbase private readonly IAuthorizationService _authorizationService; private readonly ICacheProvider _cacheProvider; private readonly IEventAggregator _eventAggregator; + private readonly IQueueService _queueService; public ChatController( IChatChannelService chatChannelService, @@ -64,7 +65,8 @@ public ChatController( IFeatureToggleService featureToggleService, IAuthorizationService authorizationService, ICacheProvider cacheProvider, - IEventAggregator eventAggregator) + IEventAggregator eventAggregator, + IQueueService queueService) { _chatChannelService = chatChannelService; _chatPermissionService = chatPermissionService; @@ -78,6 +80,7 @@ public ChatController( _authorizationService = authorizationService; _cacheProvider = cacheProvider; _eventAggregator = eventAggregator; + _queueService = queueService; } #endregion Members and Constructors @@ -817,6 +820,32 @@ public async Task> SendMessage(string channe if (message == null) return BadRequest(); + // The assistant channel is also reachable from the regular chat page, so sends that arrive + // through this generic endpoint must still feed the chatbot pipeline (the dedicated + // ChatbotController.SendChatMessage does the same for the assistant panel). + var channel = await _chatChannelService.GetChannelByIdAsync(channelId); + if (channel != null && channel.ChannelType == (int)ChatChannelType.Chatbot && !String.IsNullOrWhiteSpace(message.Body)) + { + await _queueService.EnqueueChatbotMessageAsync(new Resgrid.Model.Queue.ChatbotMessageQueueItem + { + DepartmentId = DepartmentId, + From = UserId, + Body = message.Body, + MessageId = message.ChatMessageId, + Platform = (int)Resgrid.Chatbot.Models.ChatbotPlatform.WebChat + }); + + // Typing indicator to the user's devices while the worker runs the pipeline. + _eventAggregator.SendMessage(new ChatEventRaised + { + DepartmentId = DepartmentId, + ChatChannelId = channel.ChatChannelId, + Kind = ChatEventKinds.ChatbotTyping, + TargetUserId = UserId, + PayloadJson = Newtonsoft.Json.JsonConvert.SerializeObject(new { channel.ChatChannelId, IsTyping = true }) + }); + } + var result = new ChatMessageSentResult(); result.Data = (await ConvertMessagesAsync(new List { message })).FirstOrDefault(); result.PageSize = 1; diff --git a/Web/Resgrid.Web.Services/Controllers/v4/ChatbotController.cs b/Web/Resgrid.Web.Services/Controllers/v4/ChatbotController.cs index 45a1454f7..741c9b6cb 100644 --- a/Web/Resgrid.Web.Services/Controllers/v4/ChatbotController.cs +++ b/Web/Resgrid.Web.Services/Controllers/v4/ChatbotController.cs @@ -470,7 +470,13 @@ private async Task ChatbotChatEnabledAsync() return false; var settings = await _chatChannelService.GetDepartmentSettingsAsync(DepartmentId); - return settings == null || settings.ChatbotEnabled; + if (settings != null && !settings.ChatbotEnabled) + return false; + + // Honor the admin toggle from Department Settings > Assistant. Matching the ingress + // pipeline's semantics, a missing config row means enabled. + var config = await _departmentConfigService.GetConfigAsync(DepartmentId); + return config == null || config.IsEnabled; } #endregion Web Chat conversation diff --git a/Web/Resgrid.Web/Areas/User/Apps/src/components/chat/chatApi.ts b/Web/Resgrid.Web/Areas/User/Apps/src/components/chat/chatApi.ts index 6c160b58b..b742a057b 100644 --- a/Web/Resgrid.Web/Areas/User/Apps/src/components/chat/chatApi.ts +++ b/Web/Resgrid.Web/Areas/User/Apps/src/components/chat/chatApi.ts @@ -282,15 +282,17 @@ export async function flagMessage(messageId: string, reason: number, note: strin export async function getChatbotChannel(): Promise { try { const raw = await getJson>('api/v4/Chatbot/GetChatChannel'); - const channelId = (raw.ChatChannelId ?? raw.chatChannelId) as string | undefined; + // The v4 envelope nests the payload under Data; tolerate a flat payload too. + const data = ((raw.Data ?? raw.data) ?? raw) as Record; + const channelId = (data.ChatChannelId ?? data.chatChannelId) as string | undefined; if (!channelId) { return null; } return { ChatChannelId: channelId, - Name: (raw.Name ?? raw.name ?? 'Assistant') as string, - LastMessageSeq: Number(raw.LastMessageSeq ?? raw.lastMessageSeq ?? 0), - LastMessageOn: (raw.LastMessageOn ?? raw.lastMessageOn ?? null) as string | null, + Name: (data.Name ?? data.name ?? 'Assistant') as string, + LastMessageSeq: Number(data.LastMessageSeq ?? data.lastMessageSeq ?? 0), + LastMessageOn: (data.LastMessageOn ?? data.lastMessageOn ?? null) as string | null, }; } catch (error) { if (isApiStatus(error, 404)) { From 950e14044ed4d885f8ff8d18bbbe910ed42ce920 Mon Sep 17 00:00:00 2001 From: Shawn Jackson Date: Sat, 8 Aug 2026 11:09:09 -0700 Subject: [PATCH 2/2] RG-T117 PR#452 fixes --- .../Controllers/v4/ChatController.cs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/Web/Resgrid.Web.Services/Controllers/v4/ChatController.cs b/Web/Resgrid.Web.Services/Controllers/v4/ChatController.cs index 800bda41c..a95d09481 100644 --- a/Web/Resgrid.Web.Services/Controllers/v4/ChatController.cs +++ b/Web/Resgrid.Web.Services/Controllers/v4/ChatController.cs @@ -826,7 +826,7 @@ public async Task> SendMessage(string channe var channel = await _chatChannelService.GetChannelByIdAsync(channelId); if (channel != null && channel.ChannelType == (int)ChatChannelType.Chatbot && !String.IsNullOrWhiteSpace(message.Body)) { - await _queueService.EnqueueChatbotMessageAsync(new Resgrid.Model.Queue.ChatbotMessageQueueItem + var queued = await _queueService.EnqueueChatbotMessageAsync(new Resgrid.Model.Queue.ChatbotMessageQueueItem { DepartmentId = DepartmentId, From = UserId, @@ -835,6 +835,19 @@ await _queueService.EnqueueChatbotMessageAsync(new Resgrid.Model.Queue.ChatbotMe Platform = (int)Resgrid.Chatbot.Models.ChatbotPlatform.WebChat }); + // The message persisted but the assistant will never see it; surface the failure the + // same way ChatbotController.SendChatMessage does instead of pretending it was sent. + if (!queued) + { + var failedResult = new ChatMessageSentResult(); + failedResult.Data = (await ConvertMessagesAsync(new List { message })).FirstOrDefault(); + failedResult.PageSize = 1; + failedResult.Status = ResponseHelper.Failure; + + ResponseHelper.PopulateV4ResponseData(failedResult); + return StatusCode(StatusCodes.Status500InternalServerError, failedResult); + } + // Typing indicator to the user's devices while the worker runs the pipeline. _eventAggregator.SendMessage(new ChatEventRaised {