Configuration de base

Voici les étapes de base à suivre pour configurer un canal Oracle Web.

Éléments nécessaires

  • Un canal Oracle Web. La création du canal génère l'ID canal et la clé secrète dont vous avez besoin pour initialiser l'application de clavardage.
  • L'URL du serveur de clavardage Oracle.
  • La trousse SDK Oracle Web (située sous les trousses SDK client natives Oracle pour les environnements natifs OCI) téléchargée à partir de la page de téléchargement ODA et OMC d'Oracle Technology Network. Téléchargez ce fichier ZIP et extrayez-le sur votre système local. Ce fichier ZIP comprend un guide d'utilisation qui décrit les classes de la trousse SDK et un exemple d'application qui présente la plupart de ses fonctions.

Configurer le canal Oracle Web

Vous pouvez configurer le canal pour la connexion au serveur vocal, de texte ou de fichiers joints ODA dans deux modes : authentifié (pour protéger l'accès au canal) et non authentifié.
  • L'authentification est effectuée à l'aide de jetons Web JSON (JWT). Le serveur dorsal du client génère le jeton JWT, qui est ensuite transmis à la trousse SDK Oracle Web. Ce jeton est utilisé pour chaque demande à un serveur vocal, de texte ou de fichiers joints ODA.
    Note

    Pour protéger l'accès au canal, le jeton doit toujours être généré par un serveur distant. Il ne doit jamais être généré au sein du navigateur client.
    Lorsque l'application Web doit se connecter à un serveur ODA, elle demande d'abord le jeton du serveur dorsal, puis l'ajoute à l'en-tête Authorization (Autorisation). Le serveur ODA valide le jeton, évalue les revendications, puis ouvre le connecteur logiciel ou rejette la connexion.

    Conseil :

    Cet article vous guide lors de l'exécution de la trousse SDK avec un canal authentifié.
  • Mode non authentifié : Utilisez ce mode lorsque le client ne peut pas générer des jetons JWT signés, lorsqu'aucun mécanisme d'authentification n'est en place ou lorsque le widget client est déjà sécurisé et visible pour les utilisateurs authentifiés.
Pour configurer le canal Oracle Web :
  1. Sélectionnez Development (Développement), puis Channels (Canaux) dans le menu.
  2. Sélectionner des utilisateurs.
  3. Cliquez sur Add Channel (Ajouter un canal), puis sélectionnez Oracle Web comme type de canal.
  4. Complétez la boîte de dialogue :
    • Entrez le nom du canal.
    • Pour les connexions authentiques :
      • Activez l'option Client Authentication Enabled (Authentification de client activée) pour déterminer si la trousse SDK se connecte au canal prenant en charge l'authentification de client.
      • Le canal communiquera uniquement avec les sites des domaines que vous ajoutez dans une liste séparée par des virgules. Par exemple, *.corp.example.com, *.hdr.example.com. L'entrée d'un seul astérisque (*) permet un accès illimité au canal depuis n'importe quel domaine. En règle générale, vous n'entrez qu'un seul astérisque lors du développement. En production, vous ajoutez une liste d'autorisation de domaines.
      • Dans le champ Max. Token Expiration (Minutes) (Expiration du jeton max. (minutes)), définissez la durée maximale du jeton JWT.
    • Pour les connexions non authentifiées :
      • Désactivez l'option Client Authentication Enable (Authentification de client activée).
      • Entrez une liste séparée par des virgules de domaines pouvant accéder au canal. Si les domaines de cette liste d'autorisation incluent des astérisques (*.hdr.example.com) ou si elle n'est pas complètement connue, envisagez plutôt une connexion authentifiée.
    • Définissez le délai d'expiration de la session.
    • Cliquez sur Create (Créer). Oracle Digital Assistant génère l'ID canal et la clé secrète dont vous avez besoin pour initialiser la trousse SDK. Gardez-les à portée de main, car vous en aurez besoin lors de la configuration de la page HTML pour héberger le widget de clavardage.
  5. Acheminez le canal vers votre compétence ou votre assistant numérique.
  6. Sélectionnez Channel Enabled (Canal activé).

Tutoriel : Sécuriser le clavardage de la trousse SDK Oracle Web

Vous pouvez vous exercer à la sécurisation du widget de clavardage Web en suivant ce tutoriel : Sécuriser le clavardage de la trousse SDK Oracle Web.

Installation de la SDK

  1. Dans le fichier ZIP extrait de la trousse SDK Oracle Web téléchargée, localisez le fichier web-sdk.js (situé dans le répertoire native-client-sdk-js).
  2. Enregistrez web-sdk.js (situé dans le répertoire native-client-sdk-js du fichier ZIP extrait) dans le répertoire du projet. Notez l'emplacement du fichier, car vous en aurez besoin pour définir la propriété <WebSDK URL> dans le code de la balise <script>.
  3. Créez un fichier JavaScript avec la fonction suivante qui initialise la trousse SDK. Nous appelons ce fichier settings.js dans l'exemple fourni avec la trousse 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);
     }
  4. Définissez les propriétés suivantes :
    • URI - Nom d'hôte dans l'URL de l'instance Oracle Digital Assistant. Seul le premier chemin (/) doit être transmis ici. Vous pouvez transmettre cette URL avec ou sans le protocole (https://).
    • channelId : ID canal généré lors de la création du canal Oracle Web. Cette propriété est obligatoire car elle connecte le widget à la compétence sous-jacente.
    • userId : Un ID utilisateur. Lorsque vous fournissez cette valeur, la base d'utilisateurs de cette compétence peut être suivie par les mesures d'utilisateur uniques dans les données clés. Lorsque vous ne fournissez pas d'ID utilisateur, mais que la trousse SDK en génère un à chaque nouvelle session. Cette propriété est facultative pour les connexions non authentifiées.
  5. Dans votre page HTML, référencez les emplacements du fichier JS (setting.js dans l'exemple suivant) de la bibliothèque web-sdk.js et de l'espace de noms de la trousse SDK Web, qui est généralement Bots. Utilisez cet espace de noms pour appeler les API publiques. Par exemple, si vous définissez l'espace de noms sur Bots, vous appelez les API comme suit : Bots.<API>(). Pour en savoir plus sur les divers fonctions et événements, consultez le guide de l'utilisateur (disponible sous forme de fichier Lisez-moi et de document HTML) fourni dans le fichier ZIP de la trousse SDK Oracle Web.
       <script src="scripts/settings.js"></script>
       <script src="scripts/web-sdk.js" onload="initSdk('Bots')"></script>    

Charger la trousse SDK à partir d'un réseau de diffusion de contenu

Vous pouvez également charger la trousse SDK Web à partir du réseau de diffusion de contenu (CDN) d'Oracle. L'utilisation d'un réseau de diffusion de contenu peut offrir des avantages tels que des temps de chargement plus rapides en raison de serveurs répartis géographiquement et d'un fardeau d'hébergement réduit, car vous n'aurez pas besoin d'héberger le fichier web-sdk.js vous-même.
Note

Cette approche simplifie le déploiement en déchargeant l'hébergement du fichier de la trousse SDK Web sur un réseau de diffusion de contenu tout en gardant le contrôle sur vos configurations de clavardage spécifiques au moyen du fichier settings.js.
La configuration est similaire à la méthode HTML Script Tag, la principale différence étant la source du fichier web-sdk.js.
  1. Créez votre fichier settings.js : Ce fichier contiendra votre configuration de trousse SDK et la fonction initSDK. Le but de ce fichier et son contenu sont les mêmes que ceux décrits dans la section HTML Script Tag. Vous hébergez toujours ce fichier settings.js vous-même.
  2. Liez settings.js et le fichier web-sdk.js hébergé par le réseau de diffusion de contenu dans votre fichier HTML : Dans la section <head> de votre page HTML, incluez une balise de script pour votre fichier settings.js hébergé localement et une autre pour la trousse SDK Web, pointant l'attribut src vers l'URL du réseau de diffusion de contenu.
    <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>
URL du réseau de diffusion de contenu
La trousse SDK Oracle Web peut être chargée à partir des URL de réseau de diffusion de contenu officielles suivantes.

Importer la bibliothèque à l'aide de l'API de définition de module asynchrone

Vous pouvez importer la bibliothèque à l'aide des mises en oeuvre de l'API de définition de module asynchrone (AMD), comme RequireJS avec Oracle JET et SystemJS.
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();
 });

