agents
latest
false
Importante :
A localização de um conteúdo recém-publicado pode levar de 1 a 2 semanas para ficar disponível.
UiPath logo, featuring letters U and I in white

Guia do Usuário de Agentes

Última atualização 10 de mar de 2026

Configuração de acesso anônimo

Visão geral

O acesso anônimo permite que você incorpore agentes de conversa para usuários que não têm contas da UiPath. Isso é útil para aplicativos voltados para o cliente, portais públicos ou qualquer cenário em que você deseja que os usuários interajam com seu agente sem exigir autenticação da UiPath.

O acesso anônimo requer:

  1. Um aplicativo externo confidencial configurado no Administrador da UiPath
  2. Um ponto de extremidade do token hospedado por sua organização para lidar com a autenticação
  3. Uma URL de agente incorporado configurado com os parâmetros de autenticação
AVISO:

Os aplicativos externos com escopo de aplicativo confidencial permitem o acesso anônimo sem autenticação do usuário. Configure cuidadosamente as permissões para evitar o acesso não intencional aos dados. Recomendamos enfaticamente bloquear agentes anônimos atrás do seu próprio portal ou login para mitigar o abuso.

Usuários pretendidos: usuários que precisam acessar agentes de conversa sem uma conta do Automation Cloud.

Pré-requisitos

Antes de iniciar, certifique-se de ter:

  • Um agente de conversa publicado no Orchestrator.
  • Acesso do administrador da organização ao portal de administração da UiPath.
  • Infraestrutura para hospedar uma função sem servidor ou ponto de extremidade de API (por exemplo, AWS Lambda, Azure Functions, Google Cloud Functions).

Etapa 1: criar o aplicativo externo

  1. Na página inicial da UiPath, navegue até Admin.
  2. Selecione Apps externos.
  3. Selecione Adicionar aplicativo.
  4. Preencha os detalhes da aplicação:
    • Nome do aplicativo: dê ao aplicativo um nome descritivo.
    • Tipo de aplicativo: selecione Aplicativo confidencial.
  5. Adicione os seguintes escopos como escopos dos aplicativos:
APIEscopo
Acesso à API do OrchestratorOR.Jobs
Acesso à API do OrchestratorOR.Execution
Acesso à API do OrchestratorOR.Users
Acesso à API do OrchestratorOR.Folders
Acesso à API do TracesTraces.Api
Agentes de conversaConversationalAgents
  1. Clique em Adicionar (não é necessário um URL de redirecionamento para esse cliente).
  2. Uma mensagem exibe o ID do aplicativo e o Segredo do aplicativo.
Importante:

Copie o segredo do aplicativo e armazene-o com segurança. Você não poderá visualizá-lo novamente após fechar esta janela e precisará dele ao criar o ponto de extremidade do token.

Observação:

Adicionar quaisquer escopos como escopos de usuário em vez de escopos de aplicativos faz com que o aplicativo de chat solicite login do usuário, invalidando o propósito do acesso anônimo.

Etapa 2: configurar permissões de aplicativos externos

Após criar o aplicativo externo, configure suas permissões para controlar quais recursos o agente anônimo pode acessar.

Atribuir acesso no nível do tenant

  1. Navegue para o Orchestrator.
  2. Selecione Tenant na parte superior esquerda.
  3. Selecione Gerenciar acesso na barra de ferramentas.
  4. Selecione Aplicativos externos.
  5. Selecione Atribuir aplicativo externo.
  6. Pesquise e selecione o aplicativo externo que você criou.
  7. Em Funções adicionais, selecione as funções necessárias:
    • Mínimo necessário: Automation User.
    • Adicione funções adicionais apenas conforme necessário para seu caso de uso.
  8. Selecione Atribuir.

Atribuir acesso no nível da pasta

  1. Navegue até Pastas no Orchestrator.
  2. Para cada pasta à qual o agente precisa acessar:
    1. Selecione a pasta.
    2. Selecione Atribuir conta/grupo/aplicativo externo.
    3. Selecione seu aplicativo externo no menu suspenso.
    4. Atribua as funções necessárias.
    5. Selecione Atribuir.
Observação:

O app externo é restrito a quaisquer recursos para os quais não tem permissões explícitas. Certifique-se de que o aplicativo tenha acesso a todos os contextos, ferramentas e recursos de que o agente de conversa precisa.

