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
-
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çãoQuando 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.
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.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.
- Escolha Desenvolvimento e Canais no menu.
- Escolha Usuários.
- Clique em Adicionar Canal e em Oracle Web como o tipo de canal.
- 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.
- Roteie o canal para a habilidade ou o assistente digital.
- 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
- No arquivo ZIP extraído do Oracle Web SDK submetido a download, localize o arquivo
web-sdk.js
(localizado no diretórionative-client-sdk-js
). - Salve o arquivo
web-sdk.js
(localizado no diretórionative-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>
. - 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>' }; function initSDK(name) { // If WebSDK is not available, reattempt later if (!document || !WebSDK) { setTimeout(function() { initSDK(name); }, 2000); return; } // Default name is Bots if (!name) { name = 'Bots'; } setTimeout(function() { const Bots = new WebSDK(chatSettings); // Initiate library with configuration let isFirstConnection = true; Bots.on(WebSDK.EVENT.WIDGET_OPENED, async () => { if (isFirstConnection) { try { await Bots.connect(); // Connect to server console.log('Connection Successful'); } catch (error) { console.log('Connection failed'); console.log(error); } isFirstConnection = false; } }); window[name] = Bots; }, 0); }
- 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.
- Em sua página HTML, faça referência aos locais do seu arquivo JS (
setting.js
no exemplo a seguir) à bibliotecaweb-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 comoBots
, chamará as APIs comoBots.<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="scripts/settings.js"></script> <script src="scripts/web-sdk.js" onload="initSdk('Bots')"></script>
Carregar o SDK de uma CDN
web-sdk.js
sozinho.
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
.
web-sdk.js
.
- Crie seu arquivo
settings.js
: Esse arquivo conterá a configuração do SDK e a funçãoinitSDK
. 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 arquivosettings.js
. - 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 arquivosettings.js
hospedado localmente e outra para o Web SDK, apontando o atributosrc
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
- 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). As versões estáveis atualmente disponíveis incluem:- Versão 25.04: https://static.oracle.com/cdn/oda/25.4.0/web-sdk.js
- Versão 25.02: https://static.oracle.com/cdn/oda/25.2.0/web-sdk.js
- Versão 24.12: https://static.oracle.com/cdn/oda/24.12.0/web-sdk.js
- Versão 24.10: https://static.oracle.com/cdn/oda/24.10.0/web-sdk.js
- Versão 24.08: https://static.oracle.com/cdn/oda/24.8.0/web-sdk.js
- Versão 24.06: https://static.oracle.com/cdn/oda/24.6.0/web-sdk.js
- Versão 24.04: https://static.oracle.com/cdn/oda/24.4.0/web-sdk.js
- Versão 24.02: https://static.oracle.com/cdn/oda/24.2.0/web-sdk.js
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
requirejs.config({
paths: {
WebSDK: '<path of the web-sdk>' // replace this with actual library path
} });
define(['WebSDK'], function(WebSDK)
{ const settings = {
URI: '<Server URI>',
channelId: '<Channel ID>',
userId: '<User ID>'
};
Bots = new WebSDK(settings);
Bots.connect();
});
Importar a Biblioteca de Maneira Dinâmica com JavaScript
function fetchSDK(src, onloadFunction, name) {
const script = document.createElement('script');
script.type = 'application/javascript';
script.async = true; // load the script asynchronously
script.defer = true; // fallback support for browsers that does not support async
script.onload = function() {
onloadFunction(name);
};
document.head.appendChild(script);
script.src = src;
}
fetchSDK('', initSDK, '');
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.
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() {
const token = await fetch('https://yourbackend.com/endpointToGenerateJWTToken');
return token;
}
Bots.init({
URI: 'oda-instance.com',
clientAuthEnabled: true
}, generateToken);
O Token JWT
iat
- emitido no momentoexp
- tempo de expiraçãochannelId
- ID do canaluserId
- ID do usuário
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1NzY3NDcyMDUsImV4cCI6MTU3Njc1MTExNywiY2hhbm5lbElkIjoiNDkyMDU5NWMtZWM3OS00NjE3LWFmOWYtNTk1MGQ2MDNmOGJiIiwidXNlcklkIjoiSm9obiIsImp0aSI6ImQzMjFjZDA2LTNhYTYtNGZlZS05NTBlLTYzZGNiNGVjODJhZCJ9.lwomlrI6XYR4nPQk0cIvyU_YMf4gYvfVpUiBjYihbUQ
- Cabeçalho:
{ "typ": "JWT", "alg": "HS256" }
- Payload:
{ "iat": 1576747205, "exp": 1576748406, "channelId": "4920595c-ec79-4617-af9f-5950d603f8bb", "userId": "John" }