Implementera ett skalbart meddelandesystem med Power Platform

Microsoft Power Platform är ett sätt att skala affärsprogram samtidigt som du integrerar med molntjänster i företagsklass för högvolymåtgärder. Det skalbara meddelandesystemet använder den här funktionen för att skicka SMS- och e-postpåminnelser för avtalade tider som lagras i Microsoft Dataverse. Viktiga funktioner är:

  • Meddelanden utlöstes automatiskt en vecka, en dag och en timme före den avtalade tiden.
  • Möjlighet att uppdatera eller avbryta meddelanden när avtalade tider ändras eller avbryts.
  • Power Apps fungerar som användargränssnitt för användare för att hantera avtalade tider effektivt.
  • Stöder tusentals aviseringar per dag samtidigt som det förblir pålitligt och högpresterande.

Systemet använder Azure Service Bus för schemaläggning med stora volymer, Azure Functions för bearbetning och leverans samt Dataverse för beständig spårning av avtalade tider och meddelanden. Meddelanden skickas via SendGrid för e-post och Twilio eller Azure Communication Services för SMS.

Den här arkitekturen säkerställer skalbarhet, tillförlitlighet och underhåll, vilket övervinner begränsningarna med att enbart förlita sig på Power Automate för orkestrering av stora mängder meddelanden.

Tips/Råd

Den här artikeln innehåller ett exempelscenario och en generaliserad exempelarkitektur för att illustrera hur du skickar SMS- och e-postpåminnelser för avtalade tider som lagras i Dataverse. Arkitekturexemplet kan ändras för många olika scenarier och branscher.

Arkitekturdiagram

Arkitekturdiagram som visar schemaläggning av avtalade tider i Power Apps med Azure-tjänster.

Arbetsflöde

Systemarbetsflödet skickar meddelanden på ett tillförlitligt sätt vid rätt tidpunkt och stöder uppdateringar och annulleringar:

  1. Skapande av avtalad tid: Användare skapar avtalade tider via Power Apps-arbetsyteprogrammet. Programmet skriver data om avtalade tider direkt till Dataverse, vilket säkerställer att endast behöriga användare kan komma åt data baserat på säkerhetsroller.

  2. Händelseutlösare: När en avtalad tid skapas, uppdateras eller avbryts utlöser Dataverse en process på serversidan, till exempel ett plugin-program, en webhook eller ett enkelt Power Automate-flöde. Den här händelsen initierar schemaläggningslogik.

  3. Schemaläggning av meddelanden: Azure-funktionen Scheduler beräknar meddelandetider för en vecka, en dag och en timme före den avtalade tiden. Den skapar sedan motsvarande meddelandeposter i Dataverse och schemalägger meddelanden i Azure Service Bus, lagrar sekvensnummer för framtida uppdateringar eller annulleringar.

  4. Uppdateringar av avtalad tid: Om en avtalad tid ändras avbryter Scheduler-funktionen tidigare schemalagda meddelanden med hjälp av Service Bus-sekvensnummer. Den uppdaterar meddelandeposterna i Dataverse och beräknar om meddelandena baserat på den nya avtalade tidens detaljer.

  5. Annullering av avtalad tid: När en avtalad tid avbryts tar Scheduler-funktionen bort alla väntande meddelanden från Azure Service Bus och uppdaterar motsvarande meddelandeposter i Dataverse som avbrutna.

  6. Meddelandeleverans: Azure-funktionen hanterar schemalagda meddelanden från Azure Service Bus. Den skickar e-postaviseringar via SendGrid och SMS via Twilio eller Azure Communication Services. När funktionen har skickats uppdateras meddelandeposten med status, återförsök och eventuell felinformation.

  7. Övervakning och observerbarhet: Application Insights och Azure Monitor spårar funktionskörningar, köhälsa, leveransframgångar och fel. Köer med obeställbara meddelanden i Service Bus samlar in meddelanden som inte kan levereras för senare analys.