Etapa 3: criar um endpoint do token

Um ponto de extremidade de token é necessário porque o agente de conversa incorporado não pode armazenar segredos do cliente com segurança. Seu endpoint do token se autentica com a UiPath usando as credenciais do cliente e retorna um token de acesso ao agente incorporado.

Recomendamos uma arquitetura sem servidor para o ponto de extremidade do token:

  • Baixo custo: por exemplo, os preços do AWS Lambda para 3.000.000 respostas/mês são de aproximadamente US$ 0,40.
  • Manutenção mínima: sem servidores para gerenciar.
  • Escalonamento fácil: lida com picos de tráfego automaticamente.

Considerações de segurança

AVISO:

O segredo do cliente é altamente confidencial. Se for exposto sem intenção, exclua imediatamente o segredo e gere um novo nas configurações do Aplicativo Externo .

Certifique-se de sua implementação de endpoint do token:

  • Armazena o segredo do cliente com segurança (variáveis de ambiente, gerenciador de segredos)
  • Valida as origens da solicitação para evitar acesso não autorizado
  • Usa HTTPS para todas as comunicações

Implementação de exemplo

O seguinte código JavaScript pode ser adaptado para sua plataforma Serverless. O corpo da resposta deve retornar {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' }
    };
  }
}

Variáveis de Ambiente

Configure as seguintes variáveis de ambiente em sua plataforma Serverless:

VariávelDescription
CLIENT_IDO ID do aplicativo da etapa 1
CLIENT_SECRETO segredo do aplicativo da etapa 1

O método exato para definir variáveis de ambiente depende da sua plataforma de hospedagem.

Configuração de origens permitidas

A matriz ALLOWED_ORIGINS fornece segurança ao rejeitar solicitações de token de origens não autorizadas. Configure esta lista para incluir:

  • https://cloud.uipath.com/* (necessário para o agente incorporado)
  • https://staging.uipath.com se precisar permitir solicitações de um ambiente de teste
  • Os domínios do seu aplicativo se você estiver testando localmente ou de outros ambientes

Etapa 4: incorporar o agente com acesso anônimo

Com o endpoint do token configurado, incorpore o agente de conversa usando o seguinte 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 acesso anônimo

ParâmetroRequiredDescription
agentIdSimO ID de versão do agente publicado
externalAuthSimDefina como true para habilitar o acesso anônimo
authEndpointSimURL do seu endpoint do token
externalUserIdSimIdentificador exclusivo para o usuário (ver observação abaixo)
Observação:

O externalUserId é um valor que você define e mantém. Ele separa e recupera o histórico de chat do usuário. Use um ID de usuário significativo se você precisar manter o histórico de chat ou um GUID aleatório se a persistência do histórico de chat não for necessária.

Exemplo de URL incorporada

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

Exemplo 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>
Observação:

Se o parâmetro externalAuth=true estiver ausente, o agente incorporado usará o fluxo de redirecionamento de login padrão em vez de acesso anônimo.

Solução de problemas

O endpoint do token retorna 403

  • Verifique se sua lista ALLOWED_ORIGINS inclui os domínios corretos.
  • Verifique se o cabeçalho de origem da solicitação está sendo enviado corretamente.
  • Teste o ponto de extremidade diretamente para isolar o problema.

Falha na solicitação de token com erro de autenticação

  • Verifique se as variáveis de ambiente CLIENT_ID e CLIENT_SECRET estão definidas corretamente.
  • Confirme se o aplicativo externo ainda está ativo no Administrador da UiPath.
  • Verifique se o URL do endpoint do token no código aponta para o ambiente correto da UiPath.

O agente não pode acessar recursos

  • Revise as funções atribuídas do aplicativo externo no Orchestrator.
  • Verifique se as permissões no nível da pasta estão configuradas para todas as pastas necessárias.
  • Verifique se os escopos adicionados ao app externo correspondem ao acesso de API necessário.

O histórico de chat não persiste

  • Certifique-se de usar um externalUserId consistente para o mesmo usuário.
  • Verifique se o ID do usuário está sendo passado corretamente na URL incorporada.

Próximas Etapas

Esta página foi útil?

Conectar

Precisa de ajuda? Suporte

Quer aprender? Academia UiPath

Tem perguntas? Fórum do UiPath

Fique por dentro das novidades