Condividi tramite


Libreria di dialoghi

SI APPLICA A: SDK v4

I dialoghi sono un concetto cMicrosoft Entral nell'SDK, che consente di gestire una conversazione a esecuzione prolungata con l'utente. Una finestra di dialogo esegue un'attività che può rappresentare parte di o un thread di conversazione completo. Può estendersi su un solo turno o molti e può durare un breve o lungo periodo di tempo.

Questo articolo descrive le classi e le funzionalità di base della libreria di dialoghi.

  • È necessario avere familiarità con il funzionamento dei bot (incluso quello che è un turno) e con la gestione dello stato.
  • Ogni dialogo rappresenta un'attività di conversazione che può essere eseguita fino al completamento e restituire informazioni raccolte.
  • Ogni dialogo rappresenta un'unità di base del flusso di controllo: può iniziare, continuare e terminare; pausa e ripresa; o essere annullata.
  • I dialoghi sono simili a un metodo o a una funzione in un linguaggio di programmazione. È possibile passare argomenti o parametri all'avvio di una finestra di dialogo e successivamente il dialogo può produrre un valore restituito al termine.

Suggerimento

Se non si ha familiarità con lo sviluppo di bot con Bot Framework o si crea una nuova esperienza di conversazione, iniziare con Bot Framework Composer. Per i bot SDK-first esistenti, non creati in Composer, è consigliabile esporre il bot come competenza e usare Composer per lo sviluppo di bot futuri.

Stato del dialogo

I dialoghi possono implementare una conversazione a più turni e, di conseguenza, si basano sullo stato persistente tra turni. Senza stato nei dialoghi, il bot non saprebbe dove si trovasse nella conversazione o quali informazioni aveva già raccolto.

Per mantenere la posizione di un dialogo nella conversazione, è necessario recuperare e salvare lo stato del dialogo in memoria a ogni turno. Questa operazione viene gestita tramite una funzione di accesso alle proprietà dello stato del dialogo definita nello stato della conversazione del bot. Questo stato del dialogo gestisce le informazioni per tutti i dialoghi attivi e gli elementi figlio dei dialoghi attivi. In questo modo il bot può scegliere dove è rimasto per ultimo e gestire vari modelli di conversazione.

In fase di esecuzione, la proprietà dello stato del dialogo include informazioni sulla posizione del dialogo nel relativo processo logico, incluse le informazioni raccolte internamente sotto forma di oggetto istanza del dialogo. Anche in questo caso, questo deve essere letto nel bot e salvato in memoria a ogni turno.

Infrastruttura della finestra di dialogo

Insieme a vari tipi di dialoghi, le classi seguenti sono coinvolte nella progettazione e nel controllo delle conversazioni. Anche se in genere non è necessario interagire direttamente con queste classi, essere consapevoli di essi e il loro scopo è utile quando si progettano dialoghi per un bot.

Classe Descrizione
Set di dialoghi Definisce una raccolta di dialoghi che possono fare riferimento tra loro e lavorare in concerto.
Contesto del dialogo Contiene informazioni su tutti i dialoghi attivi.
Istanza del dialogo Contiene informazioni su un dialogo attivo.
Risultato turno finestra di dialogo Contiene informazioni sullo stato da una finestra di dialogo attiva o attiva di recente. Se la finestra di dialogo attiva è terminata, contiene il relativo valore restituito.

Tipi di dialogo

La libreria dialogs fornisce alcuni tipi di dialoghi per semplificare la gestione delle conversazioni del bot. Alcuni di questi tipi sono descritti in modo più dettagliato più avanti in questo articolo.

Type Descrizione
finestra di dialogo Classe di base per tutti i dialoghi.
finestra di dialogo contenitore Classe di base per tutti i dialoghi del contenitore , ad esempio dialoghi adattivi e componenti. Mantiene un set di dialoghi interno e consente di trattare una raccolta di dialoghi come un'unità.
finestra di dialogo componente Tipo generico di finestra di dialogo contenitore che incapsula un set di dialoghi, consentendo il riutilizzo del set nel suo complesso. All'avvio di un dialogo componente, inizia con un dialogo designato nella relativa raccolta. Al termine del processo interno, termina la finestra di dialogo del componente.
Finestra di dialogo a cascata Definisce una sequenza di passaggi, consentendo al bot di guidare un utente attraverso un processo lineare. In genere sono progettati per funzionare all'interno del contesto di un dialogo componente.
finestre di dialogo di richiesta Chiedere all'utente l'input e restituire il risultato. Un prompt verrà ripetuto fino a quando non ottiene un input valido o viene annullato. Sono progettati per lavorare con dialoghi a cascata.
finestra di dialogo adattiva Tipo di finestra di dialogo contenitore usata da Composer per fornire flussi di conversazione più naturali. Non destinato a essere usato direttamente in un bot SDK-first.
dialoghi di azione Tipo di dialogo che supporta l'implementazione di azioni in Composer. Non destinato a essere usato direttamente in un bot SDK-first.
finestre di dialogo di input Tipo di dialogo che supporta l'implementazione di azioni di input in Composer. Non destinato a essere usato direttamente in un bot SDK-first.
finestra di dialogo di competenza Automatizza la gestione di uno o più bot di competenze da un consumer di competenze. Composer supporta direttamente le competenze come azioni.
Finestra di dialogo QnA Maker Automatizza l'accesso a una knowledge base di QnA Maker. Questa finestra di dialogo è progettata per funzionare anche come azione all'interno di Composer.

