Configuração Básica

Aqui estão as etapas básicas para configurar um canal Oracle Web.

O que Você Precisa?

  • Um Canal Oracle Web. A criação do canal gera o ID do Canal e a Chave Secreta que você precisa para inicializar o aplicativo de chat.
  • O URL do Oracle Chat Server.
  • O Oracle Web SDK (localizado em SDKs do Cliente Nativo Oracle para Ambientes Nativos OCI) da página de download do ODA e do OMC da Oracle Technology Network. Faça o download deste ZIP e extraia-o no seu sistema local. Este ZIP inclui um guia do usuário que descreve as classes do SDK e um aplicativo de amostra que demonstra muitas de suas funcionalidades.

Configurar o Canal Oracle Web

Você pode configurar o canal para se conectar ao servidor de fala, texto ou anexo do ODA de dois modos: autenticado (para proteger o acesso ao canal) ou não autenticado.
  • A autenticação é aplicada usando JWT (JSON Web Tokens). O servidor de backend do cliente gera o token JWT, que é informado para o Oracle Web SDK. Este token é usado para cada solicitação a um servidor de fala, texto ou anexo do ODA.
    Observação

    Para proteger o acesso ao canal, o token sempre deve ser gerado por um servidor remoto. Ele nunca deve ser gerado no browser do cliente.
    Quando o aplicativo Web precisa se conectar a um servidor ODA, ele primeiro solicita o token do servidor de backend e, em seguida, adiciona-o ao cabeçalho Autorização. O servidor ODA valida o token, avalia as declarações e, em seguida, abre o soquete ou rejeita a conexão.

    Dica:

    Este artigo orienta na execução do SDK com um canal autenticado.
  • Modo não autenticado – Use o modo não autenticado quando o cliente não puder gerar tokens JWT assinados, quando não houver mecanismo de autenticação em vigor ou quando o widget do cliente já estiver protegido e visível para usuários autenticados.
Para configurar o canal Oracle Web:
  1. Escolha Desenvolvimento e Canais no menu.
  2. Escolha Usuários.
  3. Clique em Adicionar Canal e em Oracle Web como o tipo de canal.
  4. Preencha a caixa de diálogo:
    • Informe o nome do canal.
    • Para conexões autenticadas:
      • Ative a opção Autenticação do Cliente Ativada para determinar se o SDK está se conectando a um canal ativado para autenticação do cliente.
      • O canal só se comunicará com os sites dos domínios que você adicionar como uma lista separada por vírgulas. Por exemplo, *.corp.example.com, *.hdr.example.com. Inserir um único asterisco (*) permite o acesso irrestrito ao canal de qualquer domínio. Normalmente, você só inseriria um único asterisco durante o desenvolvimento. Para produção, você adicionaria uma lista de permissões de domínios.
      • No campo Expiração Máx. do de Token (Minutos), defina o tempo máximo para o token JWT.
    • Para conexões não autenticadas:
      • Desative a opção Autenticação do Cliente Ativada.
      • Informe uma lista separada por vírgulas de domínios que podem acessar o canal. Se os domínios desta lista de permissões incluírem asteriscos (*.hdr.example.com) ou se a lista de permissões não for completamente conhecida, você poderá considerar uma conexão autenticada.
    • Defina o tempo de expiração da Sessão.
    • Clique em Criar. O Oracle Digital Assistant gerará o ID do Canal e a Chave Secreta que você precisa para inicializar o SDK. Mantenha-os à mão, pois você precisará dessas informações ao configurar a página HTML para hospedar o widget de chat.
  5. Roteie o canal para a habilidade ou o assistente digital.
  6. Alterne Canal Ativado para Ativado.

Tutorial: Proteger o Chat do Oracle Web SDK

Você pode obter uma visão prática sobre como proteger o widget de chat Web por meio deste tutorial: Proteger o Chat do Oracle Web SDK.

