TurnContext class
Fornisce il contesto per un turno di un bot.
Commenti
Il contesto fornisce informazioni necessarie per elaborare un'attività in ingresso. L'oggetto context viene creato da un BotAdapter e persiste per la lunghezza del turno.
Costruttori
Turn |
Crea una nuova istanza della classe TurnContext . |
Turn |
Crea una nuova istanza della classe TurnContext . |
Proprietà
activity | Ottiene l'attività associata a questo turno. |
adapter | Ottiene l'adattatore bot che ha creato questo oggetto contesto. |
buffered |
Elenco di attività da inviare quando |
locale | Ottiene le impostazioni locali archiviate in turnState. Imposta le impostazioni locali archiviate in turnState. |
responded | Indica se il bot ha risposto all'utente. Imposta il flag di risposta nel contesto di turno corrente. |
turn |
Ottiene i servizi registrati in questo oggetto contesto. |
Metodi
apply |
Aggiornamenti un'attività con le informazioni di recapito da un riferimento di conversazione esistente. |
delete |
Elimina in modo asincrono un'attività inviata in precedenza. |
get |
Copia le informazioni di riferimento sulla conversazione da un'attività. |
get |
Ottiene tutte le entità at-mention incluse in un'attività. |
get |
Copia le informazioni di riferimento della conversazione da una risposta di risorsa per un'attività inviata. |
on |
Aggiunge un gestore di risposta per le operazioni di eliminazione dell'attività. |
on |
Aggiunge un gestore di risposta per le operazioni di invio dell'attività. |
on |
Aggiunge un gestore di risposta per le operazioni di attività di aggiornamento. |
remove |
Rimuove le menzioni per un ID specificato dal testo di un'attività e restituisce il testo aggiornato. Usare con cautela; questa funzione modifica la proprietà text dell'attività. |
remove |
Rimuove le menzioni per il destinatario dell'attività dal testo di un'attività e restituisce il testo aggiornato. Usare con cautela; questa funzione modifica la proprietà text dell'attività. |
send |
Invia in modo asincrono un set di attività al mittente dell'attività in ingresso. |
send |
Invia in modo asincrono un'attività al mittente dell'attività in ingresso. |
send |
Invia in modo asincrono un'attività al mittente dell'attività in ingresso. |
update |
Aggiorna in modo asincrono un'attività inviata in precedenza. |
Dettagli costruttore
TurnContext(BotAdapter, Partial<Activity>)
Crea una nuova istanza della classe TurnContext .
new TurnContext(adapterOrContext: BotAdapter, request: Partial<Activity>)
Parametri
- adapterOrContext
- BotAdapter
Adattatore che crea il contesto.
- request
-
Partial<Activity>
Attività in ingresso per il turno.
TurnContext(TurnContext)
Crea una nuova istanza della classe TurnContext .
new TurnContext(adapterOrContext: TurnContext)
Parametri
- adapterOrContext
- TurnContext
Adattatore che crea il contesto.
Dettagli proprietà
activity
Ottiene l'attività associata a questo turno.
Activity activity
Valore della proprietà
Activity
Attività associata a questo turno.
Commenti
In questo esempio viene illustrato come ottenere l'espressione tagliata dagli utenti dall'attività:
const utterance = (context.activity.text || '').trim();
adapter
Ottiene l'adattatore bot che ha creato questo oggetto contesto.
BotAdapter adapter
Valore della proprietà
Scheda bot che ha creato questo oggetto contesto.
bufferedReplyActivities
Elenco di attività da inviare quando context.activity.deliveryMode == 'expectReplies'
.
bufferedReplyActivities: Partial<Activity>[]
Valore della proprietà
Partial<Activity>[]
locale
Ottiene le impostazioni locali archiviate in turnState. Imposta le impostazioni locali archiviate in turnState.
string | undefined locale
Valore della proprietà
string | undefined
Le impostazioni locali archiviate in turnState.
responded
Indica se il bot ha risposto all'utente. Imposta il flag di risposta nel contesto di turno corrente.
boolean responded
Valore della proprietà
boolean
True se almeno una risposta è stata inviata per il turno corrente; in caso contrario, false.
Commenti
true se almeno una risposta è stata inviata per il turno corrente; in caso contrario, false. Usare questa operazione per determinare se il bot deve eseguire la logica di fallback dopo altre normali elaborazioni.
Le attività di traccia non impostano questo flag.
ad esempio:
await routeActivity(context);
if (!context.responded) {
await context.sendActivity(`I'm sorry. I didn't understand.`);
}
turnState
Ottiene i servizi registrati in questo oggetto contesto.
TurnContextStateCollection turnState
Valore della proprietà
I servizi registrati in questo oggetto di contesto.
Commenti
Middleware, altri componenti e servizi in genere useranno questa funzionalità per memorizzare nella cache le informazioni che potrebbero essere richieste da un bot più volte durante un turno. È possibile usare questa cache per passare informazioni tra i componenti del bot.
Ad esempio:
const cartKey = Symbol();
const cart = await loadUsersShoppingCart(context);
context.turnState.set(cartKey, cart);
Suggerimento
Quando si crea middleware o un componente di terze parti, usare un simbolo univoco per la chiave della cache per evitare collisioni di denominazione dello stato con il bot o altri componenti o middleware.
Dettagli metodo
applyConversationReference(Partial<Activity>, Partial<ConversationReference>, boolean)
Aggiornamenti un'attività con le informazioni di recapito da un riferimento di conversazione esistente.
static function applyConversationReference(activity: Partial<Activity>, reference: Partial<ConversationReference>, isIncoming?: boolean): Partial<Activity>
Parametri
- activity
-
Partial<Activity>
Attività da aggiornare.
- reference
-
Partial<ConversationReference>
Riferimento di conversazione da cui copiare le informazioni di recapito.
- isIncoming
-
boolean
Facoltativa.
true
per considerare l'attività come attività in ingresso, in cui il bot è il destinatario; in caso contrario, false
. Il valore predefinito è false
e l'attività mostrerà il bot come mittente.
Restituisce
Partial<Activity>
Questa attività, aggiornata con le informazioni di recapito.
Commenti
Chiamare il metodo getConversationReference su un'attività in ingresso per ottenere un riferimento di conversazione che è quindi possibile usare per aggiornare un'attività in uscita con le informazioni di recapito corrette.
deleteActivity(string | Partial<ConversationReference>)
Elimina in modo asincrono un'attività inviata in precedenza.
function deleteActivity(idOrReference: string | Partial<ConversationReference>): Promise<void>
Parametri
- idOrReference
-
string | Partial<ConversationReference>
Informazioni di riferimento sull'ID o sulla conversazione per l'attività da eliminare.
Restituisce
Promise<void>
Promessa che rappresenta l'operazione asincrona.
Commenti
Se viene specificato un ID, il riferimento di conversazione per la richiesta corrente viene usato per ottenere il resto delle informazioni necessarie.
Ad esempio:
const matched = /approve (.*)/i.exec(context.activity.text);
if (matched) {
const savedId = await approveExpenseReport(matched[1]);
await context.deleteActivity(savedId);
}
Vedere anche
getConversationReference(Partial<Activity>)
Copia le informazioni di riferimento sulla conversazione da un'attività.
static function getConversationReference(activity: Partial<Activity>): Partial<ConversationReference>
Parametri
- activity
-
Partial<Activity>
Attività da cui ottenere le informazioni.
Restituisce
Partial<ConversationReference>
Riferimento di conversazione per la conversazione che contiene questa attività.
Commenti
È possibile salvare il riferimento alla conversazione come oggetto JSON e usarlo in un secondo momento per inviare un messaggio proattivo all'utente.
Ad esempio:
const reference = TurnContext.getConversationReference(context.request);
Vedere anche
getMentions(Partial<Activity>)
Ottiene tutte le entità at-mention incluse in un'attività.
static function getMentions(activity: Partial<Activity>): Mention[]
Parametri
- activity
-
Partial<Activity>
Attività.
Restituisce
Mention[]
Tutte le entità at-mention incluse in un'attività.
Commenti
La proprietà entities dell'attività contiene un elenco semplice di oggetti di metadati relativi a questa attività e può contenere entità di menzione . Questo metodo restituisce tutte queste entità per una determinata attività.
Ad esempio:
const mentions = TurnContext.getMentions(turnContext.request);
getReplyConversationReference(Partial<Activity>, ResourceResponse)
Copia le informazioni di riferimento della conversazione da una risposta di risorsa per un'attività inviata.
static function getReplyConversationReference(activity: Partial<Activity>, reply: ResourceResponse): Partial<ConversationReference>
Parametri
- activity
-
Partial<Activity>
Attività inviata.
- reply
-
ResourceResponse
Risposta della risorsa per l'attività, restituita dal metodo sendActivity o sendActivities .
Restituisce
Partial<ConversationReference>
ConversationReference che può essere archiviato e usato in un secondo momento per eliminare o aggiornare l'attività.
Commenti
È possibile salvare il riferimento alla conversazione come oggetto JSON e usarlo in un secondo momento per aggiornare o eliminare il messaggio.
Ad esempio:
var reply = await context.sendActivity('Hi');
var reference = TurnContext.getReplyConversationReference(context.activity, reply);
Vedere anche
onDeleteActivity(DeleteActivityHandler)
Aggiunge un gestore di risposta per le operazioni di eliminazione dell'attività.
function onDeleteActivity(handler: DeleteActivityHandler): this
Parametri
- handler
- DeleteActivityHandler
Gestore da aggiungere all'oggetto context.
Restituisce
this
Oggetto contesto aggiornato.
Commenti
Questo metodo restituisce un riferimento all'oggetto contesto del turno.
Quando viene chiamato il metodo deleteActivity , i gestori registrati vengono chiamati nell'ordine in cui sono stati aggiunti all'oggetto contesto prima dell'eliminazione dell'attività.
In questo esempio viene illustrato come ascoltare e registrare le eliminazioni delle attività.
context.onDeleteActivity(async (ctx, reference, next) => {
// Delete activity
await next();
// Log delete
logDelete(activity);
});
onSendActivities(SendActivitiesHandler)
Aggiunge un gestore di risposta per le operazioni di invio dell'attività.
function onSendActivities(handler: SendActivitiesHandler): this
Parametri
- handler
- SendActivitiesHandler
Gestore da aggiungere all'oggetto context.
Restituisce
this
Oggetto contesto aggiornato.
Commenti
Questo metodo restituisce un riferimento all'oggetto contesto di turno.
Quando viene chiamato il metodo sendActivity o sendActivities , i gestori registrati vengono chiamati nell'ordine in cui sono stati aggiunti all'oggetto contesto prima dell'invio delle attività.
In questo esempio viene illustrato come ascoltare e registrare le attività in uscita message
.
context.onSendActivities(async (ctx, activities, next) => {
// Log activities before sending them.
activities.filter(a => a.type === 'message').forEach(a => logSend(a));
// Allow the send process to continue.
next();
});
onUpdateActivity(UpdateActivityHandler)
Aggiunge un gestore di risposta per le operazioni di attività di aggiornamento.
function onUpdateActivity(handler: UpdateActivityHandler): this
Parametri
- handler
- UpdateActivityHandler
Gestore da aggiungere all'oggetto context.
Restituisce
this
Oggetto contesto aggiornato.
Commenti
Questo metodo restituisce un riferimento all'oggetto contesto di turno.
Quando viene chiamato il metodo UpdateActivity , i gestori registrati vengono chiamati nell'ordine in cui sono stati aggiunti all'oggetto contesto prima dell'aggiornamento dell'attività.
In questo esempio viene illustrato come ascoltare e registrare gli aggiornamenti delle attività.
context.onUpdateActivity(async (ctx, activity, next) => {
// Replace activity
await next();
// Log update
logUpdate(activity);
});
removeMentionText(Partial<Activity>, string)
Rimuove le menzioni per un ID specificato dal testo di un'attività e restituisce il testo aggiornato. Usare con cautela; questa funzione modifica la proprietà text dell'attività.
static function removeMentionText(activity: Partial<Activity>, id: string): string
Parametri
- activity
-
Partial<Activity>
Attività da cui rimuovere le menzioni.
- id
-
string
ID dell'utente o del bot da rimuovere alle menzioni.
Restituisce
string
Testo dell'attività aggiornata.
Commenti
Alcuni canali, ad esempio Microsoft Teams, aggiungono alle menzioni al testo di un'attività di messaggio.
Usare questo metodo helper per modificare la proprietà di testo dell'attività. Rimuove tutte le menzioni per il bot o l'ID utente specificato e quindi restituisce il valore della proprietà aggiornato.
Ad esempio, quando si rimuove la menzione di echoBot da un'attività contenente il testo "@echoBot Hi Bot", il testo dell'attività viene aggiornato e il metodo restituisce "Hi Bot".
Il formato di un'entità di menzione dipende dal canale. Tuttavia, la proprietà di testo della menzione deve contenere il testo esatto per l'utente come viene visualizzato nel testo dell'attività.
Ad esempio, se il canale usa "username" o "@username", questa stringa si trova nel testo dell'attività e questo metodo rimuoverà tutte le occorrenze di tale stringa dal testo.
Ad esempio:
const updatedText = TurnContext.removeMentionText(activity, activity.recipient.id);
Vedere anche
removeRecipientMention(Partial<Activity>)
Rimuove le menzioni per il destinatario dell'attività dal testo di un'attività e restituisce il testo aggiornato. Usare con cautela; questa funzione modifica la proprietà text dell'attività.
static function removeRecipientMention(activity: Partial<Activity>): string
Parametri
- activity
-
Partial<Activity>
Attività da cui rimuovere le menzioni.
Restituisce
string
Testo dell'attività aggiornata.
Commenti
Alcuni canali, ad esempio Microsoft Teams, aggiungono dettagli in corrispondenza del testo di un'attività di messaggio.
Usare questo metodo helper per modificare la proprietà di testo dell'attività. Rimuove tutte le menzioni del destinatario dell'attività e quindi restituisce il valore della proprietà aggiornato.
Ad esempio:
const updatedText = TurnContext.removeRecipientMention(turnContext.request);
Vedere anche
sendActivities(Partial<Activity>[])
Invia in modo asincrono un set di attività al mittente dell'attività in ingresso.
function sendActivities(activities: Partial<Activity>[]): Promise<ResourceResponse[]>
Parametri
- activities
-
Partial<Activity>[]
Attività da inviare.
Restituisce
Promise<ResourceResponse[]>
Promessa con resourceResponse.
Commenti
Se le attività vengono inviate correttamente, genera una matrice di oggetti ResourceResponse contenenti gli ID assegnati al canale di ricezione alle attività.
Prima di essere inviati, le informazioni di recapito di ogni attività in uscita vengono aggiornate in base alle informazioni di recapito dell'attività in ingresso.
Ad esempio:
await context.sendActivities([
{ type: 'typing' },
{ type: 'delay', value: 2000 },
{ type: 'message', text: 'Hello... How are you?' }
]);
Vedere anche
sendActivity(string | Partial<Activity>, string, string)
Invia in modo asincrono un'attività al mittente dell'attività in ingresso.
function sendActivity(activityOrText: string | Partial<Activity>, speak?: string, inputHint?: string): Promise<ResourceResponse | undefined>
Parametri
- activityOrText
-
string | Partial<Activity>
Attività o testo da inviare.
- speak
-
string
Facoltativa. Testo da pronunciare dal bot in un canale abilitato per la voce.
- inputHint
-
string
Facoltativa. Indica se il bot accetta, prevede o ignora l'input dell'utente dopo che il messaggio viene recapitato al client. Uno di: 'accettaInput', 'ignoraInput', o 'expectingInput'. Il valore predefinito è "accettaInput".
Restituisce
Promise<ResourceResponse | undefined>
Promessa con resourceResponse.
Commenti
Se l'attività viene inviata correttamente, genera un oggetto ResourceResponse contenente l'ID assegnato al canale di ricezione all'attività.
Vedere la documentazione del canale per i limiti imposti al contenuto del parametro activityOrText .
Per controllare varie caratteristiche della voce del bot, ad esempio voce, frequenza, volume, pronuncia e passo, specificare parlare in formato SSML (Speech Synthesis Markup Language).
Ad esempio:
await context.sendActivity(`Hello World`);
Vedere anche
sendTraceActivity(string, any, string, string)
Invia in modo asincrono un'attività al mittente dell'attività in ingresso.
function sendTraceActivity(name: string, value?: any, valueType?: string, label?: string): Promise<ResourceResponse | undefined>
Parametri
- name
-
string
Attività o testo da inviare.
- value
-
any
Facoltativa. Testo da pronunciare dal bot in un canale abilitato per la voce.
- valueType
-
string
Facoltativa. Indica se il bot accetta, prevede o ignora l'utente
- label
-
string
Facoltativa. Indica se il bot accetta, prevede o ignora l'utente
Restituisce
Promise<ResourceResponse | undefined>
Promessa con resourceResponse.
Commenti
Crea e invia un'attività di traccia. Le attività di traccia vengono inviate solo quando il canale è l'emulatore.
Ad esempio:
await context.sendTraceActivity(`The following exception was thrown ${msg}`);
Vedere anche
updateActivity(Partial<Activity>)
Aggiorna in modo asincrono un'attività inviata in precedenza.
function updateActivity(activity: Partial<Activity>): Promise<ResourceResponse | void>
Parametri
- activity
-
Partial<Activity>
Sostituzione dell'attività originale.
Restituisce
Promise<ResourceResponse | void>
Promessa con resourceResponse.
Commenti
L'ID dell'attività sostitutiva indica l'attività nella conversazione da sostituire.
Ad esempio:
const matched = /approve (.*)/i.exec(context.activity.text);
if (matched) {
const update = await approveExpenseReport(matched[1]);
await context.updateActivity(update);
}
Vedere anche