Importante

I dialoghi adattivi sono stati aggiunti per la prima volta nella versione 4.9 di C# SDK. I dialoghi adattivi supportano Bot Framework Composer e non devono essere usati direttamente in un bot SDK-first.

Modelli di dialogo

Esistono due modelli principali per l'avvio e la gestione dei dialoghi da un bot.

  1. È consigliabile usare Bot Framework Composer per creare dialoghi di conversazione, per trarre vantaggio da funzionalità conversazionali più naturali e senza flusso. Per altre informazioni, vedere Introduzione a Bot Framework Composer. Questi bot possono comunque essere estesi con il codice, se necessario.
  2. Sviluppare il bot in uno dei linguaggi SDK e usare il metodo di estensione di esecuzione del dialogo radice. Per informazioni sull'uso del metodo run con un dialogo componente, vedere informazioni sui dialoghi componente e a cascata e su come implementare il flusso di conversazione sequenziale.

Stack di dialoghi

Un contesto di dialogo contiene informazioni su tutti i dialoghi attivi e include uno stack di dialoghi, che funge da stack di chiamate per tutti i dialoghi attivi. Ogni finestra di dialogo contenitore ha un set interno di dialoghi che controlla e quindi ogni dialogo contenitore attivo introduce un contesto di dialogo interno e uno stack di dialoghi come parte del relativo stato.

Anche se non si accede direttamente allo stack, comprendere che esiste e la relativa funzione consentirà di comprendere il funzionamento di vari aspetti della libreria dialogs.

Finestre di dialogo contenitore

Una finestra di dialogo contenitore può far parte di un set di dialoghi più ampio. Ogni contenitore ha un set di dialoghi interno gestito anche.

  • Ogni set di dialoghi crea un ambito per la risoluzione degli ID finestra di dialogo.

  • L'SDK implementa attualmente due tipi di dialoghi del contenitore: dialoghi componente e dialoghi adattivi.

    La struttura concettuale dei due è piuttosto diversa. Tuttavia, un bot Composer può usare entrambi.

ID finestra di dialogo

Quando si aggiunge una finestra di dialogo a un set di dialoghi, viene assegnato un ID univoco all'interno di tale set. I dialoghi all'interno di un set fanno riferimento tra loro in base ai relativi ID.

Quando un dialogo fa riferimento a un altro dialogo in fase di esecuzione, lo fa in base all'ID del dialogo. Il contesto del dialogo tenta di risolvere l'ID in base agli altri dialoghi nel set di dialoghi immediato. Se non esiste alcuna corrispondenza, cerca una corrispondenza nel set di dialoghi contenitore o esterno e così via. Se non viene trovata alcuna corrispondenza, viene generata un'eccezione o un errore.

Dialoghi componenti

I dialoghi dei componenti usano un modello di sequenza per le conversazioni e ogni dialogo nel contenitore è responsabile della chiamata di altri dialoghi nel contenitore. Quando lo stack interno del dialogo del componente è vuoto, termina il componente.

Prendere in considerazione l'uso di dialoghi a cascata e componenti se il bot ha un flusso di controllo relativamente semplice che non richiede un flusso di conversazione più dinamico.

Informazioni sui dialoghi componente e a cascata descrivono in modo più dettagliato i dialoghi componenti, a cascata e prompt.

Altri dialoghi

I dialoghi QnA Maker e competenza possono essere usati come dialoghi autonomi o come parte di una raccolta di dialoghi in un contenitore.

Finestra di dialogo QnA Maker

Nota

Azure AI QnA Maker verrà ritirato il 31 marzo 2025. A partire dal 1° ottobre 2022, non potrai creare nuove risorse o Knowledge Base di QnA Maker. Una versione più recente della funzionalità di domande e risposte è ora disponibile come parte del linguaggio di intelligenza artificiale di Azure.

La risposta alle domande personalizzate, una funzionalità del linguaggio di intelligenza artificiale di Azure, è la versione aggiornata del servizio QnA Maker. Per altre informazioni sul supporto di domande e risposte in Bot Framework SDK, vedere Comprensione del linguaggio naturale.

La finestra di dialogo QnA Maker accede a una knowledge base di QnA Maker e supporta le funzionalità di completamento e apprendimento attivo di QnA Maker.

  • Le richieste di completamento, note anche come prompt a più turni, consentono a una knowledge base di chiedere all'utente altre informazioni prima di rispondere alla domanda.
  • I suggerimenti per l'apprendimento attivo consentono alla Knowledge Base di migliorare nel tempo. Il dialogo QnA Maker supporta il feedback esplicito per la funzionalità di apprendimento attivo.

Per altre informazioni, vedere:

Finestra di dialogo competenza

Un dialogo di competenza accede e gestisce una o più competenze. Il dialogo di competenza pubblica attività dal bot principale al bot di competenza e restituisce le risposte della competenza all'utente.

Per altre informazioni, vedere:

Passaggi successivi