Ajouter un ensemble de composants à une compétence

Vous ajoutez un ensemble de composants à une compétence en créant un service de composants.

Pour les ensembles de composants que vous hébergez sur un serveur externe, Oracle Cloud Infrastructure Functions ou Oracle Mobile Hub, un service de composants est une connexion active entre la compétence et le serveur hôte. Vous pouvez également charger l'ensemble de composants et l'héberger à partir de votre instance d'Oracle Digital Assistant. On parle alors de service de composants intégré.

Un service de composants a deux fonctions :

  • Il interroge le composant pour obtenir les métadonnées de l'ensemble, notamment le nom des composants, leurs propriétés et les actions autorisées pour chacun d'eux. Après l'ajout d'un service à une compétence, vous pouvez voir ces informations dans l'onglet Components (Composants), auquel vous accédez en cliquant sur Components Ceci est une image de l'icône Components (Composants). dans la barre de navigation gauche. Vous pouvez référencer cette page pour obtenir les noms, propriétés et actions de composant, dont vous aurez besoin pour utiliser les composants dans votre flux de dialogue.

  • Il permet à la compétence d'appeler les composants.

    Les données utiles JSON de l'appel effectué par le moteur de dialogue aux composants incluent les paramètres d'entrée, les valeurs de variable, le contexte de niveau utilisateur et le texte du message utilisateur. Le composant retourne les résultats en modifiant les valeurs des variables existantes ou en ajoutant de nouvelles valeurs (ou les deux). Le moteur de dialogue analyse les données utiles retournées et poursuit.

Pour ajouter un ensemble de composants personnalisés à une compétence, allez à l'onglet Components (Composants) Ceci est une image de l'icône Components (Composants). de cette dernière et cliquez sur Add Service (Ajouter un service), qui ouvre une boîte de dialogue pour la configuration du service.

La configuration du service dépend de l'endroit où vous hébergez l'ensemble de composants. Les rubriques suivantes fournissent des instructions pour chaque type :

Après avoir créé le service, vous pouvez appeler les composants personnalisés à partir de votre flux de dialogue comme décrit sous Composants personnalisés.

Lorsque vous chargez un ensemble dans le conteneur intégré, Digital Assistant vérifie sa validité et peut le rejeter pour les raisons suivantes :

  • Il existe des erreurs JavaScript.

  • L'ensemble ne contient pas toutes les dépendances de module de noeud.

  • Un nom de composant contient plus de 100 caractères, commence par System. ou contient des caractères autres que des caractères alphanumériques et des traits de soulignement, donc la création du service échoue.

  • Votre instance contient déjà le nombre maximal de services de composants intégrés.

  • Le fichier TGZ est trop volumineux. Cela se produit généralement lorsque le fichier .npmignore ne contient pas d'entrée *.tgz. Chaque fois que vous assemblez les fichiers, une copie imbriquée du TGZ existant est ajoutée.

Pour plus d'informations sur ces vérifications, voir Ajouter un service de composants intégrés.

Ajouter un service de composants intégré

Si vous souhaitez héberger l'ensemble de composants personnalisés à partir de votre instance d'Oracle Digital Assistant, procédez comme suit :

  1. Préparer l'ensemble pour un service de conteneur intégré.

  2. Charger un ensemble pour créer unservice de composants intégré.

Préparer l'ensemble pour un service de conteneur intégré

Si vous souhaitez héberger l'ensemble de composants personnalisés depuis Oracle Digital Assistant en tant que service de composants intégré, vous devez d'abord assembler les composants personnalisés dans un fichier TGZ. Ensuite, lorsque vous créez le service de composants intégré, vous chargez ce fichier.

Ce fichier TGZ, que vous assemblez à l'aide de bots-node-sdk pack, doit contenir les ressources et la structure décrites dans Mettre en oeuvre des composants personnalisés. Il doit également contenir tous les modules de noeud dont il dépend (bots-node-sdk pack le fait pour vous).

Note

Le nombre de services de composants personnalisés intégrés qu'une instance peut avoir est limité. Si vous ne connaissez pas la limite, demandez à votre administrateur de service d'obtenir le nombre embedded-custom-component-service-count pour vous comme décrit dans Voir les limites de service dans la console d'infrastructure. Si vous essayez d'ajouter un service de composants après avoir atteint cette limite, la création de celui-ci échoue.

