Implementación de ejemplo de un Agente de servicio Secure Agentforce
Los detalles de la implementación de Agentes de servicio de Agentforce seguros varían dependiendo de dónde se implemente el agente y de las políticas de autenticación de usuario relacionadas. Para obtener una idea de los patrones subyacentes, veamos un ejemplo.
Ediciones necesarias
| Disponible en: Lightning Experience |
| Disponible en: Enterprise Edition, Performance Edition, Unlimited Edition y Developer Edition. Las licencias complementarias requeridas varían por tipo de agente. |
Cuando su Agente de servicio de Agentforce está implementado en un sitio de Experience, a veces es necesario volver a autenticar los usuarios que interactúan con su agente. En estos casos, se puede invocar la autenticación en la sesión.
Los usuarios pueden autenticarse proporcionándoles una URL parametrizada en la plática. La URL parametrizada debe hacer referencia a un método seguro en el portal de Experience Cloud. Para prepararse para la autenticación externa antes de enviar la URL parametrizada, el objeto MessagingSession se configura con estos campos personalizados.
| Campo | Valor inicial | Definición |
|---|---|---|
| AuthSessionId | NULL | Identifica si hay una AuthSession vinculada actualmente a esta MessagingSession. Esto indica si la sesión de mensajería está autenticada. |
| AuthRequestTime | DateTime.Now() | Almacena cuándo se solicitó la autenticación, lo que limita la asignación de identidades a MessagingSession fuera de la ventana dirigida y permite el control del periodo de tiempo durante el cual se permite la autenticación externa. |
| AccountId | NULL | Garantiza que la Cuenta vinculada a la sesión autenticada está asignada en relación con el Contacto autenticado en el portal de ExperienceCloud. |
| ContactId | NULL | Garantiza que el Contacto vinculado a la sesión autenticada está asignado en relación con el Contacto autenticado en el portal de ExperienceCloud. |
El Método Apex que gestiona la URL parametrizada acepta el campo MessagingSession.SessionKey. Este Identificador exclusivo globalmente (GUID) es exclusivo de registros MessagingSession en los que Estado = “Activo”. Este método busca los registros MessagingSession relacionados con esta consulta.
SELECT Id, Conversation.ConversationIdentifier, Status, FROM MessagingSession
WHERE SessionKey = '1db8a0ab-aae4-4ed9-b6d5-3e7fe85b9574' AND Status = 'Active'
AND AuthSessionId__c = NULL
Si esta consulta devuelve un registro, este representa una plática con un Agente de servicio de Agentforce donde se autenticó el usuario. El registro devuelto se puede actualizar a continuación para representar la relación con la AuthSession actual del portal de Experience Cloud. Por ejemplo, si MessagingSession se define como 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();
El Agente de servicio de Agentforce ahora tiene la información que necesita para confirmar la identidad del usuario al realizar acciones privadas. También tiene el Id. de la AuthSession, que se puede finalizar en cuanto finalice la plática en la sesión del portal correspondiente.
En este ejemplo, el usuario se dirige a una página de portal donde se autenticará en el lateral. Esto actualizará el registro MessagingSession para la sesión de Agentforce con la identidad del usuario. Sin embargo, no generará un evento en la sesión de Agentforce, por lo que depende de que el usuario continúe la plática en Agentforce una vez completada la autenticación.

