- Primeros pasos
- Agentes de UiPath en Studio Web
- Acerca de los agentes de UiPath
- Licencia
- Agentes codificados en Studio Web
- Ejecución de agentes
- Primeros pasos con agentes conversacionales
- Licencias para agentes conversacionales
- Diseñar agentes conversacionales
- Evaluar agentes conversacionales
- Gestión de instancias
- Autopilot for Everyone
- Microsoft Teams
- Slack
- Configuración de acceso anónimo
- Observabilidad para agentes conversacionales
- Limitaciones y preguntas frecuentes
- Solicitudes
- Trabajar con archivos
- Contextos
- Escalaciones y memoria del agente
- Evaluaciones
- Seguimientos de agente
- Puntuación del agente
- Gestión de agentes de UiPath
- Agentes de UiPath codificados

Guía del usuario de Agents
Configuración de acceso anónimo
Información general
El acceso anónimo te permite integrar agentes conversacionales para usuarios que no tienen cuentas de UiPath. Esto es útil para aplicaciones orientadas al cliente, portales públicos o cualquier escenario en el que desees que los usuarios interactúen con tu agente sin requerir la autenticación de UiPath.
El acceso anónimo requiere:
- Una aplicación externa confidencial configurada en UiPath Admin
- Un punto final de token alojado por su organización para gestionar la autenticación
- Una URL de agente integrada configurada con los parámetros de autenticación
Las aplicaciones externas confidenciales con ámbito de aplicación permiten el acceso anónimo sin autenticación de usuario. Configura cuidadosamente los permisos para evitar el acceso no intencionado a los datos. Recomendamos encarecidamente que los agentes anónimos estén detrás de su propio portal o inicie sesión para mitigar el abuso.
Usuarios previstos: usuarios que necesitan acceder a agentes conversacionales sin una cuenta de Automation Cloud.
Requisitos previos
Antes de comenzar, asegúrate de tener:
- Un agente conversacional publicado en Orchestrator.
- Acceso de administrador de la organización al portal de administración de UiPath.
- Infraestructura para alojar una función sin servidor o punto final de API (por ejemplo, AWS Lambda, Azure Functions, Google Cloud Functions).
Paso 1: crear la aplicación externa
- Desde la página de inicio de UiPath, ve a Admin.
- Selecciona Aplicaciones externas.
- Selecciona Añadir aplicación.
- Rellena los detalles de la aplicación:
- Nombre de la aplicación: asigna un nombre descriptivo a la aplicación.
- Tipo de aplicación: selecciona Aplicación confidencial.
- Añade los siguientes ámbitos como ámbitos de la aplicación:
| API | Ámbito |
|---|---|
| Acceso a la API de Orchestrator | OR.Jobs |
| Acceso a la API de Orchestrator | OR.Execution |
| Acceso a la API de Orchestrator | OR.Users |
| Acceso a la API de Orchestrator | OR.Folders |
| Acceso a la API de seguimiento | Traces.Api |
| Agentes conversacionales | ConversationalAgents |
- Haz clic en Añadir (no se necesita una URL de redirección para este cliente).
- Una ventana emergente muestra el ID de la aplicación y el Secreto de la aplicación.
Copia el secreto de la aplicación y guárdalo de forma segura. No podrá volver a verlo después de cerrar esta ventana, y lo necesitará al crear el punto final del token.
Añadir cualquier ámbito como ámbito de usuario en lugar de ámbito de aplicación hace que la aplicación de chat solicite el inicio de sesión del usuario, anulando el propósito del acceso anónimo.
Paso 2: configurar los permisos de la aplicación externa
Después de crear la aplicación externa, configura sus permisos para controlar a qué recursos puede acceder el agente anónimo.
Asignar acceso a nivel de tenant
- Navega a Orchestrator.
- Selecciona Tenant en la parte superior izquierda.
- Selecciona Gestionar acceso en la barra de herramientas.
- Selecciona Aplicaciones externas.
- Selecciona Asignar aplicación externa.
- Busca y selecciona la aplicación externa que has creado.
- En Roles adicionales, selecciona los roles necesarios:
- Mínimo requerido: Automation User.
- Añade roles adicionales solo según sea necesario para tu caso de uso.
- Selecciona Asignar.
Asignar acceso a nivel de carpeta
- Ve a Carpetas en Orchestrator.
- Para cada carpeta a la que el agente necesita acceso:
- Selecciona la carpeta.
- Selecciona Asignar cuenta/grupo/aplicación externa.
- Selecciona tu aplicación externa en el menú desplegable.
- Asigna los roles necesarios.
- Selecciona Asignar.
La aplicación externa está restringida de cualquier recurso para el que no tenga permisos explícitos. Asegúrese de que la aplicación tenga acceso a todos los contextos, herramientas y recursos que necesita el agente conversacional.
Paso 3: crear un punto final de token
Se requiere un punto final de token porque el agente conversacional integrado no puede almacenar de forma segura los secretos del cliente. Tu punto final de token se autentica con UiPath utilizando las credenciales del cliente y devuelve un token de acceso al agente integrado.
Arquitectura recomendada
Recomendamos una arquitectura sin servidor para el punto final del token:
- Bajo coste: por ejemplo, el precio de AWS Lambda para 3 000 000 de respuestas/mes es de aproximadamente 0,40 USD.
- Mantenimiento mínimo: no hay servidores que gestionar.
- Fácil escalado: gestiona los picos de tráfico automáticamente.
Consideraciones de seguridad
El secreto de cliente es muy sensible. Si se expone de forma involuntaria, elimina inmediatamente el secreto y genera uno nuevo en la configuración de la aplicación externa .
Asegúrate de implementar el punto final de tu token:
- Almacena el secreto del cliente de forma segura (variables de entorno, gestor de secretos)
- Valida los orígenes de las solicitudes para evitar el acceso no autorizado
- Utiliza HTTPS para todas las comunicaciones
Ejemplo de implementación
El siguiente código JavaScript puede adaptarse a tu plataforma sin servidor. El cuerpo de la respuesta debe devolver {access_token: <token>}:
// Whitelist: Configure allowed origins for your deployment
const ALLOWED_ORIGINS = [
'https://cloud.uipath.com/*',
// Add your application domains here
];
function matchesOriginPattern(origin, pattern) {
try {
const originUrl = new URL(origin);
const originBase = `${originUrl.protocol}//${originUrl.host}`;
if (pattern.includes('*')) {
const regexPattern = pattern
.replace(/[.+?^${}()|[\]\\]/g, '\\$&')
.replace(/\*/g, '.*');
const regex = new RegExp(`^${regexPattern}$`);
return regex.test(originBase);
} else {
return originBase.startsWith(pattern);
}
} catch (e) {
return false;
}
}
function checkOrigin(req) {
const origin = req.headers.origin || req.headers.referer;
if (!origin) {
const host = req.headers.host;
if (host && (host.includes('localhost') || host.includes('127.0.0.1'))) {
return true;
}
return false;
}
return ALLOWED_ORIGINS.some(pattern => matchesOriginPattern(origin, pattern));
}
async function getClientAccessToken() {
const clientId = process.env.CLIENT_ID;
const clientSecret = process.env.CLIENT_SECRET;
const scope = 'OR.Default ConversationalAgents Traces.Api';
const params = new URLSearchParams({
grant_type: 'client_credentials',
client_id: clientId,
client_secret: clientSecret,
scope: scope
});
const response = await fetch('https://cloud.uipath.com/identity_/connect/token', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: params.toString()
});
if (!response.ok) {
const errorText = await response.text();
throw new Error(`Token request failed: ${response.status} ${errorText}`);
}
const data = await response.json();
return data.access_token;
}
export async function token(context, req) {
if (!checkOrigin(req)) {
context.res = {
status: 403,
headers: { 'Content-Type': 'application/json' },
body: { error: 'Origin not allowed' }
};
return;
}
try {
const accessToken = await getClientAccessToken();
context.res = {
status: 200,
headers: { 'Content-Type': 'application/json' },
body: { access_token: accessToken }
};
} catch (error) {
console.error('Error fetching access token:', error);
context.res = {
status: 500,
headers: { 'Content-Type': 'application/json' },
body: { error: 'Failed to fetch access token' }
};
}
}
// Whitelist: Configure allowed origins for your deployment
const ALLOWED_ORIGINS = [
'https://cloud.uipath.com/*',
// Add your application domains here
];
function matchesOriginPattern(origin, pattern) {
try {
const originUrl = new URL(origin);
const originBase = `${originUrl.protocol}//${originUrl.host}`;
if (pattern.includes('*')) {
const regexPattern = pattern
.replace(/[.+?^${}()|[\]\\]/g, '\\$&')
.replace(/\*/g, '.*');
const regex = new RegExp(`^${regexPattern}$`);
return regex.test(originBase);
} else {
return originBase.startsWith(pattern);
}
} catch (e) {
return false;
}
}
function checkOrigin(req) {
const origin = req.headers.origin || req.headers.referer;
if (!origin) {
const host = req.headers.host;
if (host && (host.includes('localhost') || host.includes('127.0.0.1'))) {
return true;
}
return false;
}
return ALLOWED_ORIGINS.some(pattern => matchesOriginPattern(origin, pattern));
}
async function getClientAccessToken() {
const clientId = process.env.CLIENT_ID;
const clientSecret = process.env.CLIENT_SECRET;
const scope = 'OR.Default ConversationalAgents Traces.Api';
const params = new URLSearchParams({
grant_type: 'client_credentials',
client_id: clientId,
client_secret: clientSecret,
scope: scope
});
const response = await fetch('https://cloud.uipath.com/identity_/connect/token', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: params.toString()
});
if (!response.ok) {
const errorText = await response.text();
throw new Error(`Token request failed: ${response.status} ${errorText}`);
}
const data = await response.json();
return data.access_token;
}
export async function token(context, req) {
if (!checkOrigin(req)) {
context.res = {
status: 403,
headers: { 'Content-Type': 'application/json' },
body: { error: 'Origin not allowed' }
};
return;
}
try {
const accessToken = await getClientAccessToken();
context.res = {
status: 200,
headers: { 'Content-Type': 'application/json' },
body: { access_token: accessToken }
};
} catch (error) {
console.error('Error fetching access token:', error);
context.res = {
status: 500,
headers: { 'Content-Type': 'application/json' },
body: { error: 'Failed to fetch access token' }
};
}
}
Variables de entorno
Configura las siguientes variables de entorno en tu plataforma sin servidor:
| Variable | Descripción |
|---|---|
CLIENT_ID | El ID de la aplicación del paso 1 |
CLIENT_SECRET | El secreto de la aplicación del paso 1 |
El método exacto para establecer variables de entorno depende de tu plataforma de alojamiento.
Configurar orígenes permitidos
La matriz ALLOWED_ORIGINS proporciona seguridad al rechazar las solicitudes de tokens de fuentes no autorizadas. Configura esta lista para incluir:
https://cloud.uipath.com/*(obligatorio para el agente integrado)https://staging.uipath.comsi necesitas permitir solicitudes de un entorno de ensayo- Los dominios de su aplicación si se prueban localmente o desde otros entornos
Paso 4: Insertar el agente con acceso anónimo
Con el punto final del token configurado, inserta el agente conversacional utilizando el siguiente formato de URL:
https://<cloud_env>.uipath.com/<organization>/<tenant>/autopilotforeveryone_/conversational-agents/?agentId=<agent_id>&externalAuth=true&authEndpoint=<token_endpoint_url>&externalUserId=<user_id>
https://<cloud_env>.uipath.com/<organization>/<tenant>/autopilotforeveryone_/conversational-agents/?agentId=<agent_id>&externalAuth=true&authEndpoint=<token_endpoint_url>&externalUserId=<user_id>
Parámetros de URL de acceso anónimo
| Parámetro | Obligatorio | Descripción |
|---|---|---|
agentId | Sí | El ID de versión del agente publicado |
externalAuth | Sí | Establecido en true para habilitar el acceso anónimo |
authEndpoint | Sí | URL de su punto de conexión de token |
externalUserId | Sí | Identificador único para el usuario (ver nota a continuación) |
El externalUserId es un valor que defines y mantienes. Separa y recupera el historial de chat del usuario. Utiliza un ID de usuario significativo si necesitas mantener el historial de chat, o un GUID aleatorio si no se requiere la persistencia del historial de chat.
Ejemplo de URL incrustada
https://<cloud_env>.uipath.com/myorg/mytenant/autopilotforeveryone_/conversational-agents/?agentId=12345&externalAuth=true&authEndpoint=https://my-api.example.com/token&externalUserId=user-abc-123
https://<cloud_env>.uipath.com/myorg/mytenant/autopilotforeveryone_/conversational-agents/?agentId=12345&externalAuth=true&authEndpoint=https://my-api.example.com/token&externalUserId=user-abc-123
Ejemplo de HTML
<iframe
src="https://<cloud_env>.uipath.com/myorg/mytenant/autopilotforeveryone_/conversational-agents/?agentId=12345&externalAuth=true&authEndpoint=https://my-api.example.com/token&externalUserId=user-abc-123"
width="400"
height="600"
frameborder="0"
allow="clipboard-write"
></iframe>
<iframe
src="https://<cloud_env>.uipath.com/myorg/mytenant/autopilotforeveryone_/conversational-agents/?agentId=12345&externalAuth=true&authEndpoint=https://my-api.example.com/token&externalUserId=user-abc-123"
width="400"
height="600"
frameborder="0"
allow="clipboard-write"
></iframe>
Si falta el parámetro externalAuth=true , el agente integrado utiliza el flujo de redirección de inicio de sesión estándar en lugar del acceso anónimo.
Solución de problemas
El punto final del token devuelve 403
- Verifique que su lista
ALLOWED_ORIGINSincluya los dominios correctos. - Comprueba que el encabezado de origen de la solicitud se está enviando correctamente.
- Prueba el punto final directamente para aislar el problema.
La solicitud del token falla con un error de autenticación
- Comprueba que las variables de entorno
CLIENT_IDyCLIENT_SECRETestán configuradas correctamente. - Confirma que la aplicación externa sigue activa en UiPath Admin.
- Comprueba que la URL del punto final del token en el código apunta al entorno de UiPath correcto.
El agente no puede acceder a los recursos
- Revisa los roles asignados de la aplicación externa en Orchestrator.
- Verifique que los permisos a nivel de carpeta estén configurados para todas las carpetas requeridas.
- Comprueba que los ámbitos añadidos a la aplicación externa coinciden con el acceso a la API requerido.
El historial de chat no persiste
- Asegúrate de utilizar un
externalUserIdcoherente para el mismo usuario. - Comprueba que el ID de usuario se transmite correctamente en la URL incrustada.
Próximos pasos
- Integración de iFrame y Apps: documentación completa de integración
- Licencias: comprender el consumo de usuarios anónimos
- Información general
- Requisitos previos
- Paso 1: crear la aplicación externa
- Paso 2: configurar los permisos de la aplicación externa
- Asignar acceso a nivel de tenant
- Asignar acceso a nivel de carpeta
- Paso 3: crear un punto final de token
- Arquitectura recomendada
- Consideraciones de seguridad
- Ejemplo de implementación
- Variables de entorno
- Configurar orígenes permitidos
- Paso 4: Insertar el agente con acceso anónimo
- Parámetros de URL de acceso anónimo
- Ejemplo de URL incrustada
- Ejemplo de HTML
- Solución de problemas
- El punto final del token devuelve 403
- La solicitud del token falla con un error de autenticación
- El agente no puede acceder a los recursos
- El historial de chat no persiste
- Próximos pasos