Pour préparer un ensemble à charger dans le service de conteneur intégré :

  1. Assurez-vous de disposer de la dernière version des outils de ligne de commande Node.js de développement de robots.

    Le conteneur intégré requiert que le fichier TGZ comprenne tous les éléments dependencies. Les versions antérieures ne regroupaient pas les éléments dependencies dans le fichier. Maintenant, la commande que vous allez utiliser pour créer le fichier TGZ garantit que votre fichier package.json contient un noeud bundledDependencies qui répertorie tous les modules dépendants qui doivent être inclus dans le fichier TGZ.

  2. Dans le répertoire qui contient le fichier main.js, exécutez la commande suivante pour chacun des modules dont dépend l'ensemble. Vous n'avez pas besoin d'effectuer cette action pour les éléments devDependencies, comme la trousse SDK Node.js de développement de robots.

    Cette commande ajoute le module au dossier node_modules et l'ajoute comme dépendance dans package.json.

    npm install <module>

    Si package.json nomme déjà toutes les dépendances, alors vous pouvez exécuter npm install à la place.

  3. Assurez-vous que le dossier de niveau supérieur contient un fichier .npmignore qui a une entrée *.tgz. Par exemple :

    *.tgz
    spec
    service-*

    Sinon, lorsque vous assemblez les fichiers dans un fichier TGZ, vous incluez le fichier TGZ qui existe déjà dans le dossier de niveau supérieur, et votre fichier TGZ continuera de doubler de volume. Après plusieurs assemblages des fichiers, le fichier TGZ sera trop volumineux pour être chargé dans le conteneur.

  4. Exécuter cette commande :

    bots-node-sdk pack

    Cette commande valide l'ensemble de composants, le met à jour pour inclure devDependencies si nécessaire, puis crée un fichier TGZ, que vous chargerez lorsque vous créerez un service de composants intégré à partir de l'onglet Components (Composants) de la compétence. Notez que les fichiers que vous avez listés en tant que dependencies sont inclus en tant que bundledDependencies, à l'exception de la trousse SDK Bots Node et Express, qui sont des devDependencies.

Votre package doit être compatible avec le noeud 14.17.0.

Pour plus d'informations sur la commande pack, voir https://github.com/oracle/bots-node-sdk/blob/master/bin/CLI.md.

Charger un ensemble pour créer unservice de composants intégré

Après avoir regroupé un ensemble de composants personnalisés dans un fichier TGZ, vous pouvez le charger pour créer un service de composants intégré à partir de l'onglet Components (Composants) de la compétence.

Pour savoir comment créer le fichier TGZ, voir Préparer l'ensemble pour un service de conteneur intégré.

Note

Lorsque vous chargez l'ensemble sur le service de composants intégré, il est déployé dans le service Oracle Functions. Si votre instance est provisionnée sur la plate-forme Oracle Cloud (comme toutes les instances de la version 19.4.1), le service est plutôt déployé dans l'instance Digital Assistant.

Pour créer le service de composants intégré :

  1. Depuis la compétence, cliquez sur Components (Composants) Icône Components (Composants).

  2. Cliquer Bouton + Ajouter un service..

  3. Sélectionnez Embedded Container.

  4. Cliquez sur Upload a component package file (Charger un fichier d'ensemble de composants) et pointez vers le fichier TGZ à charger, ou faites glisser le fichier vers la zone Package File (Fichier d'ensemble).

  5. (Facultatif) Si vous voulez envoyer des énoncés context.logger() de composant personnalisé au journal du service, réglez Enable Component Logging (Activer la journalisation de composant) à On (Activé). Ce commutateur est disponible uniquement avec des instances d'Oracle Digital Assistant provisionnées dans Oracle Cloud Infrastructure (parfois appelée infrastructure en nuage de 2e génération).

    Vous pouvez voir le journal à partir de l'onglet Composants en cliquant sur Diagnostics > Consulter les journaux.

    Note

    La compétence conserve une entrée de journal pendant deux jours. Lorsque vous supprimez un service de composants personnalisés intégré, les entrées de journal de la compétence pour ce service sont supprimées.
  6. Cliquez sur Create (Créer).

    Digital Assistant charge le fichier TGZ et crée le service de composants intégré. Pendant le chargement, Digital Assistant vérifie que l'ensemble est valide et peut le rejeter pour les raisons décrites plus loin dans cette section.

    Une fois le fichier TGZ chargé, le service de composants personnalisés est créé et ses composants sont déployés. Si la page Components (Composants) affiche un message de déploiement en attente après le chargement du fichier TGZ, cela signifie que le service a été créé, mais n'est pas encore disponible. Lorsque le service est disponible, les métadonnées de déploiement s'affichent à la place du message de déploiement en attente.

  7. Assurez-vous que le commutateur Service Enabled (Service activé) est réglé à On (Activé).

Pendant le chargement, Digital Assistant pourrait rejeter l'ensemble. Voici les motifs du rejet et les moyens de résoudre les problèmes.

  • JavaScript comporte des erreurs de syntaxe : Si un composant JavaScript contient des erreurs de syntaxe, il n'est pas ajouté au conteneur, ce qui génère le message d'erreur suivant :

    Error Message: failed to start service built: Invalid component
          path:

    Consultez les fichiers du composant dans un éditeur qui détecte les erreurs de syntaxe. Essayez également d'héberger l'ensemble sur un serveur local qui envoie des messages d'erreur à un journal de console.

    Ce message peut aussi s'afficher parce que l'ensemble ne contient pas toutes les dépendances du module de noeud. Voyez le point suivant de cette liste.

  • Modules de noeud manquants : Si l'ensemble ne contient pas toutes les dépendances de module de noeud, vous obtenez le même message d'erreur que ci-dessus :

    Error Message: failed to start service built: Invalid component
          path:

    Pour savoir comment inclure des dépendances de module de noeud, voir Préparer l'ensemble pour un service de conteneur intégré.

  • Le nom du composant est trop long : Si un nom de composant contient plus de 100 caractères, commence par System. ou comporte des caractères autres que des caractères alphanumériques et des traits de soulignement, la création du service échoue.

    Modifiez le nom dans le JavaScript du composant, refaites l'assemblage et chargez.

  • Limite de services de composants dépassée :Si votre instance contient déjà le nombre maximal de services de composants, la création du service échoue. Demandez à l'administrateur de service la limite embedded-custom-component-service-count comme décrit dans Voir les limites de service dans la console d'infrastructure.

    Si la limite est insuffisante, vous pouvez demander une augmentation. Voir Demande d'une augmentation de limite de service.

  • Le fichier TGZ est trop volumineux : Cela se produit généralement lorsque le fichier .npmignore ne contient pas d'entrée *.tgz. Chaque fois que vous assemblez les fichiers, une copie imbriquée du TGZ existant est ajoutée.

    Lorsque le dossier de niveau supérieur contient un fichier .npmignore avec *.tgz, la version précédente du fichier TGZ n'est pas incluse lorsque vous mettez à jour l'ensemble.

Si vous voulez envoyer des énoncés context.logger() de composant personnalisé au journal du service, réglez Enable Component Logging (Activer la journalisation de composant) à On (Activé). Ce commutateur est disponible uniquement avec des instances d'Oracle Digital Assistant provisionnées dans Oracle Cloud Infrastructure (parfois appelée infrastructure en nuage de 2e génération).

Lorsque le commutateur 'Enable Component Logging est activé, vous pouvez cliquer sur le bouton Diagnostics du service pour accéder aux journaux et aux rapports de défaillance afin de diagnostiquer le problème.

  • Sélectionnez Consulter les journaux pour afficher les messages que le composant personnalisé envoie à context.logger(). Cette fonction est disponible uniquement avec des instances d'Oracle Digital Assistant provisionnées dans Oracle Cloud Infrastructure (parfois appelée infrastructure en nuage de 2e génération). Le commutateur Enable Component Logging doit être activé pour que le journal contienne ces messages.
  • Sélectionnez View Crash Report (Voir le rapport de défaillance) pour afficher les détails sur la cause possible de la panne du conteneur.

Après avoir créé le service, vous pouvez appeler les composants personnalisés à partir de votre flux de dialogue comme décrit sous Composants personnalisés.

Ajouter un service de fonction Oracle

Vous pouvez déployer vos composants personnalisés sur Oracle Cloud Infrastructure Functions et les ajouter à une compétence en tant que service de fonction Oracle.

Pour ajouter un service de fonction Oracle :

  1. Vous aurez besoin de l'URL de la fonction. Un utilisateur disposant de privilèges de développement de fonctions peut obtenir l'URL de la console d'intégration pour vous.

    1. Connectez-vous à la console d'intégration.
    2. Cliquez sur Icône du menu de navigationen haut à gauche pour ouvrir le menu de navigation, cliquez sur Services de développement > Fonctions, puis sélectionnez le compartiment configuré pour le développement de fonctions.

    3. Cliquez sur l'application.

    4. Dans la section Fonctions, cliquez sur l'icône Plus de votre fonction, puis sur Copier le point d'extrémité d'appel. Les développeurs de compétences ont besoin de cette valeur pour ajouter l'ensemble de composants personnalisés en tant que service de composants dans une compétence.

  2. Un développeur de compétences ajoute le service de composants à une compétence dans Oracle Digital Assistant. Connectez-vous à Oracle Digital Assistant, ouvrez la compétence et cliquez sur Composants Icône Components (Composants).

  3. Cliquer Bouton + Service..

  4. Indiquez un nom et une description pour le service.

  5. Sélectionnez F fonction Oracle.

  6. Dans la zone de texte URL, entrez l'URL du point d'extrémité d'appel que vous avez copiée de la page Services de développement > Fonctions de la console Infrastructure lorsque vous effectuiez les étapes sous Configurer votre compte d'utilisateur pour Oracle Functions.

  7. Cliquez sur Create (Créer).

    Si vous obtenez une erreur indiquant qu'il est impossible de créer le service, allez à Services de développement > Fonctions dans la console Infrastructure, sélectionnez le compartiment, cliquez sur l'application, puis sur Journaux dans le menu Ressources. Activez ensuite le journal pour la fonction, réessayez le déploiement et vérifiez les journaux (cliquez sur le nom du journal à consulter). Pour en savoir plus sur les journaux, voir Stockage et consultation des journaux de fonction dans la documentation sur Oracle Cloud Infrastructure.

    L'apparition d'une erreur comme celle-ci indique que le dossier n'est pas doté des bonnes autorisations. Sur votre machine locale, utilisez chmod 775 pour modifier les autorisations du dossier, puis redéployez :

    "Error: EACCES: permission denied, stat
    '/function/components/hello.world.js.js'"

    Si vous voyez une erreur comme celle-ci, supprimez node_modules sur votre machine locale, exécutez npm install et redéployez.

    "Error: Cannot find module '@fnproject/fdk'"
  8. Assurez-vous que le commutateur Service Enabled (Service activé) est réglé à On (Activé).

Après avoir créé le service, vous pouvez appeler les composants personnalisés à partir de votre flux de dialogue comme décrit sous Composants personnalisés.

Ajouter un service de composant externe

Vous pouvez héberger vos composants personnalisés sur votre propre serveur Node.js et les ajouter à une compétence en tant que service de composants externe.

Conseil :

Vous pouvez utiliser l'option de service externe lors du développement, comme décrit dans la rubrique Exécuter le service de composants dans un environnement de développement.

Pour ajouter un service de composants externe :

  1. Depuis la compétence, cliquez sur Components (Composants) Icône Components (Composants).

  2. Cliquer Bouton + Service..

  3. Sélectionnez External (Externe).

  4. Dans la zone de texte Metadata URL (URL de métadonnées), entrez l'URL qui pointe vers le point d'extrémité GET qui retourne la liste des composants.

  5. Entrez le nom d'utilisateur et le mot de passe du service.

  6. Cliquez sur Create (Créer).

  7. Assurez-vous que le commutateur Service Enabled (Service activé) est réglé à On (Activé).

Après avoir créé le service, vous pouvez appeler les composants personnalisés à partir de votre flux de dialogue comme décrit sous Composants personnalisés.

Ajouter un service de composants Mobile Hub

Vous pouvez héberger vos composants personnalisés à partir d'Oracle Mobile Hub et les ajouter à une compétence en tant que service de composants Oracle Mobile Cloud. Les composants personnalisés hébergés sur Mobile Hub peuvent intégrer des services distants à l'aide de connecteurs contrôlés par un système dorsal Mobile Hub et ils ont accès aux API de la plate-forme Mobile Hub.

Comme le système dorsal qui héberge le code personnalisé traite l'authentification des composants personnalisés, vous devez référencer la page de paramètres du système dorsal pour obtenir les informations dont vous avez besoin pour achever la configuration.

Pour ajouter un service de composants pour le système dorsal Mobile Hub :

  1. Depuis la compétence, cliquez sur Components (Composants) Icône Components (Composants).

  2. Cliquer Bouton + Service..

  3. Sélectionnez Oracle Mobile Cloud.

  4. Entrez l'identificateur unique affecté au système dorsal Mobile Hub dans le champ Backend ID. Cet ID est transmis dans l'en-tête REST de chaque appel provenant de la compétence.

  5. Dans le champ MetadataURL, entrez le point d'extrémité /components provenant de l'API de code personnalisé. Par exemple, http://<server>:<port>/mobile/custom/ccPackage/components.

  6. Choisissez Use Anonymous Access (Utiliser un accès anonyme) si le service autorise les connexions anonymes. Si vous choisissez cette option, entrez une clé anonyme, chaîne unique qui permet à l'application d'accéder aux API anonymes sans envoyer de nom d'utilisateur et de mot de passe encodés. La clé anonyme est transmise à la place. La clé anonyme se trouve dans la page des paramètres du système dorsal dans Mobile Hub. (Il vous faut cliquer sur Show (Afficher).)

    Si le service de composants requiert une connexion (c'est-à-dire aucun accès anonyme), entrez le nom d'utilisateur et le mot de passe.

  7. Si le service requiert des paramètres spécifiques, cliquez sur Add HTTP Header (Ajouter un en-tête HTTP), puis définissez les paires clé-valeur pour les en-têtes.

  8. Cliquez sur Create (Créer).

  9. Assurez-vous que le commutateur Service Enabled (Service activé) est réglé à On (Activé).

Après avoir créé le service, vous pouvez appeler les composants personnalisés à partir de votre flux de dialogue comme décrit sous Composants personnalisés.