Exempel på implementering av en säker Agentforce Serviceagent
Detaljerna för att implementera säkra Agentforce Service-agenter varierar beroende på var agenten är distribuerad och omgivande användarautentiseringspolicyer. För att få en känsla för de underliggande mönstren, låt oss titta på ett exempel.
Versioner som krävs
| Tillgängliga i: Lightning Experience |
| Tillgängliga i: Utgåvorna Enterprise, Performance, Unlimited och Developer. Obligatoriska tilläggslicenser varierar beroende på agenttyp. |
När din Agentforce Serviceagent distribueras till en Experience-webbplats kan det ibland vara nödvändigt att autentisera de användare som interagerar med din agent igen. I sådana fall kan autentisering inom sessionen åberopas.
Användare kan autentiseras genom att ge dem en parameteriserad URL i konversationen. Den parameteriserade URL:en ska referera till en säker metod på Experience Cloud-portalen. För att förbereda för extern autentisering innan den parameteriserade URL:en skickas konfigureras objektet MessagingSession med dessa egna fält.
| Fält | Inledande värde | Definition |
|---|---|---|
| AuthSessionId | NULL | Identifierar om det för närvarande finns en AuthSession länkad till denna MessagingSession. Detta indikerar om meddelandesessionen är autentiserad. |
| AuthRequestTime | DateTime.Now() | Lagrar när autentisering begärdes, vilket begränsar MessagingSession från att tilldelas identiteter utanför det dirigerade fönstret och tillåter kontroll över den tidsram under vilken extern autentisering tillåts. |
| AccountId | NULL | Säkerställer att Kontot som är länkat till den autentiserade sessionen tilldelas i förhållande till Kontakten som autentiseras i ExperienceCloud-portalen. |
| ContactId | NULL | Säkerställer att Kontakten som är länkad till den autentiserade sessionen är tilldelad i förhållande till Kontakten som är autentiserad i ExperienceCloud-portalen. |
Apex som hanterar den parameteriserade URL:en accepterar fältet MessagingSession.SessionKey. Denna globalt unika identifierare (GUID) är unik för MessagingSession-poster där Status = “Aktiv”. Denna metod söker upp de relaterade MessagingSession-posterna med denna sökfråga.
SELECT Id, Conversation.ConversationIdentifier, Status, FROM MessagingSession
WHERE SessionKey = '1db8a0ab-aae4-4ed9-b6d5-3e7fe85b9574' AND Status = 'Active'
AND AuthSessionId__c = NULL
Om denna sökfråga returnerar en post representerar posten en konversation med en Agentforce Serviceagent där användaren har autentiserats. Den returnerade posten kan sedan uppdateras för att representera relationen till den aktuella AuthSession för Experience Cloud-portalen. Till exempel, om MessagingSession definieras som ms.
ms.AuthSessionId__c = SessionManagment.GetCurrentSession().get('SessionId');
User authUser = [SELECT Id, ContactId, AccountId from User WHERE Id = :UserInfo.getUserId()];
ms.AccountId__c = authUser.AccountId;
ms.ContactId__c = authUser.ContactId;
ms.commit();
Agentforce Serviceagent har nu den information den behöver för att bekräfta användarens identitet när de utför privata åtgärder. Den har även ID för AuthSession, som kan avslutas så fort konversationen i motsvarande portalsession avslutas.
I det här exemplet dirigeras användaren till en portalsida där de kommer att autentisera sig till sidan. Detta uppdaterar posten MessagingSession för Agentforce med användarens identitet. Det kommer dock inte att skapa en händelse i Agentforce sessionen utan beror på att användaren fortsätter konversationen i Agentforce, när autentiseringen är klar.
