Informazioni sui consumer di competenze
SI APPLICA A: SDK v4
Un consumer di competenze è un bot che può chiamare una o più competenze. Per quanto riguarda le competenze, un bot radice è un bot rivolto all'utente che è anche un consumer di competenze.
Dal punto di vista dell'utente, il bot radice è il bot con cui interagisce. Dal punto di vista della competenza, il consumer di competenze è il canale usato per comunicare con l'utente. Per altre informazioni, vedere la panoramica delle competenze.
In quanto consumer di competenze, un bot radice include logica aggiuntiva per gestire il traffico tra se stesso e una competenza:
- Informazioni di configurazione per ogni competenza usata dalla radice.
- Factory dell'ID conversazione che consente alla radice di passare da una conversazione all'altra con l'utente e quella che ha con una competenza.
- Un client di competenze in grado di creare pacchetti e inoltrare attività a un bot di competenza.
- Un gestore di competenze in grado di ricevere richieste e decomprimere le attività da un bot di competenza.
Gestione delle competenze
Per gestire l'avvio e consentire l'esecuzione di una singola competenza fino al completamento, sono necessarie alcune aggiunte al consumer di competenze. Sono possibili scenari più complessi, con più competenze o thread di conversazione.
Un consumer di competenze implementa almeno due endpoint HTTP:
- Un endpoint di messaggistica riceve attività dall'utente o dal canale. Si tratta del solito endpoint di messaggistica implementato da tutti i bot.
- Endpoint host competenza per la ricezione di attività da una competenza. Questa operazione funge da URL di callback, l'URL del servizio a cui risponde la competenza. Il consumer di competenze deve associare il codice che riceve la richiesta del metodo HTTP dalla competenza con un gestore di competenze.
Descrizioni delle competenze
Per ogni competenza, aggiungere un oggetto competenza Bot Framework al file di configurazione del consumer di competenze. Ogni oggetto includerà un ID, un ID app e un endpoint per la competenza.
Proprietà | Descrizione |
---|---|
ID | ID o chiave della competenza, specifico del consumer di competenze. |
ID app | appId assegnato alla risorsa bot quando la competenza è stata registrata in Azure. |
Endpoint della competenza | Endpoint di messaggistica per la competenza. Si tratta dell'URL che il consumer userà per comunicare con la competenza. |
Client di competenze e gestore di competenze
Il consumer di competenze usa un client di competenze per inviare attività a una competenza. Il client:
- Accetta un'attività da inviare alla competenza, specificata da un utente o generata dal consumer.
- Imposta l'URL del servizio sull'attività inviata alla competenza all'endpoint host della competenza del consumer.
- Sostituisce il riferimento originale alla conversazione con uno per la conversazione tra consumer e competenza.
- Aggiunge un token di autenticazione da bot a bot.
- Invia l'attività aggiornata alla competenza.
Il consumer di competenze usa un gestore di competenze per ricevere attività da una competenza. Il gestore:
- Gestisce i metodi dell'API REST del servizio del canale.
- Impone l'autenticazione e la convalida delle attestazioni.
- Recupera il riferimento alla conversazione originale.
- Genera un'attività per l'adapter del consumer. Questa attività segnalerà che la competenza è stata completata o è un'attività da inoltrare all'utente.
Gestire direttamente una competenza
Per tenere traccia delle competenze attive, è necessario aggiungere la logica al consumer di competenze. Spetta al consumer come gestire le competenze in generale, se può mantenere più competenze attive in parallelo o meno e così via. Gli scenari specifici da prendere in considerazione includono:
- Avvio di una nuova conversazione tra consumer e competenza Questa operazione verrà associata a una conversazione specifica dell'utente consumer.
- Per passare parametri a una competenza, impostare sulla competenza la proprietà value nell'attività iniziale.
- Continuazione di una conversazione esistente tra consumer e competenza.
- Riconoscimento di un'attività
endOfConversation
inviata dalla competenza come indicazione della fine di una conversazione tra consumer e competenza.- Per recuperare qualsiasi valore restituito da una competenza, controllare la proprietà value dell'attività.
- Per verificare il motivo per cui la competenza viene terminata, controllare il parametro code dell'attività, che potrebbe indicare che si è verificato un errore nella competenza.
- Annullamento di una competenza da parte del consumer in seguito all'invio di un'attività
endOfConversation
alla competenza.
Vedere la procedura per implementare un consumer di competenze per un consumer che gestisce una competenza direttamente.
Gestire una competenza usando un dialogo di competenza
Se si usa la libreria di dialoghi, è possibile usare un dialogo di competenza per gestire una competenza. Se il dialogo di competenza è il dialogo attivo, inoltrerà le attività alla competenza associata.
- Quando si crea il dialogo di competenza, usare il parametro options del dialogo per specificare tutte le informazioni necessarie per consentire al dialogo di gestire la competenza, ad esempio l'ID app e l'URL di callback del consumer, la factory dell'ID conversazione da usare, le proprietà della competenza e così via.
- Se si vuole gestire più di una competenza come dialogo, è necessario creare un dialogo di competenza separato per ogni competenza.
- Spesso si aggiungerà il dialogo di competenza a un dialogo componente.
- Per iniziare il dialogo di competenza, usare il metodo begin del contesto del dialogo e specificare l'ID del dialogo di competenza. Usare il parametro options per specificare l'attività che il consumer invierà per prima alla competenza.
- È possibile annullare o interrompere il dialogo di competenza come qualsiasi altro dialogo. Per un esempio, vedere Gestire le interruzioni dell'utente.
Vedere come usare un dialogo per una competenza per un consumer che usa un dialogo per gestire una competenza.
Uso di una modalità di recapito delle risposte previste
I bot e le competenze usano REST e JSON standard del settore su HTTPS per la comunicazione. Il normale flusso di elaborazione delle attività inizia quando il bot radice riceve un post da un canale nell'endpoint di messaggistica. Il bot radice invia quindi l'attività alla competenza per l'elaborazione. Le risposte dalla competenza vengono inviate all'endpoint host della competenza del bot radice, non all'endpoint di messaggistica. Infine, le risposte vengono elaborate ulteriormente o pubblicate al canale dal bot radice. Questo flusso normale può essere modificato modificando la modalità di recapito dell'attività inviata alla competenza. Se la modalità di recapito è impostata su "ExpectReplies", la competenza non esegue il postback all'endpoint host della competenza. Tutte le attività di risposta vengono invece serializzate nel corpo della risposta. Il bot radice esegue quindi l'iterazione di queste attività, elaborandoli in modo simile a come sarebbero stati elaborati dall'endpoint host della competenza.
Per informazioni, vedere la modalità di recapito nella specifica dell'attività.