Components

  • Power Apps (canvas-app): Power Apps canvas-applikationen fungerar som det primära användargränssnittet för att hantera bokningar. Det gör att användarna kan skapa, uppdatera eller avbryta avtalade tider i ett intuitivt gränssnitt med låg kod. Canvas-appen interagerar direkt med Dataverse för att läsa och skriva mötes- och meddelandeuppgifter. Det ger också feedback i realtid till användaren om lyckat skapande, uppdateringar eller annullering av avtalade tider. Användargränssnittet är utformat för att verifiera datainmatning, hantera konflikter som överlappande avtalade tider och tillhandahålla lokaliserade tidszoner för meddelanden.

  • Dataverse

    • Avtalstabell: Dataverse fungerar som ett registreringssystem för all information om avtalade möten. Varje bokning innehåller information som patienten eller användaren, tidpunkt, tjänsttypen och statusen. Tabellen Avtalad tid är utformad för att utlösa händelser vid åtgärder för att skapa, uppdatera eller ta bort. Scheduler Azure-funktionen lyssnar på dessa händelser för att beräkna och schemalägga meddelanden. Dataverse ger inbyggd säkerhet via rollbaserad åtkomstkontroll, behörigheter på fältnivå och granskning, vilket säkerställer att känslig information om avtalade tider endast är tillgänglig för rätt användare. Dessutom säkerställer integreringen med Power Platform åtkomst med låg latens och sömlös interaktion med andra komponenter.

    • Meddelandetabell: I meddelandetabellen lagras metadata för varje schemalagd avisering, spårning av kanalen (SMS eller e-post), schemalagd leveranstid, status (Schemalagd, Skickad, Misslyckad eller Avbruten), antal försök och tillhörande Service Bus-sekvensnummer. Systemet tillhandahåller spårning, rapportering och felhantering i realtid för alla meddelanden genom att underhålla dessa data i Dataverse. Tabellen gör det möjligt för administratörer att granska leveranshistoriken, övervaka misslyckade försök och vidta korrigerande åtgärder om det behövs. Det stöder också automatiska uppdateringar som utlöses av ändringar av avtalade tider, vilket säkerställer att meddelandena förblir korrekta.

  • Azure Functions

    • Scheduler: Scheduler-funktionen beräknar meddelandetider baserat på avtalad tidsinformation. Den avgör påminnelser för en vecka, en dag och en timme före den avtalade tiden och skapar motsvarande poster i Dataverse. Den schemalägger även meddelanden i Azure Service Bus och lagrar sekvensnumren för att möjliggöra framtida annullering eller omplanering. Den här funktionen kan hantera stora mängder avtalade tider utan prestandaförsämring och säkerställa idempotens så att den inte schemalägger duplicerade meddelanden. Dess serverlösa design gör att den kan skalas automatiskt baserat på händelsebelastning och säkerställa driftseffektivitet.

    • Leverans: Leveransfunktionen bearbetar meddelanden från Azure Service Bus när deras schemalagda leveranstid kommer. Den avgör rätt kanal för varje meddelande, till exempel e-post via SendGrid eller SMS via Twilio/Azure Communication Services, och skickar meddelandet i enlighet med detta. Efter leveransen uppdateras meddelandeposten i Dataverse med status och återförsöksdata om ett fel inträffar. Funktionen implementerar också mekanismer för felhantering, loggning och återförsök, vilket säkerställer att den levererar meddelanden på ett tillförlitligt sätt om det finns tillfälliga fel eller frekvensgränser för providern. Den skalas automatiskt med antalet meddelanden i Service Bus för att hantera toppar i meddelandevolymen.

  • Azure Service Bus: Azure Service Bus är ryggraden i systemet för meddelandeschemaläggning. Det ger varaktigt, högt dataflöde och tidsspecifik meddelandekö, vilket säkerställer att det levererar meddelanden exakt när det behövs. Med hjälp av sekvensnummer kan meddelanden avbrytas eller schemaläggas om när det sker en ändring i avtalad tid, vilket upprätthåller konsekvens. Service Bus stöder också dödsbokstavsköer för att samla in meddelanden som inte levereras efter flera återförsök, vilket ger administratörer möjlighet att undersöka och rätta till fel. Möjligheten att frikoppla schemaläggning från leverans säkerställer att systemet förblir dynamiskt och skalbart.

  • E-post- och SMS-leverantörer: Externa kommunikationstjänster hanterar den faktiska leveransen av meddelanden. SendGrid används för att skicka e-postaviseringar, tillhandahålla robusta mekanismer för spårning, analys och återförsök. Twilio och Azure Communication Services levererar SMS-meddelanden med stöd för högvolymmeddelanden med tillförlitlighet. Leveransfunktionen interagerar med dessa leverantörer med hjälp av säkra API-nycklar som lagras i Azure Key Vault och implementerar återförsöksstrategier för att hantera tillfälliga fel eller hastighetsbegränsningsproblem. Genom att lägga ut leverans till specialiserade leverantörer säkerställer systemet hög tillförlitlighet och minskar driftkostnaderna.

  • Azure Key Vault: Du kan lagra alla känsliga autentiseringsuppgifter och API-nycklar på ett säkert sätt i Azure Key Vault. Azure Functions får åtkomst till hemligheter via hanterade identiteter, vilket eliminerar behovet av att lagra känsliga data i kod- eller konfigurationsfiler. Key Vault säkerställer att det krypterar autentiseringsuppgifter i vila, granskar åtkomst och tillämpar rotationsprinciper automatiskt för att upprätthålla säkerhetsefterlevnad.

  • Verktyg för övervakning och observerbarhet: Systemet använder Application Insights och Azure Monitor för att ge fullständig insyn i lösningens hälsa och prestanda. Application Insights spårar funktionskörningar, kölängder, leveransstatus och fel, medan Azure Monitor tillhandahåller aviseringar för onormalt beteende, meddelandefel eller tjänstfel. Du kan använda loggar och telemetri för felsökning, driftanalys och kapacitetsplanering, så att administratörerna har den information som krävs för att upprätthålla hög driftstillförlitlighet och prestanda.

