Aggiungi package componente a uno skill
Per aggiungere un package di componenti a uno skill, creare un servizio di componenti.
Per i package di componenti che vengono ospitati su un server esterno, Oracle Cloud Infrastructure Functions o su Oracle Mobile Hub, un servizio di componente è una connessione attiva dalla competenza al server host. In alternativa, è possibile caricare il package di componenti e ospitarlo dall'istanza di Oracle Digital Assistant. Viene definito servizio componente incorporato.
Un servizio componente ha due funzioni:
-
Esegue una query sul componente per ottenere i metadati del pacchetto, inclusi i nomi dei componenti, le relative proprietà e le azioni consentite per ciascuno di essi. Dopo aver aggiunto un servizio allo skill, è possibile visualizzare queste informazioni nella scheda Componenti, a cui si accede facendo clic su Componenti
nella barra di navigazione a sinistra. È possibile fare riferimento a questa pagina per ottenere i nomi, le proprietà e le azioni dei componenti, che dovranno essere utilizzati nel flusso della finestra di dialogo.
-
Consente allo skill di richiamare i componenti.
Il payload JSON della chiamata effettuata dal motore di dialogo ai componenti include parametri di input, valori di variabile, contesto a livello utente e testo del messaggio dell'utente. Il componente restituisce i risultati modificando i valori delle variabili esistenti o aggiungendo nuove variabili (o entrambe). Il motore di dialogo analizza il payload restituito e procede.
Per aggiungere un pacchetto di componenti personalizzato a uno skill, andare alla scheda Componenti dello skill e fare clic su Aggiungi servizio, che apre una finestra di dialogo per la configurazione del servizio.
La modalità di configurazione del servizio dipende dalla posizione in cui si trova il package di componenti. Gli argomenti riportati di seguito forniscono istruzioni per ciascun tipo.
Dopo aver creato il servizio, è possibile richiamare i componenti personalizzati dal flusso della finestra di dialogo come descritto in Componenti personalizzati.
Quando si carica un package nel contenitore incorporato, Digital Assistant verifica che il package sia valido e può rifiutarlo per i seguenti motivi:
-
Sono presenti errori JavaScript.
-
Il pacchetto non contiene tutte le dipendenze del modulo nodo.
-
Il nome di un componente contiene più di 100 caratteri, inizia con
System.
o contiene caratteri alfanumerici e di sottolineatura, quindi la creazione del servizio non riesce. -
L'istanza dispone già del numero massimo di servizi componente incorporati.
-
Il file TGZ è troppo grande. Ciò si verifica in genere quando il file
.npmignore
non contiene una voce*.tgz
e, pertanto, ogni volta che vengono inseriti i file, viene aggiunta una copia nidificata del file TGZ esistente.
Per ulteriori informazioni su questi controlli di verifica, vedere Aggiungi servizio componente incorporato.
Aggiungi servizio componente incorporato
Se si desidera ospitare il package di componenti personalizzati dall'istanza di Oracle Digital Assistant, attenersi alla procedura riportata di seguito.
Preparare il package per un servizio Container incorporato
Se si desidera ospitare il pacchetto di componenti personalizzati da Oracle Digital Assistant come servizio di componenti incorporati, è innanzitutto necessario imballare i componenti personalizzati in un file TGZ. Quindi, quando si crea il servizio componente incorporato, si carica questo file.
Questo file TGZ, incluso nel package mediante bots-node-sdk pack
, deve contenere gli asset e la struttura descritti nella sezione Implementa componenti personalizzati. Deve inoltre contenere tutti i moduli nodo da cui dipende (l'bots-node-sdk pack
lo fa per te).
È previsto un limite al numero di servizi di componenti personalizzati incorporati che un'istanza può avere. Se non si conosce il limite, chiedere all'amministratore del servizio di ottenere automaticamente
embedded-custom-component-service-count
come descritto in Visualizza limiti del servizio nella console dell'infrastruttura. Se si tenta di aggiungere un servizio componente dopo aver raggiunto tale limite, la creazione del servizio non riesce.
Per preparare un package per il caricamento nel servizio container incorporato, effettuare le operazioni riportate di seguito.
-
Assicurarsi di disporre della versione più recente degli strumenti della riga di comando Node.js dei bot.
Il contenitore incorporato richiede che il file TGZ includa tutti i file
dependencies
. Le versioni precedenti non hanno raggruppatodependencies
nel file. Ora, il comando che si utilizzerà per creare il file TGZ assicura che il filepackage.json
contenga un nodobundledDependencies
che elenca tutti i moduli dipendenti che devono essere inclusi nel file TGZ. -
Nella directory che contiene il file
main.js
, eseguire il comando seguente per ciascuno dei moduli da cui dipende il pacchetto. Non è necessario eseguire questa operazione perdevDependencies
, ad esempio l'SDK del nodo bot.Questo comando aggiunge il modulo alla cartella
node_modules
e lo aggiunge come dipendenza inpackage.json
.npm install <module>
Se
package.json
assegna già un nome a tutte le dipendenze, è possibile eseguirenpm install
. -
Assicurarsi che la cartella di livello superiore contenga un file
.npmignore
con una voce*.tgz
. Ad esempio:*.tgz spec service-*
In caso contrario, quando si impacchettano i file in un file TGZ, si include il file TGZ già esistente nella cartella di livello superiore e le dimensioni del file TGZ raddoppieranno. Dopo aver imballato i file un paio di volte, il file TGZ sarà di grandi dimensioni da caricare nel contenitore.
-
Eseguire questo comando:
bots-node-sdk pack
Questo comando convalida il package di componenti, lo aggiorna in modo da includere
devDependencies
, se necessario, e quindi crea un file TGZ, che verrà caricato quando si crea un servizio di componenti incorporato dalla scheda Componenti della competenza. Tenere presente che i file elencati comedependencies
sono inclusi comebundledDependencies
, ad eccezione dell'SDK del nodo bot e di Express, che sonodevDependencies
.
Il pacchetto deve essere compatibile con il nodo 14.17.0.
Per maggiori informazioni sul comando pack
, vedere https://github.com/oracle/bots-node-sdk/blob/master/bin/CLI.md
.
Carica package per creare un servizio componente incorporato
Dopo aver compresso un package di componenti personalizzati in un file TGZ, è possibile caricarlo per creare un servizio di componenti incorporato dalla scheda Componenti dello skill.
Per informazioni su come creare il file TGZ, vedere Preparare il package per un servizio Container incorporato.
Quando si carica il package nel servizio componente incorporato, viene distribuito in Oracle Functions Service. Se il provisioning della tua istanza viene eseguito su Oracle Cloud Platform (come tutte le istanze della versione 19.4.1), il servizio viene invece distribuito all'interno dell'istanza di Digital Assistant.
Per creare il servizio componente incorporato, effettuare le operazioni riportate di seguito.
-
Dalla competenza, fare clic su Componenti
.
-
Fare clic su
.
-
Selezionare Embedded Container.
-
Fare clic su Carica un file pacchetto componente e puntare al file TGZ da caricare oppure trascinare il file nella casella File pacchetto.
-
(Facoltativo) Se si desidera inviare le istruzioni
context.logger()
del componente personalizzato al log del servizio, passare a Abilita log componente. Questo switch è disponibile solo nelle istanze di Oracle Digital Assistant di cui è stato eseguito il provisioning su Oracle Cloud Infrastructure (a volte indicata come infrastruttura cloud di generazione 2).È possibile visualizzare il log dalla scheda Componenti facendo clic su Diagnostica > Visualizza log.
Nota
La competenza conserva una voce di log per due giorni. Quando si elimina un servizio componente personalizzato incorporato, le voci di log dello skill per tale servizio vengono eliminate. -
Fare clic su Crea.
Digital Assistant carica il file TGZ e crea il servizio componente incorporato. Durante il caricamento, Digital Assistant verifica che il package sia valido e può rifiutarlo per i motivi descritti più avanti in questa sezione.
Dopo aver caricato il file TGZ, il servizio componente personalizzato viene creato e i relativi componenti vengono distribuiti. Se nella pagina Componenti viene visualizzato un messaggio di distribuzione in attesa dopo aver caricato il file TGZ, significa che il servizio è stato creato, ma non è ancora disponibile. Quando il servizio diventa disponibile, i metadati di distribuzione vengono visualizzati al posto del messaggio di distribuzione in attesa.
-
Assicurarsi che l'opzione Servizio abilitato sia attivata.
Durante il caricamento, Digital Assistant potrebbe rifiutare il pacchetto. Ecco i motivi del rifiuto e i modi per risolvere i problemi.
-
JavaScript contiene errori di sintassi: se il valore JavaScript di un componente contiene errori di sintassi, tale componente non viene aggiunto al contenitore e pertanto viene visualizzato il seguente messaggio di errore:
Error Message: failed to start service built: Invalid component path:
Visualizzare i file dei componenti in un editor che rileva gli errori di sintassi. Provare inoltre a ospitare il pacchetto su un server locale che invia messaggi di errore a un log della console.
Un altro motivo per questo messaggio potrebbe essere che il pacchetto non contiene tutte le dipendenze del modulo nodo. Vedere l'elemento successivo in questo elenco.
-
Moduli nodo mancanti: se il pacchetto non contiene tutte le dipendenze del modulo nodo, verrà visualizzato lo stesso messaggio di errore riportato sopra.
Error Message: failed to start service built: Invalid component path:
Per informazioni su come includere le dipendenze dei moduli nodo, vedere Preparare il package per un servizio contenitore incorporato.
-
Nome componente troppo lungo: se il nome di un componente contiene più di 100 caratteri, inizia con
System.
o contiene caratteri diversi da caratteri alfanumerici e caratteri di sottolineatura, la creazione del servizio non riesce.Modificare il nome nel componente JavaScript, reimpacchettare e caricare di nuovo.
-
Limite di servizio dei componenti superato: se l'istanza dispone già del numero massimo di servizi dei componenti personalizzati incorporati, la creazione del servizio non riesce. Chiedere all'amministratore del servizio il limite di
embedded-custom-component-service-count
come descritto in Visualizza limiti del servizio nella console dell'infrastruttura.Se è necessario aumentare il limite, è possibile richiedere un aumento. Vedere Come richiedere un aumento del limite del servizio.
-
File TGZ troppo grande: questo si verifica in genere quando il file
.npmignore
non contiene una voce*.tgz
e, pertanto, ogni volta che vengono inseriti i file, viene aggiunta una copia nidificata dell'area TGZ esistente.Quando la cartella di livello superiore contiene un file
.npmignore
con*.tgz
, la versione precedente del file TGZ non viene inclusa quando si aggiorna il pacchetto.
Se si desidera inviare le istruzioni context.logger()
del componente personalizzato al log del servizio, passare a Abilita log componente. Questo switch è disponibile solo nelle istanze di Oracle Digital Assistant di cui è stato eseguito il provisioning su Oracle Cloud Infrastructure (a volte indicata come infrastruttura cloud di generazione 2).
Quando l'opzione Abilita registrazione componenti è attivata, è possibile fare clic sul pulsante Diagnostica del servizio per accedere ai log delle viste e ai report degli arresti anomali per diagnosticare il problema.
- Selezionare Visualizza log per visualizzare i messaggi inviati dal componente personalizzato a
context.logger()
. Questa funzione è disponibile solo nelle istanze di Oracle Digital Assistant di cui è stato eseguito il provisioning su Oracle Cloud Infrastructure (a volte indicata come infrastruttura cloud di generazione 2). Lo switch Abilita log componente deve essere Attivo affinché il log contenga questi messaggi. - Selezionare View Crash Report per visualizzare i dettagli su che cosa ha causato il crash del contenitore.
Dopo aver creato il servizio, è possibile richiamare i componenti personalizzati dal flusso della finestra di dialogo come descritto in Componenti personalizzati.
Aggiungi Oracle Function Service
È possibile distribuire i componenti personalizzati in Oracle Cloud Infrastructure Functions e aggiungerli a una competenza come servizio Oracle Function.
Per aggiungere un servizio Oracle Function:
-
Dovrai conoscere l'URL della funzione. Un utente con privilegi di sviluppo delle funzioni può ottenere automaticamente l'URL da Integration Console.
- Collegarsi a Integration Console.
-
Fare clic su
in alto a sinistra per aprire il menu di navigazione, fare clic su Servizi sviluppatore > Funzioni, quindi selezionare il compartimento impostato per lo sviluppo di funzioni.
-
Fare clic sull'applicazione.
-
Nella sezione Funzioni fare clic sull'icona Altro per la funzione e fare clic su Copia endpoint di richiamo. Gli sviluppatori di competenze hanno bisogno di questo valore per aggiungere il package di componenti personalizzati come servizio di componenti in una competenza.
-
Uno sviluppatore di competenze aggiunge il servizio componenti a una competenza in Oracle Digital Assistant. Accedere a Oracle Digital Assistant, aprire la competenza e fare clic su Componenti
.
-
Fare clic su
.
-
Fornire un nome e una descrizione per il servizio.
-
Selezionare Funzione Oracle.
-
Nella casella di testo URL, immettere l'URL dell'endpoint di richiamo copiato dalla pagina Servizi sviluppatore > Funzioni nella console dell'infrastruttura durante il completamento dei passi in Impostazione dell'account utente per Oracle Functions.
-
Fare clic su Crea.
Se si verifica un errore "Impossibile creare il servizio", andare a Servizi sviluppatore > Funzioni nella console dell'infrastruttura, selezionare il compartimento, fare clic sull'applicazione e fare clic su Log nel menu Risorse. Quindi abilitare il log per la funzione, riprovare a eseguire la distribuzione e controllare i log (fare clic sul nome del log per visualizzare il log). Per ulteriori informazioni sui log, vedere Memorizzazione e visualizzazione dei log delle funzioni nella documentazione di Oracle Cloud Infrastructure.
Se viene visualizzato un errore di questo tipo, è perché la cartella non dispone delle autorizzazioni corrette. Nel computer locale, utilizzare
chmod 775
per modificare le autorizzazioni della cartella, quindi ridistribuire:"Error: EACCES: permission denied, stat '/function/components/hello.world.js.js'"
Se viene visualizzato un errore di questo tipo, nel computer locale eliminare
node_modules
, eseguirenpm install
e ridistribuire."Error: Cannot find module '@fnproject/fdk'"
-
Assicurarsi che l'opzione Servizio abilitato sia attivata.
Dopo aver creato il servizio, è possibile richiamare i componenti personalizzati dal flusso della finestra di dialogo come descritto in Componenti personalizzati.
Aggiungi servizio componente esterno
È possibile ospitare i componenti personalizzati sul proprio server Node.js e aggiungerli a una competenza come servizio di componenti esterni.
Suggerimento
È possibile utilizzare l'opzione di servizio esterno durante lo sviluppo, come descritto in Esegui servizio componente in un ambiente di sviluppo.Per aggiungere un servizio componente esterno, procedere come segue.
-
Dalla competenza, fare clic su Componenti
.
-
Fare clic su
.
-
Selezionare Esterna.
-
Nella casella di testo URL metadati, immettere l'URL che punta all'endpoint GET che restituisce la lista dei componenti.
-
Immettere il nome utente e la password del servizio.
-
Fare clic su Crea.
-
Assicurarsi che l'opzione Servizio abilitato sia attivata.
Dopo aver creato il servizio, è possibile richiamare i componenti personalizzati dal flusso della finestra di dialogo come descritto in Componenti personalizzati.
Aggiungi servizio componente Mobile Hub
È possibile ospitare i componenti personalizzati da Oracle Mobile Hub e aggiungerli a una competenza come servizio di componenti di Oracle Mobile Cloud. I componenti personalizzati ospitati su Mobile Hub possono essere integrati con i servizi remoti utilizzando connettori controllati da un backend di Mobile Hub e accedere alle API della piattaforma Mobile Hub.
Poiché il backend che ospita il codice personalizzato gestisce l'autenticazione per i componenti personalizzati, è necessario fare riferimento alla pagina Impostazioni del backend per ottenere le informazioni necessarie per completare la configurazione.
Per aggiungere un servizio componente per il backend Mobile Hub, effettuare le operazioni riportate di seguito.
-
Dalla competenza, fare clic su Componenti
.
-
Fare clic su
.
-
Selezionare Oracle Mobile Cloud.
-
Immettere l'identificativo univoco assegnato al backend Mobile Hub nel campo ID backend. Questo ID viene passato nell'intestazione REST di ogni chiamata dello skill.
-
Nel campo MetadataURL, immettere l'endpoint
/components
dall'API del codice personalizzato. Ad esempio,http://<server>:<port>/mobile/custom/ccPackage/components
. -
Scegliere Usa accesso anonimo se il servizio consente il login anonimo. Se si sceglie questa opzione, immettere la chiave anonima, che è una stringa univoca che consente all'applicazione di accedere a API anonime senza inviare un nome utente e una password codificati. La chiave anonima viene trasmessa al suo posto. È possibile trovare la chiave anonima nella pagina Impostazioni del backend in Mobile Hub. Potrebbe essere necessario fare clic su Mostra.
Se il servizio componente richiede un login (ovvero nessun accesso anonimo), immettere il nome utente e la password.
-
Se il servizio richiede parametri specifici, fare clic su Aggiungi intestazione HTTP, quindi definire le coppie chiave-valore per le intestazioni.
-
Fare clic su Crea.
-
Assicurarsi che l'opzione Servizio abilitato sia attivata.
Dopo aver creato il servizio, è possibile richiamare i componenti personalizzati dal flusso della finestra di dialogo come descritto in Componenti personalizzati.