Configuration de base

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

Environnement requis

  • Un canal Oracle Web. La création du canal génère la clé secrète et l'ID de canal dont vous avez besoin pour initialiser l'application de discussion.
  • L'URL du serveur de discussion Oracle.
  • Le kit SDK Oracle Web (situé sous le kit SDK client natif Oracle pour les environnements natifs OCI) à partir de la page de téléchargement ODA et OMC d'Oracle Technology Network. Téléchargez ce fichier ZIP et extrayez-le vers votre système local. Ce fichier ZIP inclut un guide utilisateur qui décrit les classes du kit SDK et un exemple d'application illustrant un grand nombre de ses fonctionnalités.

Configuration du canal Oracle Web

Vous pouvez configurer le canal afin qu'il se connecte au serveur de discussion, de texte ou de pièce jointe ODA en deux modes : authentifié (pour protéger l'accès au canal) ou non authentifié.
  • L'authentification est appliquée à l'aide de jetons Web JSON (JWT). Le serveur back-end du client génère le jeton JWT, qui est ensuite transmis au kit SDK Oracle Web. Ce jeton est utilisé pour chaque demande adressée à un serveur vocal, de texte ou de pièce jointe ODA.
    Remarque

    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é dans le navigateur client.
    Lorsque l'application Web doit se connecter à un serveur ODA, elle demande d'abord le jeton du serveur back-end, puis l'ajoute à l'en-tête d'autorisation. Le serveur ODA valide le jeton, évalue les déclarations, puis ouvre le socket ou rejette la connexion.

    Conseil :

    Cet article vous guide tout au long de l'exécution du kit SDK avec un canal authentifié.
  • Mode non authentifié : utilisez le mode non authentifié lorsque le client ne peut pas générer de jetons JWT signés, lorsqu'aucune méthode d'authentification n'est configurée, ou lorsque le widget client est déjà sécurisé et visible par les utilisateurs authentifiés.
Pour configurer le canal Oracle Web, procédez comme suit :
  1. Choisissez Développement, puis Canaux dans le menu.
  2. Choisissez Utilisateurs.
  3. Cliquez sur Ajouter un canal, puis sur Oracle Web en tant que type de canal.
  4. Renseignez les champs de la boîte de dialogue suivante :
    • Saisissez le nom du canal.
    • Pour les connexions authentifiées, procédez comme suit :
      • Activez l'option Authentification client activée afin de déterminer si le kit SDK se connecte à un canal activé pour l'authentification client.
      • Le canal communique uniquement avec les sites des domaines que vous ajoutez dans une liste en les séparant par une virgule. Par exemple, *.corp.example.com, *.hdr.example.com. La saisie d'un seul astérisque (*) permet un accès illimité au canal à partir de n'importe quel domaine. Généralement, l'astérisque est employé lors du développement uniquement. Pour la production, vous devez ajouter une liste d'autorisation des domaines.
      • Dans le champ Expiration de jeton max. (minutes), définissez le délai maximal pour le jeton JWT.
    • Pour les connexions non authentifiées, procédez comme suit :
      • Désactivez l'option Authentification client activée.
      • Entrez la liste des domaines pouvant accéder au canal en les séparant par une virgule. Si les domaines de cette liste d'autorisation incluent des astérisques (*.hdr.example.com) ou que la liste d'autorisation n'est pas complètement connue, vous pouvez envisager une connexion authentifiée.
    • Définissez le délai d'expiration de la session.
    • Cliquez sur Créer. Oracle Digital Assistant génère l'ID de canal et la clé secrète dont vous avez besoin pour initialiser le kit SDK. Conservez ces informations car vous en aurez besoin lors de la configuration de la page HTML pour héberger le widget de discussion.
  5. Acheminez le canal vers votre brique ou votre assistant numérique.
  6. Activez l'option Canal activé.

Tutoriel : sécurisation de votre discussion dans le kit SDK Oracle Web

Vous pouvez obtenir un aperçu concret de la sécurisation du widget de discussion Web via ce tutoriel : Sécurisation de votre discussion dans le kit SDK Oracle Web.

Installation du kit SDK

  1. Dans le fichier ZIP extrait du kit SDK Oracle Web téléchargé en local, localisez le fichier web-sdk.js (situé dans le répertoire native-client-sdk-js).
  2. Enregistrez le fichier web-sdk.js (situé dans le répertoire native-client-sdk-js du fichier ZIP extrait) dans votre répertoire de 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 le kit SDK. Nous appelons ce fichier settings.js dans l'exemple fourni avec le kit 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 d'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 de canal généré lors de la création du canal Oracle Web. Cette propriété est requise car elle permet de connecter le widget à la brique sous-jacente.
    • userId : ID d'utilisateur. Lorsque vous indiquez cette valeur, la base d'utilisateurs de cette brique peut être suivie par les mesures utilisateur uniques dans Insights. Lorsque vous ne fournissez pas d'ID utilisateur, mais que le kit 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 du kit 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 sous la forme Bots.<API>(). Pour en savoir plus sur les différents événements et fonctions, reportez-vous au guide de l'utilisateur (disponible sous forme de fichier README et de document HTML) inclus dans le fichier ZIP du kit SDK Oracle Web.
       <script src="scripts/settings.js"></script>
       <script src="scripts/web-sdk.js" onload="initSdk('Bots')"></script>    