Scenarioinformation

Den här lösningen är utformad för organisationer som behöver skicka påminnelser i tid för schemalagda möten, till exempel sjukvårdskliniker, vaccinationscenter eller servicebaserade företag. Användare interagerar via Power Apps för att ange avtalad tidsinformation, som lagras i Dataverse och bearbetas omedelbart för att schemalägga meddelanden. Systemet beräknar automatiskt påminnelsetider, till exempel en vecka, en dag och en timme före den avtalade tiden, och ser till att påminnelserna levereras via rätt kanal.

Systemet kan hantera tusentals dagliga meddelanden utan prestandaförsämring, vilket möjliggörs av separationen mellan hantering av avtalade tider, schemaläggning och meddelandeleverans. Det säkerställer att påminnelserna fortsätter att vara korrekta även när avtalade tider flyttas eller avbryts genom att schemalägga om eller ta bort Service Bus-meddelanden dynamiskt. Varje steg i processen loggas och spåras. Den här metoden säkerställer att både administratörer och supportpersonal har insyn i systemets beteende och statusen för varje meddelande som skickas.

Överväganden

Dessa överväganden genomför principerna för Power Platform välstrukturerat, en uppsättning vägledande principer som förbättrar kvaliteten på en arbetsbelastning. Läs mer i Microsoft Power Platform välstrukturerat.

Security

Systemet integrerar säkerheten genomgående med hjälp av Microsoft Entra-ID för identitets- och Dataverse-roller för att begränsa åtkomsten till avtalade tider och meddelanden. Power Apps-användare autentiserar med hjälp av Microsoft Entra-ID, vilket säkerställer att alla interaktioner med Dataverse auktoriseras och loggas. Azure Functions använder hanterade identiteter för att på ett säkert sätt interagera med Dataverse, Service Bus och Key Vault utan att lagra autentiseringsuppgifter i kod- eller konfigurationsfiler.

Lagra känsliga autentiseringsuppgifter, till exempel SendGrid- och Twilio-nycklar, endast i Azure Key Vault och få åtkomst till dem via hanterade identiteter. Du kan ytterligare skydda kommunikationen mellan Azure-tjänster med hjälp av privata slutpunkter och virtuella nätverk, vilket minskar exponeringen för det offentliga Internet. Alla meddelandeutbyten mellan systemets komponenter följer krypterade kommunikationsstandarder för att skydda vilande data och under överföring.

Operativ skicklighet

Du uppnår driftskvalitet genom kontinuerlig övervakning, observerbarhet och automatiserad avisering. Application Insights samlar in detaljerad telemetri från Azure Functions, inklusive körningstider, fel, återförsök och prestandamått. Azure Monitor spårar hälsotillståndet för Azure Service Bus-köer och identifierar potentiella flaskhalsar eller kvarvarande uppgifter. Dödsbrevköer ger en mekanism för att samla in och felsöka meddelanden som inte kan bearbetas efter flera försök.

Administratörer kan konfigurera aviseringar för att meddela dem om fel som rör meddelandebearbetning, leverantörsavbrott eller onormal kötillväxt. Dataverse underhåller en spårningslogg i meddelandetabellen så att administratörer kan spåra livscykeln för varje meddelande. Eftersom Azure Functions är tillståndslösa och skalas automatiskt kan systemet svara på plötsliga ökningar av meddelandevolymen utan manuella åtgärder, vilket säkerställer konsekvent prestanda och drifttid.

Prestandaeffektivitet

Arkitekturen är optimerad för höga prestanda och skalbarhet. Azure Service Bus möjliggör effektiv hantering av schemalagda meddelanden utan de omkostnader som Power Automate-baserade fördröjningar skulle medföra. Separationen av schemaläggning och leverans i separata Funktioner gör att varje komponent kan skalas oberoende baserat på efterfrågan. Leveransfunktionen drar nytta av automatisk skalning, vilket gör att den kan bearbeta toppar i utgående meddelanden utan att påverka användarriktade system.

Att använda hanterade identiteter och cachelagringsstrategier för providerautentisering minskar dessutom svarstiden under meddelandeleveransen. Systemet minimerar onödiga lagringskostnader genom att endast behålla viktiga metadata i Dataverse och stödja arkiveringsstrategier för äldre meddelanden. Genom att kombinera Power Platform-funktioner med Azures skalbara meddelandeinfrastruktur säkerställer systemet snabb, effektiv och kostnadseffektiv meddelandeleverans i företagsskala.

Bidragsgivare

Microsoft ansvarar för den här artikeln. Följande deltagare skrev den här artikeln.

Huvudsakliga författare: