Ajouter un package de composants à une brique
Pour ajouter un package de composants à une brique, créez un service de composant.
Pour les packages de composants que vous hébergez sur un serveur externe, sur Oracle Cloud Infrastructure Functions ou sur Oracle Mobile Hub, un service de composant est une connexion active de la brique vers le serveur hôte. Vous pouvez également télécharger le package de composants et l'héberger à partir de votre instance Oracle Digital Assistant. Il s'agit alors d'un service de composant imbriqué.
Un service de composant a deux fonctions :
-
Il interroge le composant pour obtenir les métadonnées du package, y compris le nom des composants, leurs propriétés et les actions autorisées pour chaque composant. Après l'ajout d'un service à la brique, vous pouvez consulter ces informations dans l'onglet Composants, auquel vous accédez en cliquant sur Composants
dans la barre de navigation de gauche. Vous pouvez référencer cette page pour obtenir le nom, les propriétés et les actions des composants, qui seront nécessaires pour utiliser les composants dans le flux de dialogue.
-
Il permet à la brique d'appeler les composants.
La charge utile JSON de l'appel effectué par le moteur de dialogue vers les composants inclut des paramètres d'entrée, des valeurs de variable, un contexte au niveau de l'utilisateur et le texte du message de l'utilisateur. Le composant renvoie les résultats en modifiant les valeurs des variables existantes ou en ajoutant de nouvelles valeurs (ou les deux). Le moteur de dialogue analyse la charge utile renvoyée et continue l'opération.
Pour ajouter un package de composants personnalisé à une brique, accédez à l'onglet Composants de cette brique, puis cliquez sur Ajouter un service pour ouvrir une boîte de dialogue permettant de configurer le service.
La configuration du service dépend de l'emplacement d'hébergement du package de composants. Les rubriques suivantes fournissent des instructions pour chaque type :
Une fois le service créé, vous pouvez appeler les composants personnalisés à partir de votre flux de dialogue, comme décrit dans Composants personnalisés.
Lorsque vous téléchargez un package vers le conteneur imbriqué, Digital Assistant vérifie que le package est valide et peut le rejeter pour les raisons suivantes :
-
Des erreurs JavaScript sont détectées.
-
Le package ne contient pas toutes les dépendances du module de noeud.
-
Un nom de composant comporte 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, ce qui entraîne l'échec de la création du service. -
Votre instance dispose déjà du nombre maximal de services de composant imbriqués.
-
Le fichier TGZ est trop volumineux. Cela se produit généralement lorsque le fichier
.npmignore
ne contient pas d'entrée*.tgz
. Par conséquent, chaque fois que vous packagez les fichiers, une copie imbriquée du fichier TGZ existant est ajoutée.
Pour plus d'informations sur ces vérifications, reportez-vous à Ajout d'un service de composant imbriqué.
Ajout d'un service de composant imbriqué
Si vous souhaitez héberger le package de composants personnalisé à partir de votre instance Oracle Digital Assistant, effectuez les opérations suivantes :
Préparation du package pour un service de conteneur imbriqué
Si vous voulez héberger le package de composants personnalisé à partir d'Oracle Digital Assistant en tant que service de composants imbriqué, vous devez d'abord packager les composants personnalisés dans un fichier TGZ. Ensuite, lorsque vous créez le service de composant imbriqué, vous téléchargez ce fichier.
Ce fichier TGZ, que vous packagez à l'aide de bots-node-sdk pack
, doit contenir les ressources et la structure décrites dans Implémentation des composants personnalisés. Il doit également contenir tous les modules de noeud dont il dépend (bots-node-sdk pack
s'en occupe pour vous).
Le nombre de services de composant personnalisés imbriqués d'une instance est limité. Si vous ne connaissez pas cette limite, demandez à l'administrateur de service d'obtenir pour vous la valeur
embedded-custom-component-service-count
comme décrit dans Affichage des limites de service dans la console Infrastructure. Si vous essayez d'ajouter un service de composant après avoir atteint cette limite, la création du service échoue.
Pour préparer un package en vue du téléchargement vers le service de conteneur imbriqué, procédez comme suit :
-
Assurez-vous que vous disposez de la dernière version des outils de ligne de commande Node.js Bots.
Le conteneur imbriqué exige que le fichier TGZ comprenne tous les éléments
dependencies
. Les versions antérieures n'ont pas regroupé les élémentsdependencies
dans le fichier. La commande que vous allez utiliser pour créer le fichier TGZ fait en sorte que votre fichierpackage.json
contienne un noeudbundledDependencies
qui répertorie tous les modules dépendants à inclure dans le fichier TGZ. -
Dans le répertoire contenant le fichier
main.js
, exécutez la commande suivante pour chacun des modules dont dépend le package. Vous n'avez pas besoin d'effectuer cette opération pourdevDependencies
, comme le kit SDK Bots Node .Cette commande ajoute le module au dossier
node_modules
et l'ajoute en tant que dépendance danspackage.json
.npm install <module>
Si
package.json
nomme déjà toutes les dépendances, vous pouvez exécuternpm install
à la place. -
Assurez-vous que le dossier de niveau supérieur contient un fichier
.npmignore
contenant lui-même une entrée*.tgz
. Par exemple :*.tgz spec service-*
Sinon, lorsque vous packagerez les fichiers dans un fichier TGZ, vous inclurez le fichier TGZ qui existe déjà dans le dossier de niveau supérieur et la taille de votre fichier TGZ doublera. Une fois que vous avez packagé les fichiers plusieurs fois, le fichier TGZ est trop volumineux pour être téléchargé dans le conteneur.
-
Exécutez cette commande :
bots-node-sdk pack
Cette commande valide le package de composants, le met à jour pour inclure
devDependencies
si nécessaire, puis crée un fichier TGZ que vous téléchargerez lors de la création d'un service de composant imbriqué à partir de l'onglet Composants de la brique. Les fichiers que vous avez répertoriés en tant qu'élémentsdependencies
sont inclus en tant quebundledDependencies
, à l'exception du kit SDK Bots Node et d'Express, qui sont des élémentsdevDependencies
.
Votre package doit être compatible avec le noeud 14.17.0.
Pour plus d'informations sur la commande pack
, reportez-vous à https://github.com/oracle/bots-node-sdk/blob/master/bin/CLI.md
.
Téléchargement du package pour créer un service de composant imbriqué
Après avoir créé un package de composants personnalisé dans un fichier TGZ, vous pouvez le télécharger pour créer un service de composant imbriqué à partir de l'onglet Composants de la brique.
Pour savoir comment créer le fichier TGZ, reportez-vous à Préparation du package pour un service de conteneur imbriqué.
Lorsque vous téléchargez le package vers le service de composant imbriqué, il est déployé vers le service Oracle Functions. Si votre instance est provisionnée sur Oracle Cloud Platform (comme toutes les instances de version 19.4.1), le service est déployé dans l'instance Digital Assistant à la place.
Pour créer le service de composant imbriqué, procédez comme suit :
-
Dans la brique, cliquez sur Composants
.
-
Cliquez
.
-
Sélectionnez Conteneur imbriqué.
-
Cliquez sur Télécharger un fichier de package de composants et pointez vers le fichier TGZ à télécharger, ou faites glisser le fichier vers la zone Fichier de package.
-
(Facultatif) Si vous voulez envoyer les instructions
context.logger()
de composant personnalisé au journal du service, activez l'option Activer la journalisation de composant. Cette option est disponible uniquement dans les instances Oracle Digital Assistant qui ont été provisionnées sur Oracle Cloud Infrastructure (parfois appelée infrastructure cloud Generation 2).Pour visualiser le journal à partir de l'onglet Composants, cliquez sur Diagnostics > Visualiser les journaux.
Remarque
La brique conserve une entrée de journal pendant deux jours. Lorsque vous supprimez un service de composant personnalisé incorporé, les entrées de journal de la brique pour ce service sont supprimées. -
Cliquez sur Créer.
Digital Assistant télécharge le fichier TGZ et crée le service de composant imbriqué. Lors du téléchargement, Digital Assistant vérifie que le package est valide et peut le rejeter pour les raisons décrites plus loin dans cette section.
Une fois le fichier TGZ téléchargé vers le serveur, le service de composant personnalisé est créé et ses composants sont déployés. Si la page Composants affiche un message indiquant que le déploiement est en attente après le téléchargement du fichier TGZ vers le serveur, 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 sont affichées à la place du message indiquant que le déploiement est en attente.
-
Assurez-vous que l'option Service activé est activée.
Lors du téléchargement, Digital Assistant peut rejeter le package. Voici les motifs de rejet et les méthodes de résolution des problèmes.
-
JavaScript contient des erreurs de syntaxe : si le fichier JavaScript d'un composant comprend des erreurs de syntaxe, ce composant 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:
Affichez les fichiers de composant dans un éditeur qui détecte les erreurs de syntaxe. Essayez également d'héberger le package sur un serveur local qui envoie des messages d'erreur vers un journal de console.
Ce message peut également apparaître si le package ne contient pas toutes les dépendances de module de noeud. Consultez l'élément suivant de cette liste.
-
Modules de noeud manquants : si le package ne contient pas toutes les dépendances du module de noeud, vous obtiendrez 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, reportez-vous à Préparation du package pour un service de conteneur imbriqué.
-
Nom de composant trop long : si un nom de composant comporte 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, cela entraîne l'échec de la création du service.Modifiez le nom dans le fichier JavaScript du composant, repackagez-le et téléchargez-le à nouveau.
-
Dépassement de la limite de service de composant : si votre instance a déjà le nombre maximal de services de composant personnalisés imbriqués, la création du service échoue. Demandez à l'administrateur de service la limite
embedded-custom-component-service-count
décrite dans Affichage des limites de service dans la console Infrastructure.Si vous avez besoin d'augmenter la limite, vous pouvez demander une augmentation. Reportez-vous à Demande d'augmentation de limite de service.
-
Fichier TGZ trop volumineux : cela se produit généralement lorsque le fichier
.npmignore
ne contient pas d'entrée*.tgz
. Par conséquent, chaque fois que vous packagez les fichiers, une copie imbriquée du fichier TGZ existant est ajoutée.Lorsque le dossier de niveau supérieur contient un fichier
.npmignore
avec une extension*.tgz
, la version précédente du fichier TGZ n'est pas incluse lors de la mise à jour du package.
Si vous voulez envoyer les instructions context.logger()
de composant personnalisé au journal du service, activez l'option Activer la journalisation de composant. Cette option est disponible uniquement dans les instances Oracle Digital Assistant qui ont été provisionnées sur Oracle Cloud Infrastructure (parfois appelée infrastructure cloud Generation 2).
Lorsque l'option Activer la journalisation de composant est activée, vous pouvez cliquer sur le bouton Diagnostics du service pour accéder à l'option de visualisation des journaux et aux rapports d'incident afin de diagnostiquer le problème.
- Sélectionnez Visualiser les journaux pour visualiser les messages que le composant personnalisé envoie à
context.logger()
. Cette fonctionnalité est disponible uniquement dans les instances Oracle Digital Assistant qui ont été provisionnées sur Oracle Cloud Infrastructure (parfois appelée infrastructure cloud Generation 2). L'option Activer la journalisation de composant doit être activée pour que le journal contienne ces messages. - Sélectionnez Afficher le rapport d'incident pour afficher les détails sur les causes de la panne du conteneur.
Une fois le service créé, vous pouvez appeler les composants personnalisés à partir de votre flux de dialogue, comme décrit dans Composants personnalisés.
Ajout d'un service Oracle Functions
Vous pouvez déployer vos composants personnalisés vers Oracle Cloud Infrastructure Functions et les ajouter à une brique en tant que service Oracle Function.
Pour ajouter un service Oracle Functions, procédez comme suit :
-
Vous devez connaître l'URL de la fonction. Un utilisateur disposant de privilèges de développement de fonctions peut obtenir l'URL à partir de la console d'intégration pour vous.
- Connectez-vous à la console d'intégration.
-
Cliquez sur
en haut à gauche pour ouvrir le menu de navigation, cliquez sur Services de développeur > Fonctions, puis sélectionnez le compartiment configuré pour le développement de fonctions.
-
Cliquez sur l'application.
-
Dans la section Fonctions, cliquez sur l'icône Plus de votre fonction, puis sur Copier l'adresse d'appel. Les développeurs de briques ont besoin de cette valeur pour ajouter le package de composants personnalisés en tant que service de composant dans une brique.
-
Un développeur de briques ajoute le service de composant à une brique dans Oracle Digital Assistant. Connectez-vous à Oracle Digital Assistant, ouvrez la brique et cliquez sur Composants
.
-
Cliquez
.
-
Entrez le nom et la description du service.
-
Sélectionnez Fonction Oracle.
-
Dans la zone de texte URL, entrez l'URL d'adresse d'appel que vous avez copiée à partir de la page Services de développeur > Fonctions de la console Infrastructure en effectuant les étapes décrites dans Configuration de votre compte utilisateur pour Oracle Functions.
-
Cliquez sur Créer.
Si vous obtenez l'erreur Impossible de créer le service, accédez à Services de développeur > Fonctions dans la console Infrastructure, sélectionnez le compartiment, cliquez sur l'application et cliquez sur Journaux dans le menu Ressources. Activez ensuite le journal de la fonction, réessayez le déploiement et consultez les journaux (cliquez sur le nom du journal pour l'afficher). Pour en savoir plus sur les journaux, reportez-vous à Stockage et affichage des journaux de fonction dans la documentation Oracle Cloud Infrastructure.
Si une erreur de ce type apparaît, cela signifie que le dossier ne dispose pas des droits d'accès appropriés. Sur votre ordinateur local, utilisez
chmod 775
pour modifier les droits d'accès du dossier, puis procédez au redéploiement :"Error: EACCES: permission denied, stat '/function/components/hello.world.js.js'"
Si une erreur de ce type apparaît, sur votre ordinateur local, supprimez
node_modules
, exécuteznpm install
et effectuez le redéploiement."Error: Cannot find module '@fnproject/fdk'"
-
Assurez-vous que l'option Service activé est activée.
Une fois le service créé, vous pouvez appeler les composants personnalisés à partir de votre flux de dialogue, comme décrit dans Composants personnalisés.
Ajout d'un service de composant externe
Vous pouvez héberger vos composants personnalisés sur votre propre serveur Node.js et les ajouter à une brique en tant que service de composant externe.
Conseil :
Vous pouvez utiliser l'option de service externe lors du développement, comme décrit dans Exécution du service de composant dans un environnement de développement.Pour ajouter un service de composant externe, procédez comme suit :
-
Dans la brique, cliquez sur Composants
.
-
Cliquez
.
-
Sélectionnez Externe.
-
Dans la zone de texte URL de métadonnées, entrez l'URL qui pointe vers l'adresse GET renvoyant la liste des composants.
-
Saisissez le nom utilisateur et le mot de passe du service.
-
Cliquez sur Créer.
-
Assurez-vous que l'option Service activé est activée.
Une fois le service créé, vous pouvez appeler les composants personnalisés à partir de votre flux de dialogue, comme décrit dans Composants personnalisés.
Ajout d'un service de composant Mobile Hub
Vous pouvez héberger vos composants personnalisés sur Oracle Mobile Hub et les ajouter à une brique en tant que service de composant Oracle Mobile Cloud. Les composants personnalisés hébergés sur Mobile Hub peuvent s'intégrer aux services distants à l'aide de connecteurs contrôlés par un back-end Mobile Hub et ont accès aux API de plate-forme Mobile Hub.
Puisque le back-end qui héberge le code personnalisé gère l'authentification pour les composants personnalisés, vous devez vous reporter à la page Paramètres du back-end pour obtenir les informations nécessaires à la configuration.
Afin d'ajouter un service de composant pour le back-end Mobile Hub, procédez comme suit :
-
Dans la brique, cliquez sur Composants
.
-
Cliquez sur
.
-
Sélectionnez Oracle Mobile Cloud.
-
Entrez l'identificateur unique affecté au back-end de Mobile Hub dans le champ ID de back-end. Cet ID est transmis dans l'en-tête REST de chaque appel à partir de la brique.
-
Dans le champ MetadataURL, entrez l'adresse
/components
à partir de l'API de code personnalisé. Par exemple,http://<server>:<port>/mobile/custom/ccPackage/components
. -
Choisissez Utiliser l'accès anonyme si le service autorise la connexion anonyme. Si vous choisissez cette option, entrez la clé anonyme, qui est une chaîne unique permettant à votre application d'accéder aux API anonymes sans envoyer de nom utilisateur ni de mot de passe encodés. La clé anonyme est transmise à la place. Vous pouvez trouver la clé anonyme sur la page Paramètres du back-end dans Mobile Hub. (Vous devrez peut-être cliquer sur Afficher.)
Si le service du composant nécessite une connexion (autrement dit, sans accès anonyme), entrez le nom utilisateur et le mot de passe.
-
Si le service nécessite des paramètres spécifiques, cliquez sur Ajouter un en-tête HTTP, puis définissez les paires clé-valeur pour les en-têtes.
-
Cliquez sur Créer.
-
Assurez-vous que l'option Service activé est activée.
Une fois le service créé, vous pouvez appeler les composants personnalisés à partir de votre flux de dialogue, comme décrit dans Composants personnalisés.