Crea uno Slackbot controllato dal database
Questa esercitazione può comportare degli addebiti. Utilizza lo stimatore costi per generare una stima dei costi basata sul tuo utilizzo previsto.
In questa esercitazione, creerai un Slackbot che consente di ricercare e creare voci in un database IBM Db2 SaaS di backend. Slackbot è supportato dal servizio IBM® watsonx™ Assistant. Integrerai Slack e IBM® watsonx™ Assistant utilizzando un'integrazione Assistant. IBM Db2 SaaS viene reso disponibile per watsonx Assistant come estensione personalizzata.
L'integrazione Slack invia messaggi tra Slack e watsonx Assistant. Un'estensione personalizzata, scritta in Python e distribuita come applicazione Code Engine senza server, espone un'API REST rispetto al backend del database.
Obiettivi
- Crea un chatbot utilizzando watsonx Assistant che interagisce con un backend del database
- Collegare watsonx Assistant a Slack utilizzando un'integrazione
- Crea e distribuisci un'applicazione del database Python a Code Engine
- Accedi a un database IBM Db2 SaaS tramite un'estensione personalizzata watsonx Assistant
- L'utente interagisce con IBM® watsonx™ Assistant, tramite Slack o utilizzando un client di chat web
- Il chatbot utilizza un'estensione personalizzata con l'API REST distribuita come applicazione Python su Code Engine
- L'applicazione di estensione personalizzata richiama i dati e li inserisce in un database IBM Db2 SaaS
Prima di iniziare
Questa esercitazione richiede:
- la CLI IBM Cloud,
- Plugin Code Engine,
gitper clonare il repository di codice sorgente.jqto query JSON data.
Per evitare l'installazione di questi strumenti puoi utilizzare Cloud Shell dalla console IBM Cloud.
Troverai le istruzioni per scaricare e installare questi strumenti per il tuo ambiente operativo nella guida Introduzione alle esercitazioni.
Configura i servizi e distribuisci il back - end
In questa sezione si configureranno i servizi necessari e si distribuirà l'applicazione di backend. Tutto ciò può essere realizzato dalla CLI (command line interface) in un terminale.
-
Clonare il repositoryGitHub e navigare nella directory clonata:
git clone https://github.com/IBM-Cloud/slack-chatbot-database-watson cd slack-chatbot-database-watson -
Se non si è connessi, usare
ibmcloud loginoibmcloud login --ssoper accedere in modo interattivo. Assicuratevi di individuare la regione e il gruppo di risorse con cui lavorare. Viene utilizzato per creare i servizi e le azioni. Puoi elencare i tuoi gruppi di risorse disponibili utilizzandoibmcloud resource groups.ibmcloud target -r <region> -g <resource group>Utilizza
ibmcloud target -g defaultper passare al gruppo di risorse predefinito. -
Creare un'istanza IBM Db2 SaaS e chiamarla eventDB. Adatta la regione us-south alla tua regione, ad es. eu-de.
ibmcloud resource service-instance-create eventDB dashdb-for-transactions free us-southPuoi anche utilizzare un piano diverso da quello gratuito (lite). Il piano gratuito non è disponibile in tutte le ubicazioni. Attendere il provisioning del servizio. Per istruzioni, consultare l'output del comando precedente. È anche possibile eseguire il comando successivo per controllare lo stato:
ibmcloud resource service-instance eventDB -
Per accedere al servizio database dall'applicazione Code Engine in seguito, è necessaria l'autorizzazione appropriata. Pertanto, crea le credenziali del servizio ed etichettale slackbotkey:
ibmcloud resource service-key-create slackbotkey Manager --instance-name eventDB --output json > slackbotkey.jsonIl file slackbotkey.json contiene il file
service keydenominato ancheservice credentials. Questo file di testo chiaro contiene la password di gestione e le stringhe di connessione per l'istanza del servizio eventDB.L'output è memorizzato nel file
slackbotkey.jsone necessario in questo passo. Eseguire questo comando per estrarre l'URL di collegamento al database:jq -r '.credentials.connection.db2 | "ibm_db_sa://" + (.authentication.username + ":" + .authentication.password + "@" + .hosts[0].hostname + ":" + (.hosts[0].port | tostring) + "/" + .database + "?Security=SSL;")' slackbotkey.jsonVerrà indicato come $DB2_URI e può essere memorizzato in una variabile shell se supportato sulla workstation o sulla shell cloud ed esportato nel caso in cui si stia eseguendo l'applicazione localmente.
export DB2_URI=$(jq -r '.credentials.connection.db2 | "ibm_db_sa://" + (.authentication.username + ":" + .authentication.password + "@" + .hosts[0].hostname + ":" + (.hosts[0].port | tostring) + "/" + .database + "?Security=SSL;")' slackbotkey.json) echo $DB2_URIL'output deve avere il formato seguente:
ibm_db_sa://username:password@database-hostname:port/bludb?Security=SSL;e si trova nella variabile shell DB2_URI. -
Crea un'istanza del servizio watsonx Assistant. Utilizzate eventAssistant come nome e il piano Lite gratuito. Adatta us-south alla tua ubicazione.
ibmcloud resource service-instance-create eventAssistant conversation free us-south -
Distribuisci l'immagine del contenitore precostruito con l'estensione personalizzata come applicazione Code Engine. Innanzitutto, creare un progetto:
ibmcloud ce project create --name slackbotQuindi selezionare il progetto come attivo:
ibmcloud ce project select --name slackbotQuindi, distribuisci l'applicazione denominandola slackbot-backend. Sostituisci il valore per API_TOKEN (MY_SECRET). Utilizzare il proprio testo per MY_SECRET se si desidera ed effettuare sostituzioni in tutti gli step futuri. Viene utilizzato per proteggere le chiamate all'API REST.
ibmcloud ce app create --name slackbot-backend --image icr.io/solution-tutorials/tutorial-slack-chatbot-database:latest --min-scale 1 -e API_TOKEN=MY_SECRET -e DB2_URI="$DB2_URI"Prendere nota dell'URI riportato per l'applicazione. Vi si fa riferimento nei passaggi successivi come $APP_URL. È possibile utilizzare una variabile shell:
APP_URL=$(ibmcloud ce app get -n slackbot-backend --output json | jq -r .status.url) echo $APP_URLInvece di distribuire un'immagine del contenitore precostruita, puoi anche creare e distribuire la tua propria immagine dal codice fornito. È possibile modificare il comando di creazione per creare dall'origine:
ibmcloud ce app create --name slackbot-backend --build-source . --min-scale 1 -e API_TOKEN=MY_SECRET -e DB2_URI="$DB2_URI"utilizzandoDockerfiletrovato nel repository. Per ulteriori dettagli, vedi la documentazione Code Engine sulla distribuzione dell'applicazione dal codice sorgente locale. Poiché non stai usando l'immagine del contenitore pubblico, ma la tua, devi anche configurare un segreto del registro. -
Verifica la distribuzione chiamando un'API REST fornita dall'app per (ri) creare lo schema del database e inserire pochi record campione.
curl -X 'POST' "$APP_URL/database/recreate" -H 'accept: application/json' -H 'API_TOKEN: MY_SECRET'La richiesta precedente dovrebbe restituire un messaggio di errore che indica che manca la conferma. Ora riprovare con un parametro di query:
curl -X 'POST' "$APP_URL/database/recreate?confirmation=True" -H 'accept: application/json' -H 'API_TOKEN: MY_SECRET'La richiesta deve avere esito positivo e indicare che il database è stato ricreato. Tempo per un altro test:
curl -X 'GET' "$APP_URL/events" -H 'accept: application/json' -H 'API_TOKEN: MY_SECRET' -
Notare che l'ID progetto sarà richiesto in una fase futura.
ibmcloud ce app get -n slackbot-backend --output json | jq -r .metadata.namespace
Crea un assistente
In questa parte dell'esercitazione lavorerai con il servizio watsonx Assistant. Per prima cosa, crea un nuovo assistente. Quindi, crea l'estensione personalizzata e la aggiungi all'assistente. Successivamente, verranno create azioni e testate utilizzando l'anteprima Web. Infine, integri il chatbot con Slack ed esegui più test.
-
Nell'elenco delle risorse IBM Cloud apri la panoramica dei tuoi servizi. Individua l'istanza del servizio watsonx Assistant nella sezione AI / Machine Learning. Fare clic sulla voce per aprire i dettagli del servizio.
-
Fai clic su Launch Watson Assistant per andare allo strumento watsonx Assistant.
-
Nella finestra di dialogo di benvenuto, crea un nuovo assistente utilizzando slackbot come nome assistente, quindi fai clic su Avanti per avviare la personalizzazione.
-
Per la prima domanda sulla distribuzione scegliere Web.
-
Per le altre domande rispondi per il tuo ruolo o con Altro / Non sei sicuro in questo momento.
-
Fare clic su Avanti per l'opportunità di personalizzare l'interfaccia utente della chat, se lo si desidera.
-
Fare clic su Avanti e finalizzare facendo clic su Crea.
La nuova pagina include un tour guidato che potresti voler completare se sei nuovo a watsonx Assistant.
Aggiungere e configurare un'estensione personalizzata
Successivamente, aggiungerai e configurerai un'estensione personalizzata a watsonx Assistant e all'assistente appena creato.
- Nel dashboard in basso a sinistra, fai clic su Integrations, quindi su Build custom extension in Extensions.
- Nella finestra di dialogo a più fasi, fare clic su Avanti, quindi immettere events come Nome estensione e API per il database eventi come Descrizione estensione. Fai clic su Next.
- Seleziona e carica il file locale slackbot-openapi-spec.json, quindi fai clic su Avanti.
- L'ultimo passo consente di esaminare l'estensione con i server e operazioni inclusi. Al termine, fare clic su Fine.
- Torna alla pagina Integrazioni, prendi nota del nuovo tile events nella sezione Extensions. Fai clic su Aggiungi su tale tile per configurare l'estensione per l'assistente.
- La nuova finestra di dialogo inizia con una breve panoramica. Fare clic su Avanti per passare alla configurazione vera e propria. Nell'elenco a discesa per Tipo di autenticazione seleziona Auth chiave API e immetti la tua chiave API scelta (sostituzione MY_SECRET ).
- Per le Variabili server utilizza la tua regione di distribuzione ****, ** slackbot-backend come appname e il ** projectid Code Engine della tua applicazione. In seguito, l'URL generato deve corrispondere a quello della tua applicazione Code Engine. Una volta terminato, fare clic su Avanti per passare alla pagina di revisione, quindi su Fine e Chiudi per ritornare alla pagina Integrazioni.
Crea la prima azione
Innanzitutto, si sta per creare un'azione per richiamare le informazioni su un singolo evento identificato dal suo nome.
-
In alto a sinistra, fai clic su Azioni e sulla pagina di benvenuto in Crea azione.
-
Fare clic sul riquadro Avvia da zero.
-
Nella finestra di dialogo Nuova azione, immettere Mostra dettagli evento come esempio e fare clic su Salva.
-
La schermata successiva mostra l'editor dei passi per l'azione con il Passo 1 aperto. In Assistant dice type What is the event name?. Quindi, per Definisci risposta cliente selezionare Testo libero come opzione. Lasciare And quindi come Continua al passo successivo.
-
Fare clic su Nuovo passo in basso a sinistra per aggiungere il Passo 2. Lasciare invariate le prime parti (Assistant dice, Define customer response), ma in And then selezionare Use an extension. Nei menu a discesa selezionare l'estensione events e l'operazione Event record by name. Successivamente, Parametri mostrerà le immissioni possibili. Utilizzando il menu a discesa, assegnare per Imposta nome breve al valore **Variabile passo azione > 1. Qual è il nome dell'evento Si riferisce all'input del cliente dal passo precedente. Fare clic su Applica per terminare questa operazione.
-
Aggiungere un Nuovo passo. Nella parte superiore modificare la selezione in modo che il Passo 3 venga preso con condizione. In Condizioni e Se selezionare 2 Ran correttamente. Fa riferimento a un risultato dell'utilizzo dell'estensione nel passo 2.
-
In Assistants dice, puoi comporre la risposta con i dettagli dell'evento facendo riferimento ai campi di output della chiamata API all'applicazione distribuita. Utilizzare I got questi dettagli dell'evento: seguito dal tasto
Enterper arrivare alla riga successiva. L'editor supporta il formato Markdown. Pertanto, utilizzare la chiave-per creare un elenco puntato. Aggiungere una voce di elenco con Nome:, quindi fare clic su Inserisci una variabile. Dall'elenco a discesa selezionare 2 body.shortname. Utilizzare nuovamente il tastoEnterper raggiungere una nuova riga con una voce di elenco. Aggiungi Location: con 2 body.location dal menu a discesa delle variabili. Ripetere per Begins, Ends e Contact. Una volta terminato, impostare And quindi su End the action. -
Per gestire gli errori nell'estensione, creare un'altra fase con una condizione. Ora lascia che il passo reagisca al fatto che 2 Ran sia false. Lasciare che l'assistente dica Spiacente, si è verificato un problema e quindi terminare nuovamente l'azione.
Per semplicità, non vengono gestiti tutti gli errori e le condizioni come i risultati vuoti.
-
Fare clic sull'icona Salva in alto a destra, quindi sulla X accanto per chiudere l'editor dei passi.
-
In basso a destra, selezionare Anteprima per verificare la finestra di dialogo.
-
Nella conversazione, immettere show me event details e inoltrare. Il bot deve rispondere Qual è il nome dell'evento?. Ora digita Think e invia. Poiché l'applicazione di backend utilizza una ricerca con caratteri jolly, dovrebbe trovare l'evento di esempio con il nome Think 2022 e restituire i dettagli (vedere l'immagine riportata di seguito).
È possibile fare clic su Ispeziona per visualizzare i dettagli su come viene utilizzata l'estensione personalizzata. È possibile controllare le variabili di input e output e come viene richiamata la funzione API dell'estensione.
Azione per raccogliere i dati e inserire un nuovo record
Simile al richiamo di un record, è possibile raccogliere l'input su un evento e aggiungere tali dati tramite l'estensione personalizzata.
-
Passa a Azioni e Creato da te. Fare clic su Nuova azione.
-
Fare clic sul riquadro Avvia da zero.
-
Nella finestra di dialogo Nuova azione, immettere Aggiungi nuovo evento e Salva.
-
Utilizzare Come si desidera denominare l'evento? per Assistant dice. Il cliente risponde nuovamente con Testo libero.
-
Aggiungere un Nuovo passo e fare in modo che l'assistente dica Dov' è l'evento?. Ancora una volta, il cliente può rispondere con Testo libero.
-
Aggiungere un altro passo e chiedere Quando inizia l'evento?, ma utilizzare Data per Definisci risposta cliente.
-
Ripetere lo stesso ma con Quando termina l'evento?.
-
Infine, in un nuovo passo, chiedi Qual è l'URL (indirizzo web) dell'evento? e lascia che il cliente risponda con testo libero.
-
Ora, per confermare l'input, creare un nuovo passo. Utilizzare È corretto? e, come elenco puntato, visualizzare i dati raccolti. Aggiungere una voce per Nome, Ubicazione, Inizia, Fine e Contatto e utilizzare le variabili Azione relative ai passi di input per i dati (vedere l'immagine riportata di seguito). Utilizzare Conferma come tipo di risposta cliente.
Fase di conferma -
Aggiungere una nuova fase con la precedente condizione No. L'assistente potrebbe dire Ok, iniziamo. Impostare E quindi su Richiedi passi precedenti e selezionare tutti i passi precedenti.
-
In un nuovo passo, che dovrebbe essere il passo 8, rispondere alla conferma Sì. In E quindi selezionare Utilizza un'estensione. Configurare l'estensione eventi con Inserisci un nuovo record di eventi come operazione. Associare i parametri alle variabili Azione per i passi, ad esempio, shortname a 1. Come volete intitolare l'evento
-
Creare un nuovo passo con una condizione 8 Ran true. Lasciare che l'Assistente dica È stato creato un nuovo record con ID VARIABLE. Per VARIABLE selezionare 8 body.eid da events (Passo 8). Terminare l'azione in And then.
-
Creare un nuovo passo con la condizione per 8 Ran riuscito false. Utilizzare un metodo simile a Sembra che si sia verificato un problema durante la creazione del nuovo record di evento per consentire all'assistente di indicare e terminare l'azione in E poi. Salvare e chiudere l'azione con le icona in alto a destra.
-
Salvare l'azione e quindi verificare la nuova azione facendo clic su Anteprima sulla sinistra e utilizzando la webchat. Immettere Aggiungi nuovo evento e inoltrare. Quando richiesto dal bot, immetti my conference come nome, home office come ubicazione, scegli date di inizio e fine e utilizza http://localhost come URL. Successivamente, confermare che i dati siano corretti.
Quando si crea un chatbot, è possibile pubblicare un chatbot. È il rilascio controllato di una versione che consente il rollback delle modifiche e di continuare con lo sviluppo senza impattare il chatbot interagendo con i veri clienti.
Integrazione con Slack
Ora, integrerai il chatbot con Slack.
- In basso a sinistra, fare clic su Integrazioni.
- Nella panoramica delle integrazioni, nella sezione Canali, individua Slack e fai clic su Aggiungi.
- Seguite le istruzioni passo passo per integrare l'ambiente Draft del vostro chatbot con Slack. Ulteriori informazioni su di esso sono disponibili nell'argomento Integrazione con Slack.
- Una volta terminato, apri il tuo spazio di lavoro Slack. Inizia una chat diretta con il bot e di' show me event details. Quindi, in modo simile al precedente, rispondere con Think quando viene richiesto un nome evento.
Rimuovi le risorse
Per eliminare le risorse per questa esercitazione, vai a IBM Cloud Resource List. Individua le istanze del servizio di watsonx Assistant e IBM Db2 SaaS ed eliminale. Allo stesso modo, individua il progetto Code Engine ed eliminalo.
A seconda della risorsa potrebbe non essere eliminata immediatamente, ma conservata (per impostazione predefinita per 7 giorni). È possibile recuperare la risorsa eliminandola in modo permanente o ripristinarla entro il periodo di conservazione. Consultare questo documento su come utilizzare il recupero delle risorse.
Contenuto correlato
Ecco ulteriori risorse sugli argomenti trattati in questa esercitazione.