OAuthPrompt class
Membuat permintaan baru yang meminta pengguna untuk masuk menggunakan layanan Akses Menyeluruh (SSO) Bot Frameworks.
- Memperluas
Keterangan
Perintah akan mencoba mengambil token pengguna saat ini dan jika pengguna tidak masuk, itu akan mengirimi mereka OAuthCard yang berisi tombol yang dapat mereka tekan untuk masuk. Tergantung pada saluran, pengguna akan dikirim melalui salah satu dari dua kemungkinan alur masuk:
- Alur masuk otomatis di mana setelah pengguna masuk dan layanan SSO akan meneruskan token akses pengguna menggunakan aktivitas
eventatauinvoke. - Alur "kode ajaib" di mana setelah pengguna masuk, mereka akan diminta oleh layanan SSO untuk mengirim bot kode enam digit yang mengonfirmasi identitas mereka. Kode ini akan dikirim sebagai aktivitas
messagestandar.
Kedua alur secara otomatis didukung oleh OAuthPrompt dan satu-satunya hal yang perlu Anda berhati-hati adalah Anda tidak memblokir aktivitas event dan invoke yang mungkin ditunda oleh prompt.
Nota
Anda harus menghindari mempertahankan token akses dengan bot Anda status lain. Layanan SSO Bot Frameworks akan menyimpan token dengan aman atas nama Anda. Jika Anda menyimpannya dalam status bot, bot dapat kedaluwarsa atau dicabut di antara giliran.
Saat memanggil perintah dari dalam langkah air terjun, Anda harus menggunakan token dalam langkah mengikuti perintah dan kemudian membiarkan token keluar dari cakupan di akhir fungsi Anda.
Prompt Usage
Saat digunakan dengan bot Anda DialogSet Anda cukup menambahkan instans baru prompt sebagai dialog bernama menggunakan DialogSet.add(). Anda kemudian dapat memulai perintah dari langkah air terjun menggunakan DialogContext.beginDialog() atau DialogContext.prompt(). Pengguna akan diminta untuk masuk sesuai kebutuhan dan token akses mereka akan diteruskan sebagai argumen kepada pemanggil langkah air terjun berikutnya:
const { ConversationState, MemoryStorage, OAuthLoginTimeoutMsValue } = require('botbuilder');
const { DialogSet, OAuthPrompt, WaterfallDialog } = require('botbuilder-dialogs');
const convoState = new ConversationState(new MemoryStorage());
const dialogState = convoState.createProperty('dialogState');
const dialogs = new DialogSet(dialogState);
dialogs.add(new OAuthPrompt('loginPrompt', {
connectionName: 'GitConnection',
title: 'Login To GitHub',
timeout: OAuthLoginTimeoutMsValue // User has 15 minutes to login
}));
dialogs.add(new WaterfallDialog('taskNeedingLogin', [
async (step) => {
return await step.beginDialog('loginPrompt');
},
async (step) => {
const token = step.result;
if (token) {
// ... continue with task needing access token ...
} else {
await step.context.sendActivity(`Sorry... We couldn't log you in. Try again later.`);
return await step.endDialog();
}
}
]));
Konstruktor
| OAuth |
Membuat instans OAuthPrompt baru. |
Properti
| id | ID unik dialog. Mengatur ID unik dialog. |
| telemetry |
Mendapatkan klien telemetri untuk dialog ini. Mengatur klien telemetri untuk dialog ini. |
Properti yang Diwariskan
| End |
Mendapatkan hasil akhir giliran default. |
Metode
| begin |
Dipanggil saat dialog perintah didorong ke tumpukan dialog dan sedang diaktifkan. |
| continue |
Dipanggil saat dialog perintah adalah dialog aktif dan pengguna membalas dengan aktivitas baru. |
| get |
Mencoba mengambil token tersimpan untuk pengguna saat ini. |
| recognize |
Implementasi bersama fungsi RecognizeTokenAsync. Ini ditujukan untuk penggunaan internal, untuk mengonsolidasikan implementasi OAuthPrompt dan OAuthInput. Logika aplikasi harus menggunakan kelas dialog tersebut. |
| send |
Mengirim kartu OAuth. |
| sign |
Mengeluarkan pengguna dari layanan. |
Metode yang Diwarisi
| configure(Record<string, unknown>) | Metode fasih untuk mengonfigurasi objek. |
| end |
Saat ditimpa di kelas turunan, lakukan pembersihan untuk dialog sebelum berakhir. |
| get |
|
| get |
String yang dikodekan yang digunakan untuk membantu dalam deteksi perubahan bot pada penyebaran ulang. |
| on |
Dipanggil ketika peristiwa telah dinaikkan, menggunakan |
| reprompt |
Saat ditimpa di kelas turunan, promporsi ulang pengguna untuk input. |
| resume |
Saat ditimpa di kelas turunan, melanjutkan dialog setelah dialog di atasnya pada tumpukan selesai. |
Detail Konstruktor
OAuthPrompt(string, OAuthPromptSettings, PromptValidator<TokenResponse>)
Membuat instans OAuthPrompt baru.
new OAuthPrompt(dialogId: string, settings: OAuthPromptSettings, validator?: PromptValidator<TokenResponse>)
Parameter
- dialogId
-
string
ID unik dialog dalam DialogSet induknya atau ComponentDialog.
- settings
- OAuthPromptSettings
Pengaturan yang digunakan untuk mengonfigurasi perintah.
- validator
-
PromptValidator<TokenResponse>
Validator (Opsional) yang akan dipanggil setiap kali pengguna merespons permintaan.
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
Mendapatkan klien telemetri untuk dialog ini. Mengatur klien telemetri untuk dialog ini.
BotTelemetryClient telemetryClient
Nilai Properti
BotTelemetryClient
BotTelemetryClient digunakan untuk pengelogan.
Detail Properti yang Diwariskan
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
beginDialog(DialogContext, PromptOptions)
Dipanggil saat dialog perintah didorong ke tumpukan dialog dan sedang diaktifkan.
function beginDialog(dc: DialogContext, options?: PromptOptions): Promise<DialogTurnResult>
Parameter
DialogContext
- options
- PromptOptions
Fakultatif. PromptOptions, informasi tambahan untuk diteruskan ke perintah yang sedang dimulai.
Mengembalikan
Promise<DialogTurnResult>
Promise yang mewakili operasi asinkron.
Keterangan
Jika tugas berhasil, hasilnya menunjukkan apakah perintah masih aktif setelah giliran diproses oleh perintah.
continueDialog(DialogContext)
Dipanggil saat dialog perintah adalah dialog aktif dan pengguna membalas dengan aktivitas baru.
function continueDialog(dc: DialogContext): Promise<DialogTurnResult>
Parameter
DialogContext
Mengembalikan
Promise<DialogTurnResult>
Promise yang mewakili operasi asinkron.
Keterangan
Jika tugas berhasil, hasilnya menunjukkan apakah dialog masih aktif setelah giliran diproses oleh dialog. Perintah umumnya terus menerima balasan pengguna sampai menerima balasan pengguna sebagai input yang valid untuk permintaan tersebut.
getUserToken(TurnContext, string)
Mencoba mengambil token tersimpan untuk pengguna saat ini.
function getUserToken(context: TurnContext, code?: string): Promise<TokenResponse | undefined>
Parameter
- context
-
TurnContext
Referensi konteks pengguna yang sedang dicari.
- code
-
string
(Opsional) kode masuk yang diterima dari pengguna.
Mengembalikan
Promise<TokenResponse | undefined>
Respons token.
recognizeToken(DialogContext)
Implementasi bersama fungsi RecognizeTokenAsync. Ini ditujukan untuk penggunaan internal, untuk mengonsolidasikan implementasi OAuthPrompt dan OAuthInput. Logika aplikasi harus menggunakan kelas dialog tersebut.
function recognizeToken(dc: DialogContext): Promise<PromptRecognizerResult<TokenResponse>>
Parameter
DialogContext
Mengembalikan
Promise<PromptRecognizerResult<TokenResponse>>
Janji yang menyelesaikan hasil
sendOAuthCard(OAuthPromptSettings, TurnContext, string | Partial<Activity>)
Mengirim kartu OAuth.
static function sendOAuthCard(settings: OAuthPromptSettings, turnContext: TurnContext, prompt?: string | Partial<Activity>): Promise<void>
Parameter
- settings
- OAuthPromptSettings
Pengaturan OAuth.
- turnContext
-
TurnContext
Ubah konteks.
- prompt
-
string | Partial<Activity>
Aktivitas pesan.
Mengembalikan
Promise<void>
signOutUser(TurnContext)
Mengeluarkan pengguna dari layanan.
function signOutUser(context: TurnContext): Promise<void>
Parameter
- context
-
TurnContext
Konteks yang mereferensikan pengguna yang sedang keluar.
Mengembalikan
Promise<void>
Janji yang mewakili operasi asinkron.
Keterangan
Contoh ini menunjukkan pembuatan instans perintah lalu mengeluarkan pengguna.
const prompt = new OAuthPrompt({
connectionName: 'GitConnection',
title: 'Login To GitHub'
});
await prompt.signOutUser(context);
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
endDialog(TurnContext, DialogInstance, DialogReason)
Saat ditimpa di kelas turunan, lakukan pembersihan untuk dialog sebelum berakhir.
function endDialog(_context: TurnContext, _instance: DialogInstance, _reason: DialogReason): Promise<void>
Parameter
- _context
-
TurnContext
Objek konteks untuk giliran.
- _instance
- DialogInstance
Informasi status saat ini untuk dialog ini.
- _reason
- DialogReason
Alasan dialog berakhir.
Mengembalikan
Promise<void>
Keterangan
Dialog turunan yang perlu melakukan pengelogan atau pembersihan sebelum berakhir harus mengambil alih metode ini. Secara default, metode ini tidak berpengaruh.
DialogContext memanggil metode ini ketika dialog saat ini berakhir.
Lihat juga
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 Dari dialog.onDialogEvent
repromptDialog(TurnContext, DialogInstance)
Saat ditimpa di kelas turunan, promporsi ulang pengguna untuk input.
function repromptDialog(_context: TurnContext, _instance: DialogInstance): Promise<void>
Parameter
- _context
-
TurnContext
Objek konteks untuk giliran.
- _instance
- DialogInstance
Informasi status saat ini untuk dialog ini.
Mengembalikan
Promise<void>
Keterangan
Dialog turunan yang mendukung validasi dan logika permintaan ulang harus mengambil alih metode ini. Secara default, metode ini tidak berpengaruh.
DialogContext memanggil metode ini ketika dialog saat ini harus meminta kembali input dari pengguna. Metode ini diimplementasikan untuk dialog perintah.
Lihat juga
resumeDialog(DialogContext, DialogReason, any)
Saat ditimpa di kelas turunan, melanjutkan dialog setelah dialog di atasnya pada tumpukan selesai.
function resumeDialog(dc: DialogContext, reason: DialogReason, result?: any): Promise<DialogTurnResult>
Parameter
Konteks untuk giliran dialog saat ini.
- reason
- DialogReason
Alasan dialog melanjutkan. Ini biasanya akan DialogReason.endCalled
- result
-
any
Fakultatif. Nilai pengembalian, jika ada, dari dialog yang berakhir.
Mengembalikan
Promise<DialogTurnResult>
Janji yang menyelesaikan hasil giliran dialog.
Keterangan
Dialog turunan yang mendukung percakapan beberapa giliran harus mengambil alih metode ini. Secara default, metode ini memberi sinyal bahwa dialog selesai dan kembali.
Dialogcontext memanggil metode ini saat melanjutkan dialog. Jika dialog sebelumnya pada tumpukan mengembalikan nilai, nilai tersebut berada dalam parameter result.
Untuk memulai dialog anak
Lihat juga
Diwariskan DariDialog.resumeDialog