Instalar o SDK

  1. No arquivo ZIP extraído do Oracle Web SDK submetido a download, localize o arquivo web-sdk.js (localizado no diretório native-client-sdk-js).
  2. Salve o arquivo web-sdk.js (localizado no diretório native-client-sdk-js do ZIP extraído) no diretório do projeto. Anote o local do arquivo, pois você precisará dele para definir a propriedade <WebSDK URL> no código da tag <script>.
  3. Crie um arquivo JavaScript com a função a seguir que inicializa o SDK. Chamamos esse arquivo de settings.js na amostra que é fornecida com o SDK.
    // settings.js
    const chatSettings = {
        URI: '<Server URI>',
        channelId: '<Channel ID>',
        userId: '<User ID>' // optional; random ID will be generated if omitted
    };
    
    function initSDK(name) {
        // Wait until the SDK global is available
        if (!document || !window.WebSDK) {
            setTimeout(() => initSDK(name), 2000);
            return;
        }
    
        const ns = name || 'Bots';
        const Bots = new WebSDK(chatSettings);
    
        let firstOpen = true;
        Bots.on(WebSDK.EVENT.WIDGET_OPENED, async () => {
            if (firstOpen) {
                try {
                    await Bots.connect();
                    console.log('Connection Successful');
                } catch (error) {
                    console.error('Connection failed', error);
                }
                firstOpen = false;
            }
        });
    
        window[ns] = Bots;
    }
  4. Defina as seguintes propriedades:
    • URI - O nome do host no URL da instância do Oracle Digital Assistant. Somente o primeiro caminho (/) precisa ser passado aqui. Você pode transmitir esse URL com ou sem o protocolo (https://).
    • channelId - O ID do Canal que é gerado ao criar o canal Oracle Web. Essa propriedade é obrigatória porque conecta o widget à habilidade subjacente.
    • userId - Um ID de usuário. Quando você fornece esse valor, a base de usuários dessa habilidade pode ser rastreada pelas métricas exclusivas do usuário no Insights. Quando você não fornecer um ID de usuário, mas o SDK gerará um com cada nova sessão. Esta propriedade é opcional para conexões não autenticadas.
  5. Em sua página HTML, faça referência aos locais do seu arquivo JS (setting.js no exemplo a seguir) à biblioteca web-sdk.js e ao namespace do Web SDK, que geralmente é Bots. Use este namespace para chamar as APIs públicas. Por exemplo, se você definir o namespace como Bots, chamará as APIs como Bots.<API>(). Para saber mais sobre as diversas funções e eventos, consulte o guia do usuário (disponível como um arquivo readme e um documento HTML) que está incluído no arquivo ZIP do Oracle Web SDK.
    
        <script src="settings.js" defer></script>
        <script src="<WebSDK URL>" onload="initSDK('Bots')" defer></script>
    

Carregar o SDK de uma CDN

Você também pode carregar o Web SDK da Rede de Entrega de Conteúdo (CDN) da Oracle. Usar uma CDN pode oferecer benefícios como tempos de carregamento mais rápidos por causa de servidores distribuídos geograficamente e uma carga de hospedagem reduzida porque você não precisará hospedar o arquivo web-sdk.js sozinho.
Observação

Essa abordagem simplifica a implantação descarregando a hospedagem do arquivo Web SDK para uma CDN, enquanto você mantém o controle sobre suas configurações de chat específicas por meio do arquivo settings.js.
A configuração é semelhante ao método Tag de Script HTML, com a principal diferença sendo a origem do arquivo web-sdk.js.
  1. Crie seu arquivo settings.js: Esse arquivo conterá a configuração do SDK e a função initSDK. A finalidade deste arquivo e seu conteúdo são os mesmos descritos na seção Tag do Script HTML. Você mesmo ainda hospeda este arquivo settings.js.
  2. Vincule settings.js e o web-sdk.js hospedado em CDN no seu arquivo HTML: Na seção <head> da sua página HTML, inclua uma tag de script para o seu arquivo settings.js hospedado localmente e outra para o Web SDK, apontando o atributo src para o URL da CDN.
    <head>
       <!-- 1. Your custom settings -->
        <script src="settings.js" defer></script>
       <!-- 2. Web SDK from CDN -->
       <script src="https://static.oracle.com/cdn/oda/<VERSION>/web-sdk.js" onload="initSDK('<WebSDK namespace>')" defer></script>
       <!--
          Option A: Example with a specific version
          <script src="https://static.oracle.com/cdn/oda/25.4.0/web-sdk.js" onload="initSDK('Bots')" defer></script>
                 Option B: Latest Stable Version (Convenient for always getting updates)
          <script src="https://static.oracle.com/cdn/oda/latest/web-sdk.js" onload="initSDK('Bots')" defer></script>
          -->
       <!--
          Important Notes for the CDN script tag (choose one option from above):
          - Replace 'https://static.oracle.com/cdn/oda/<VERSION>/web-sdk.js' with the actual CDN URL provided for the Oracle Web SDK.
          - For Option A: Replace '<VERSION>' in the URL with the specific SDK version number you need (e.g., '25.4.0').
          - For Option B: Using 'latest' instead of a specific version number will always load the most recent stable release.
          - See the 'Oracle CDN URLs' section below for a list of available versions and more details.
          - Replace '<WebSDK namespace>' (e.g., 'Bots' in the examples) with your chosen name for the SDK instance.
          -->
    </head>
URLs da CDN
O Oracle Web SDK pode ser carregado dos URLs da CDN a seguir.
  • Usando a tag latest: https://static.oracle.com/cdn/oda/latest/web-sdk.js
    Este URL sempre aponta para a versão estável mais recente do Web SDK. É conveniente para desenvolvimento ou se você quiser que seu aplicativo receba automaticamente os recursos e correções mais recentes à medida que são lançados.
    Observação

    Tenha cuidado em ambientes de produção. Embora convenientes, as atualizações automáticas podem introduzir alterações. Portanto, para ambientes de produção, considere usar uma versão específica para garantir a estabilidade e o controle sobre o processo de atualização.
  • Usando uma versão específica: https://static.oracle.com/cdn/oda/<VERSION>/web-sdk.js
    Observação

    Use um URL específico para ambientes de produção.

    Essa abordagem permite que você use uma versão fixa e específica do Web SDK, que é recomendada para ambientes de produção. Ele fornece controle sobre quando as atualizações são aplicadas e permite testes completos.

    Para definir uma versão específica, substitua <VERSION> pelo número de versão desejado (por exemplo, 25.4.0).

    Dica:

    Para obter a lista mais atual de versões de CDN disponíveis e informações detalhadas da release, sempre consulte as notas da release mais recentes do SDK ou a documentação oficial do Oracle Digital Assistant.

Importar a Biblioteca Usando a API de Definição de Módulo Assíncrono

Você pode importar a biblioteca usando implementações da API de Definição de Módulo Assíncrono (AMD ), como o RequireJS com o Oracle JET e o SystemJS.
requirejs.config({
    paths: {
        WebSDK: '<path-to-web-sdk>' // without the .js extension
    }
});

define(['WebSDK'], (WebSDK) => {
    const settings = {
        URI: '<Server URI>',
        channelId: '<Channel ID>',
        userId: '<User ID>'
    };
    const Bots = new WebSDK(settings);
    Bots.connect();
});

Importar a Biblioteca de Maneira Dinâmica com JavaScript

Use a seguinte função de utilitário baseada em MDN (Mozilla Development Network) para importar a biblioteca de maneira dinâmica com JavaScript:
function fetchSDK(src, onloadFunction, name) {
    const script = document.createElement('script');
    script.type = 'application/javascript';
    script.defer = true;
    script.onload = () => onloadFunction(name);
    document.head.appendChild(script);
    script.src = src;
}

fetchSDK('<path-to-web-sdk.js>', initSDK, 'Bots');

Configurar Autenticação do Cliente

Além de usar listas de domínios permitidos, a autenticação do cliente é imposta por tokens JWT assinados.

A geração e a assinatura do token devem ser feitas pelo cliente no servidor de backend (preferencialmente após a autenticação do usuário/cliente) que é capaz de manter seguros o keyId e o keySecret.

Quando o SDK precisar estabelecer uma conexão com o servidor ODA, ele primeiro solicitará um token JWT do cliente e depois o enviará com a solicitação de conexão. O servidor ODA valida a assinatura do token e obtém o conjunto de reivindicações do payload JWT para confirmar o token para estabelecer a conexão.

Para ativar esse modo, esses dois campos são obrigatórios durante a inicialização do SDK: clientAuthEnabled: true deve ser informado no parâmetro de definições do SDK e uma função de gerador de token deve ser transmitida como segundo parâmetro. A função deve retornar uma Promessa, que é resolvida para retornar uma string de token JWT assinado.
async function generateToken() {
    // Return a signed JWT string from your backend
    const response = await fetch('https://yourbackend.com/endpointToGenerateJWTToken');
    if (!response.ok) {
        throw new Error('Token fetch failed');
    }
    return response.text(); // or response.json() depending on your endpoint
}

const Bots = new WebSDK(
    {
        URI: 'oda-instance.com',
        clientAuthEnabled: true
    },
    generateToken
);

O Token JWT

O aplicativo cliente é responsável pela geração do token JWT. Alguns dos campos de payload do token são obrigatórios e validados pelo servidor ODA. Os clientes devem usar o algoritmo de assinatura HS256 para assinar os tokens. O corpo do token deve ter as seguintes reivindicações:
  • iat - emitido no momento
  • exp - tempo de expiração
  • channelId - ID do canal
  • userId - ID do usuário
Os tokens em si devem ser assinados pela chave secreta do canal ativado por autenticação do cliente com o qual a conexão é estabelecida. Veja aqui um exemplo de token JWT assinado:
Codificado:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1NzY3NDcyMDUsImV4cCI6MTU3Njc1MTExNywiY2hhbm5lbElkIjoiNDkyMDU5NWMtZWM3OS00NjE3LWFmOWYtNTk1MGQ2MDNmOGJiIiwidXNlcklkIjoiSm9obiIsImp0aSI6ImQzMjFjZDA2LTNhYTYtNGZlZS05NTBlLTYzZGNiNGVjODJhZCJ9.lwomlrI6XYR4nPQk0cIvyU_YMf4gYvfVpUiBjYihbUQ
decodificado:
  • Cabeçalho:
    {
        "typ": "JWT",
        "alg": "HS256"
    }
  • Payload:
    {
        "iat": 1576747205,
        "exp": 1576748406,
        "channelId": "4920595c-ec79-4617-af9f-5950d603f8bb",
        "userId": "John"
    }
Se estiver faltando qualquer reivindicação no token ou tiver um formato incorreto para seu valor, uma mensagem de erro será lançada pelo SDK descrevendo a causa. Não há tentativa de conexão. A mensagem de erro pode ser usada para corrigir o problema com o token JWT. Nenhuma reivindicação adicional especificada no payload afeta o mecanismo de autenticação do cliente.