ComponentDialog class
Kelas dasar untuk dialog yang berisi dialog anak lainnya.
- Memperluas
Keterangan
Dialog komponen memungkinkan Anda memecah logika bot Anda menjadi komponen yang dapat ditambahkan sebagai dialog ke ComponentDialog lain atau DialogSet. Komponen juga dapat diekspor sebagai bagian dari paket simpul dan digunakan dalam bot lain.
Untuk menentukan komponen baru mendapatkan kelas dari ComponentDialog dan menambahkan dialog anak Anda dalam konstruktor kelas:
const { ComponentDialog, WaterfallDialog, TextPrompt, NumberPrompt } = require('botbuilder-dialogs');
class FillProfileDialog extends ComponentDialog {
constructor(dialogId) {
super(dialogId);
// Add control flow dialogs
this.addDialog(new WaterfallDialog('start', [
async (step) => {
// Ask user their name
return await step.prompt('namePrompt', `What's your name?`);
},
async (step) => {
// Remember the users answer
step.values['name'] = step.result;
// Ask user their age.
return await step.prompt('agePrompt', `Hi ${step.values['name']}. How old are you?`);
},
async (step) => {
// Remember the users answer
step.values['age'] = step.result;
// End the component and return the completed profile.
return await step.endDialog(step.values);
}
]));
// Add prompts
this.addDialog(new TextPrompt('namePrompt'));
this.addDialog(new NumberPrompt('agePrompt'))
}
}
module.exports.FillProfileDialog = FillProfileDialog;
Anda kemudian dapat menambahkan instans baru komponen Anda ke DialogSet lain atau ComponentDialog:
const dialogs = new DialogSet(dialogState);
dialogs.add(new FillProfileDialog('fillProfile'));
Konstruktor
| Component |
Membuat instans baru kelas Dialog |
Properti
| id | ID unik dialog. Mengatur ID unik dialog. |
| telemetry |
Atur klien telemetri, dan terapkan juga ke semua dialog anak. Dialog mendatang yang ditambahkan ke komponen juga akan mewarisi klien ini. Dapatkan klien telemetri saat ini. |
Properti yang Diwariskan
| dialogs | Kumpulan dialog kontainer. |
| End |
Mendapatkan hasil akhir giliran default. |
Metode
| add |
Menambahkan Dialog |
| begin |
Dipanggil saat dialog dimulai dan didorong ke tumpukan dialog induk. Secara default, ini memanggil metode Dialog.BeginDialogAsync(DialogContext, objek, CancellationToken) dari dialog awal dialog komponen, seperti yang didefinisikan oleh InitialDialogId. Ambil alih metode ini dalam kelas turunan untuk mengimplementasikan logika interupsi. |
| continue |
Dipanggil ketika dialog |
| create |
Membuat konteks dialog dalam |
| end |
|
| reprompt |
Dipanggil ketika dialog harus meminta kembali input kepada pengguna. |
| resume |
Dipanggil ketika dialog turunan pada tumpukan dialog induk menyelesaikan giliran ini, mengembalikan kontrol ke komponen dialog ini. |
Metode yang Diwarisi
| configure(Record<string, unknown>) | Metode fasih untuk mengonfigurasi objek. |
| find |
Menemukan dialog anak yang sebelumnya ditambahkan ke kontainer. |
| get |
|
| get |
String yang dikodekan yang digunakan untuk membantu dalam deteksi perubahan bot pada penyebaran ulang. |
| on |
Dipanggil ketika peristiwa telah dinaikkan, menggunakan |
Detail Konstruktor
ComponentDialog(string)
Membuat instans baru kelas Dialog
new ComponentDialog(dialogId?: string)
Parameter
- dialogId
-
string
Fakultatif. ID unik dialog.
Detail Properti
id
ID unik dialog. Mengatur ID unik dialog.
string id
Nilai Properti
string
Id untuk dialog.
Keterangan
Ini akan dibuat secara otomatis jika tidak ditentukan.
telemetryClient
Atur klien telemetri, dan terapkan juga ke semua dialog anak. Dialog mendatang yang ditambahkan ke komponen juga akan mewarisi klien ini. Dapatkan klien telemetri saat ini.
BotTelemetryClient telemetryClient
Nilai Properti
BotTelemetryClient
BotTelemetryClient digunakan untuk pengelogan.
Detail Properti yang Diwariskan
dialogs
Kumpulan dialog kontainer.
dialogs: DialogSet
Nilai Properti
EndOfTurn
Mendapatkan hasil akhir giliran default.
static EndOfTurn: DialogTurnResult
Nilai Properti
Keterangan
Hasil ini menunjukkan bahwa dialog (atau langkah logis dalam dialog) telah menyelesaikan pemrosesan untuk giliran saat ini, masih aktif, dan menunggu lebih banyak input.
Diwariskan Dari dialog.EndOfTurn
Detail Metode
addDialog(Dialog)
Menambahkan Dialog
function addDialog(dialog: Dialog): this
Parameter
Mengembalikan
this
Keterangan
Dialog.id anak pertama yang ditambahkan ke komponen akan ditetapkan ke properti initialDialogId.
beginDialog(DialogContext, O)
Dipanggil saat dialog dimulai dan didorong ke tumpukan dialog induk. Secara default, ini memanggil metode Dialog.BeginDialogAsync(DialogContext, objek, CancellationToken) dari dialog awal dialog komponen, seperti yang didefinisikan oleh InitialDialogId. Ambil alih metode ini dalam kelas turunan untuk mengimplementasikan logika interupsi.
function beginDialog(outerDC: DialogContext, options?: O): Promise<DialogTurnResult>
Parameter
- outerDC
- DialogContext
Induk DialogContext untuk pergantian percakapan saat ini.
- options
-
O
Informasi awal opsional untuk diteruskan ke dialog.
Mengembalikan
Promise<DialogTurnResult>
Janji yang mewakili operasi asinkron.
Keterangan
Jika tugas berhasil, hasilnya menunjukkan apakah dialog masih aktif setelah giliran diproses oleh dialog.
continueDialog(DialogContext)
Dipanggil ketika dialog
function continueDialog(outerDC: DialogContext): Promise<DialogTurnResult>
Parameter
- outerDC
- DialogContext
Induk DialogContext untuk pergantian percakapan saat ini.
Mengembalikan
Promise<DialogTurnResult>
Janji yang mewakili operasi asinkron.
Keterangan
Jika tugas berhasil, hasilnya menunjukkan apakah dialog masih aktif setelah giliran diproses oleh dialog. Hasilnya mungkin juga berisi nilai pengembalian.
createChildContext(DialogContext)
Membuat konteks dialog dalam
function createChildContext(outerDC: DialogContext): DialogContext
Parameter
- outerDC
- DialogContext
konteks dialog luar
Mengembalikan
Konteks Dialog yang dibuat.
endDialog(TurnContext, DialogInstance, DialogReason)
Dipanggil saat dialog berakhir.
function endDialog(context: TurnContext, instance: DialogInstance, reason: DialogReason): Promise<void>
Parameter
- context
-
TurnContext
Objek TurnContext untuk giliran ini.
- instance
- DialogInstance
Informasi status yang terkait dengan instans komponen ini Dialog pada tumpukan dialog induknya.
- reason
- DialogReason
Alasan mengapa Dialog
Mengembalikan
Promise<void>
Janji yang mewakili operasi asinkron.
Keterangan
Ketika metode ini dipanggil dari konteks dialog induk, komponen Dialog membatalkan semua dialog pada tumpukan dialog dalamnya sebelum berakhir.
repromptDialog(TurnContext, DialogInstance)
Dipanggil ketika dialog harus meminta kembali input kepada pengguna.
function repromptDialog(context: TurnContext, instance: DialogInstance): Promise<void>
Parameter
- context
-
TurnContext
Objek TurnContext untuk giliran ini.
- instance
- DialogInstance
Informasi status untuk dialog ini.
Mengembalikan
Promise<void>
Janji yang mewakili operasi asinkron.
resumeDialog(DialogContext, DialogReason, any)
Dipanggil ketika dialog turunan pada tumpukan dialog induk menyelesaikan giliran ini, mengembalikan kontrol ke komponen dialog ini.
function resumeDialog(outerDC: DialogContext, _reason: DialogReason, _result?: any): Promise<DialogTurnResult>
Parameter
- outerDC
- DialogContext
Dialog Konteks untuk pergantian percakapan saat ini.
- _reason
- DialogReason
Alasan mengapa dialog dilanjutkan.
- _result
-
any
Opsional, nilai yang dikembalikan dari dialog yang dipanggil. Jenis nilai yang dikembalikan tergantung pada dialog anak.
Mengembalikan
Promise<DialogTurnResult>
Janji yang mewakili operasi asinkron.
Keterangan
Jika tugas berhasil, hasilnya menunjukkan apakah dialog ini masih aktif setelah giliran dialog ini diproses. Umumnya, dialog anak dimulai dengan panggilan ke beginDialog(DialogContext, objek) dalam konteks induk. Namun, jika metode DialogContext.replaceDialog(string, objek) dipanggil, dialog turunan logis mungkin berbeda dari yang asli. Jika metode ini tidak ditimpa, dialog secara otomatis memanggil RepromptDialog(ITurnContext, DialogInstance) saat pengguna membalas.
Detail Metode yang Diwarisi
configure(Record<string, unknown>)
Metode fasih untuk mengonfigurasi objek.
function configure(config: Record<string, unknown>): this
Parameter
- config
-
Record<string, unknown>
Pengaturan konfigurasi yang akan diterapkan.
Mengembalikan
this
yang dapat dikonfigurasi
Diwariskan DariConfigurable.configure
findDialog(string)
Menemukan dialog anak yang sebelumnya ditambahkan ke kontainer.
function findDialog(dialogId: string): Dialog | undefined
Parameter
- dialogId
-
string
ID dialog untuk pencarian.
Mengembalikan
Dialog | undefined
Dialog jika ditemukan; jika tidak, null.
Diwariskan DariDialogContainer.findDialog
getConverter(string)
function getConverter(_property: string): Converter | ConverterFactory
Parameter
- _property
-
string
Kunci konfigurasi pemilih bersyarah.
Mengembalikan
Pengonversi untuk konfigurasi pemilih.
Diwarisi DariConfigurable.getConverter
getVersion()
String yang dikodekan yang digunakan untuk membantu dalam deteksi perubahan bot pada penyebaran ulang.
function getVersion(): string
Mengembalikan
string
String unik yang seharusnya hanya berubah ketika dialog telah berubah dengan cara yang harus menghidupkan ulang dialog.
Keterangan
Ini default untuk mengembalikan dialog id tetapi dapat ditimpa untuk memberikan logika deteksi perubahan yang lebih tepat. Setiap dialog pada tumpukan yang memiliki perubahan versinya akan mengakibatkan peristiwa versionChanged akan dinaikkan. Jika kejadian ini tidak ditangani oleh bot, kesalahan akan dilemparkan yang mengakibatkan logika handler kesalahan bot dijalankan.
Mengembalikan string kosong akan menonaktifkan pelacakan versi untuk komponen bersama-sama.
onDialogEvent(DialogContext, DialogEvent)
Dipanggil ketika peristiwa telah dinaikkan, menggunakan DialogContext.emitEvent(), dengan dialog saat ini atau dialog yang dimulai dialog saat ini.
function onDialogEvent(dc: DialogContext, e: DialogEvent): Promise<boolean>
Parameter
Konteks dialog untuk pergantian percakapan saat ini.
Peristiwa yang sedang dinaikkan.
Mengembalikan
Promise<boolean>
True jika peristiwa ditangani oleh dialog saat ini dan gelembung harus berhenti.
Diwarisi DariDialogContainer.onDialogEvent