Importer la bibliothèque dynamiquement avec JavaScript

Utilisez la fonction d'utilitaire Mozilla Development Network (MDN) pour importer la bibliothèque dynamiquement avec 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, '');

Configurer l'authentification de client

En plus d'utiliser des listes de domaines autorisés, l'authentification de client est effectuée à l'aide de jetons JWT signés.

La génération et la signature du jeton doivent être effectuées par le client dans le serveur dorsal (de préférence après l'authentification utilisateur/client) qui est capable de maintenir en sécurité keyId et keySecret.

Lorsque la trousse SDK a besoin d'établir une connexion avec le serveur ODA, elle demande d'abord un jeton JWT du client, puis l'envoie avec la demande de connexion. Le serveur ODA valide la signature du jeton et obtient le jeu de revendications des données utiles JWT pour vérifier le jeton afin d'établir la connexion.

Pour activer ce mode, ces deux champs sont requis lors de l'initialisation de la trousse SDK : clientAuthEnabled: true doit être transmis dans les paramètres de la trousse SDK, et une fonction générateur de jetons doit être transmise comme deuxième paramètre. La fonction doit retourner une promesse, qui est résolue en retour d'une chaîne de jetons JWT signés.
async function generateToken() {
    const token = await fetch('https://yourbackend.com/endpointToGenerateJWTToken');
    return token;

}

Bots.init({
    URI: 'oda-instance.com',
    clientAuthEnabled: true
}, generateToken);

Jeton JWT

L'application client est responsable de la génération de jetons JWT. Certains champs de données utiles du jeton sont obligatoires et validés par le serveur ODA. Les clients doivent utiliser l'algorithme de signature HS256 pour signer les jetons. Le corps du jeton doit comporter les revendications suivantes :
  • iat - date d'émission
  • exp - date d'expiration
  • channelId - ID canal
  • userId - ID utilisateur
Les jetons eux-mêmes doivent être signés par la clé secrète du canal à authentification de client auquel la connexion est effectuée. Voici un exemple de jeton JWT signé :
Encodé :
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1NzY3NDcyMDUsImV4cCI6MTU3Njc1MTExNywiY2hhbm5lbElkIjoiNDkyMDU5NWMtZWM3OS00NjE3LWFmOWYtNTk1MGQ2MDNmOGJiIiwidXNlcklkIjoiSm9obiIsImp0aSI6ImQzMjFjZDA2LTNhYTYtNGZlZS05NTBlLTYzZGNiNGVjODJhZCJ9.lwomlrI6XYR4nPQk0cIvyU_YMf4gYvfVpUiBjYihbUQ
Décodé :
  • En-tête :
    {
        "typ": "JWT",
        "alg": "HS256"
    }
  • Données utiles :
    {
        "iat": 1576747205,
        "exp": 1576748406,
        "channelId": "4920595c-ec79-4617-af9f-5950d603f8bb",
        "userId": "John"
    }
Si une revendication dans le jeton est absente ou utilise un format incorrect pour sa valeur, un message d'erreur est généré par la trousse SDK pour décrire la cause. La connexion n'est pas tentée. Le message d'erreur peut servir à résoudre le problème avec le jeton JWT. Toute revendication supplémentaire transmise dans les données utiles n'affecte pas le mécanisme d'authentification du client.