Current Task: Implementing Phase 3 of the Resgrid chatbot (branch chatbot) — write/dispatch handlers, outbound delivery, localization, and new platform adapters. Build green; 71 chatbot unit tests passing. Remaining work is recorded in the plan: …/Resgrid/Dev/Chatbot/chatbot-phase3-plan.md → "[v1.2] Implementation Status".
Key Decisions:
- Destructive-action confirmation is real: ingress (
ChatbotIngressServicestep 5a) re-dispatches a__confirmedintent to the owning handler on YES (replaced the engine's faked confirm). - Outbound = chat as a first-class
CommunicationServicechannel:IChatbotOutboundServiceinResgrid.Model,NullChatbotOutboundServicedefault (PreserveExistingDefaults), real impl +IChatbotAdapterRegistryinProviders.Chatbot. Same Null+PreserveExistingDefaults pattern forIChatbotWebChatNotifier. - Localization uses culture-explicit
ChatbotResources(notIStringLocalizer), keyed offChatbotSession.Culture(fromUserProfile.Language); English values kept identical to old literals so tests are unchanged. 21/22 handlers localized in 9 languages (Help left as English command reference).
Next Steps:
- Wire
CommunicationService.SendNotificationAsync+SendCalendarAsynctoIChatbotOutboundService(same one-line pattern as SendMessage/SendCall); do P3.17 (AddManualIdentityendpoint,IChatbotIdentityResolver, migrationM0071per-identity outbound prefs). - Real platform work needing external SDKs/infra: Teams (
Microsoft.Bot.Builder), Signal (signald), Discord/Slack/Telegram rich rendering (real clients), WebChat web-layer SignalRIChatbotWebChatNotifierimpl +ChatbotMessageReceivedhub event. - P3.20 UI (Profile "Linked Chat Accounts" + Admin chatbot config, existing stack); P3.13 Scriban templates; P3.14 multi-turn polish (SetStatus/SetStaffing still prompt-faked); native-speaker review of non-English translations.