Charger le kit SDK à partir d'un réseau CDN

Vous pouvez également charger le kit SDK Web à partir du réseau CDN (Content Delivery Network) d'Oracle. L'utilisation d'un réseau CDN peut offrir des avantages tels que des temps de chargement plus rapides en raison de serveurs distribués géographiquement et une charge d'hébergement réduite car vous n'aurez pas besoin d'héberger le fichier web-sdk.js vous-même.
Remarque

Cette approche simplifie le déploiement en déchargeant l'hébergement du fichier SDK Web vers un réseau CDN tout en gardant le contrôle sur vos configurations de discussion spécifiques via le 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 le fichier settings.js : ce fichier contient la configuration du kit SDK et la fonction initSDK. L'objectif de ce fichier et son contenu sont les mêmes que ceux décrits dans la section Balise de script HTML. Vous hébergez toujours ce fichier settings.js vous-même.
  2. Liez settings.js et le fichier web-sdk.js hébergé par CDN 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 le kit SDK Web, en pointant l'attribut src vers l'URL 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>
URL de réseau CDN
Le kit SDK Oracle Web peut être chargé à partir des URL CDN officielles suivantes.

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

Vous pouvez importer la bibliothèque à l'aide des implémentations 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();
 });

Import dynamique de la bibliothèque avec JavaScript

Utilisez la fonction d'utilitaire basée sur Mozilla Development Network (MDN) suivante pour importer la bibliothèque de façon dynamique 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, '');

Configuration de l'authentification client

En plus d'utiliser les listes de domaines autorisés, l'authentification client est mise en place à l'aide de jetons JWT signés.

La génération et la signature des jetons doivent être effectuées par le client sur le serveur back-end (de préférence après l'authentification utilisateur/client), qui est capable de préserver la sécurité de keyId et de keySecret.

Lorsque le kit SDK doit établir une connexion avec le serveur ODA, il demande d'abord un jeton JWT au client, puis l'envoie avec la demande de connexion. Le serveur ODA valide la signature de jeton et obtient l'ensemble de déclarations à partir de la charge utile JWT afin de vérifier le jeton pour établir la connexion.

Pour activer ce mode, les deux champs suivants sont requis lors de l'initialisation du kit SDK : clientAuthEnabled: true doit être transmis dans le paramètre associé aux paramètres du kit SDK, et une fonction de générateur de jeton doit être transmise en tant que deuxième paramètre. La fonction doit renvoyer une promesse, qui est résolue afin de renvoyer une chaîne de jeton JWT signé.
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 du jeton JWT. Certains champs de charge utile de 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 contenir les déclarations suivantes :
  • iat : heure d'émission
  • exp : heure d'expiration
  • channelId : ID de canal
  • userId : ID utilisateur
Les jetons eux-mêmes doivent être signés par la clé secrète du canal avec authentification client auquel la connexion est établie. Voici un exemple de jeton JWT signé :
Codé :
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1NzY3NDcyMDUsImV4cCI6MTU3Njc1MTExNywiY2hhbm5lbElkIjoiNDkyMDU5NWMtZWM3OS00NjE3LWFmOWYtNTk1MGQ2MDNmOGJiIiwidXNlcklkIjoiSm9obiIsImp0aSI6ImQzMjFjZDA2LTNhYTYtNGZlZS05NTBlLTYzZGNiNGVjODJhZCJ9.lwomlrI6XYR4nPQk0cIvyU_YMf4gYvfVpUiBjYihbUQ
Decoded :
  • En-tête :
    {
        "typ": "JWT",
        "alg": "HS256"
    }
  • Charge utile :
    {
        "iat": 1576747205,
        "exp": 1576748406,
        "channelId": "4920595c-ec79-4617-af9f-5950d603f8bb",
        "userId": "John"
    }
Si une déclaration du jeton est manquante ou que le format de sa valeur est incorrect, un message d'erreur décrivant la cause est généré par le kit SDK. La connexion n'est pas tentée. Le message d'erreur peut être utilisé pour corriger le problème avec le jeton JWT. Les déclarations supplémentaires transmises dans la charge utile n'affectent pas le mécanisme d'authentification client.