Asisten dan Keterampilan Virtual TypeScript
TypeScript
Kesalahan berikut muncul saat mencoba otentikasi
Kesalahan: DialogContext.beginDialog(): Dialog dengan id 'AuthPrompt' tidak ditemukan.
di WaterfallStepContext.
di Generator.next (
di D:\home\site\wwwroot\node_modules\botbuilder-dialogs\lib\dialogContext.js:7:71
pada Janji baru (
di __awaiter (D:\home\site\wwwroot\node_modules\botbuilder-dialogs\lib\dialogContext.js:3:12)
di WaterfallStepContext.beginDialog (D:\home\site\wwwroot\node_modules\botbuilder-dialogs\lib\dialogContext.js:119:16)
di MultiProviderAuthDialog.firstStep (D:\home\site\wwwroot\node_modules\bot-solutions\lib\authentication\multiProviderAuthDialog.js:75:34)
di Waterfall Dialog.
di Generator.next (
di D:\home\site\wwwroot\node_modules\botbuilder-dialogs\lib\waterfallDialog.js:7:71
Sebarkan Asisten dan keterampilan virtual. Aktifkan MultiProviderAuthDialog di skill
Gunakan dialog otentikasi untuk mengautentikasi dengan Azure Active Directory v2
Terima kartu masuk untuk masuk
Kesalahan: DialogContext.beginDialog(): Dialog dengan id 'AuthPrompt' tidak ditemukan.
di WaterfallStepContext.
di Generator.next (
di D:\home\site\wwwroot\node_modules\botbuilder-dialogs\lib\dialogContext.js:7:71
pada Janji baru (
di __awaiter (D:\home\site\wwwroot\node_modules\botbuilder-dialogs\lib\dialogContext.js:3:12)
di WaterfallStepContext.beginDialog (D:\home\site\wwwroot\node_modules\botbuilder-dialogs\lib\dialogContext.js:119:16)
di MultiProviderAuthDialog.firstStep (D:\home\site\wwwroot\node_modules\bot-solutions\lib\authentication\multiProviderAuthDialog.js:75:34)
di Waterfall Dialog.
di Generator.next (
di D:\home\site\wwwroot\node_modules\botbuilder-dialogs\lib\waterfallDialog.js:7:71
Terima kasih @tomSauret847 telah melaporkan masalah ini! Segera setelah kami memiliki pembaruan, kami akan menghubungi Anda kembali 😊.
Hai @tomSauret847 - maaf atas keterlambatannya. Kami telah berhasil mereproduksi masalah menggunakan TypeScript Skill dengan mengikuti langkah-langkah berikut:
OAuthPromptSettings
array ke MultiProviderAuthDialog
konstruktorappsettings.oauthConnections
ke properti botSettings
AADv2
AADv2
ke pendaftaran di AzureSegera setelah kami memiliki pembaruan, kami akan menghubungi Anda kembali 😊.
Hai @tomSauret847 - kami telah memperbaiki masalah ini di komit ini.
Ini sebenarnya merupakan masalah di pustaka bot-solutions
, dan kami telah menjadwalkan perbaikan untuk dirilis dengan pustaka versi 1.0 .
Sementara itu, jika Anda menginginkan cara untuk menguji perbaikannya sendiri, Anda dapat mengikuti langkah -
npm install
untuk menginstal dependensinya.npm run build
untuk membangun solusi.npm pack
untuk menghasilkan file .tgz
. Itu harus membuat file di lokasi yang sama, bernama bot-solutions-version.tgz"bot-solutions": "^1.0.0"
menjadi "bot-solutions": "<PATH_TO_TGZ>"
Kami akan memperhatikan balasan Anda 😊.
Terima kasih telah memeriksa @Batta32 ini. Saya masih menerima kesalahan pada proses ini. Kesalahannya adalah
Kesalahan: Tidak dapat menemukan Pengaturan Koneksi dengan nama {nama koneksi}
Saya menyiapkan koneksi seperti yang diuraikan di sini untuk menyiapkan SSO untuk suatu keterampilan.
Apakah kita masih perlu memiliki koneksi otentikasi di setiap keterampilan dengan keterampilan TypeScript?
Atau bisakah kita menggunakan SSO tunggal seperti yang diuraikan untuk keterampilan C#?
Jika saya menambahkan koneksi pada skill, saya akan mendapatkan prompt masuk seperti yang Anda lakukan tetapi saya tidak akan menerima token kembali setelah menyelesaikan login. Jika Anda dapat mengklarifikasi apakah kami perlu menyiapkan koneksi tunggal di VA atau jika kita perlu mengatur koneksi di setiap keterampilan yang memerlukan otentikasi.
Terima kasih @tomSauret847 atas balasan Anda. Segera setelah kami memiliki pembaruan, kami akan menghubungi Anda kembali 😊!
Hai @tomSauret847 - kami telah berhasil mereproduksi masalah. Itu karena properti name
di oauthConnections
dari appsettings.json
berbeda dengan properti connectionName
di OAuthPromptSettings
Anda gunakan.
Kami akan terus meninjau ini dan menganalisis pertanyaan yang telah Anda sebutkan di atas. Segera setelah kami memiliki pembaruan, kami akan menghubungi Anda kembali 😊.
Langkah -
name
di oauthConnections
dari appsettings.json
berbeda dengan properti connectionName
di OAuthPromptSettings
Anda gunakan_Ketika connectionName dan name berbeda, masalah akan muncul kembali_
_Masalah direproduksi_
Hai @tomSauret847
Apakah kita masih perlu memiliki koneksi otentikasi di setiap keterampilan dengan keterampilan TypeScript?
Anda harus memiliki koneksi otentikasi di setiap TypeScript Skill hingga versi 1.0 dari TypeScript Skill dirilis.
Atau bisakah kita menggunakan SSO tunggal seperti yang diuraikan untuk keterampilan C#?
SSO untuk TypeScript tidak dapat digunakan seperti yang dijelaskan untuk Keterampilan C# karena TypeScript versi 1.0 belum dirilis.
Beri tahu kami jika ini membantu Anda 😊.
@tomSauret847 - kesalahan Error: Could not find Connection Setting with name {connection name}
adalah karena properti name
di oauthConnections
dari appsettings
berbeda dengan properti connectionName
di OAuthPromptSettings
Anda gunakan.
Untuk mengatasi ini, Anda harus memeriksa bahwa kedua properti adalah sama .
Untuk informasi lebih lanjut, Anda dapat memeriksa komentar di atas.
Terima kasih @Batta32 untuk melihat ini. Saya dapat mengonfirmasi bahwa jika saya membuat properti koneksi pada keterampilan, saya bisa mendapatkan prompt login. Komentar Anda telah memunculkan pertanyaan lain. Kami bersiap untuk melakukan pengujian dengan VA baru kami dan setelah itu memasuki produksi. Pertanyaan yang saya miliki,
Apakah perbaikan untuk otentikasi ini akan dipublikasikan ke NPM sebelum rilis 1.0?
Untuk lingkungan produksi kami, kami memerlukan paket NPM yang dipublikasikan sehingga kami memerlukan perbaikan ini untuk dipublikasikan sebelum kami dapat memindahkan VA ini ke dalam produksi. Saya akan memperhatikan jawaban Anda.
@tomSauret847 - Terima kasih atas balasan Anda! Kami menambahkan perbaikan ini di PR TypeScript versi 1.0:
[TypeScript][Bot-Solutions] Implement changes in Bot-Solutions to 1.0 release
[TypeScript][Virtual Assistant] Implement changes in Virtual Assistant to 1.0 release
[TypeScript][Skill] Implement changes in Skill to 1.0 release
Kami akan memberi tahu Anda segera setelah kami memiliki pembaruan tentang ini. Sementara itu, kami sedang berupaya memvalidasi proses Otentikasi di TypeScript.
@tomSauret847 - kami mengidentifikasi masalah lain bahwa variabel Status Keterampilan _tidak terdefinisi_ selama proses Otentikasi.
Kami mengambil sebagai panduan PR #3561 yang menetapkan nilai default untuk pengakses Status Keterampilan yang kami masukkan dalam komit ini.
Setelah menerapkan perubahan ini, proses otentikasi bekerja dengan benar. Masalah ini akan diperbaiki segera setelah TypeScript v1.0 digabungkan.
Ini adalah lingkungan kita menggunakan cabang ini : feature/southworks/test-fix-auth-skill
:
Sementara itu, jika Anda menginginkan cara untuk menguji perbaikan sendiri, Anda dapat mengikuti langkah-langkah ini:
npm install
untuk menginstal dependensinya.npm run build
untuk membangun solusi.npm pack
untuk menghasilkan file .tgz. Itu harus membuat file di lokasi yang sama, bernama bot-solutions-version.tgz"bot-solutions": "^1.0.0"
menjadi "bot-solutions": "<PATH_TO_TGZ>"
npm install
untuk menginstal dependensinya.npm run build
untuk membangun solusi.Kami memperhatikan jawaban Anda. 😊
_Variabel SkillState mendapatkan nilai yang tidak ditentukan_
_Proses otentikasi bekerja dengan benar_
Terima kasih sekali lagi @Batta32! Saya memang menggunakan paket 1.0 untuk pengujian. Saya masih perlu menyimpan pengaturan koneksi di keterampilan, tetapi saya bisa membuat otentikasi berfungsi. Saya dapat melihat di mana VA menerima respons token dan meneruskannya ke keterampilan untuk diproses.
@Batta32 Kami memiliki otentikasi pengaturan di 2 keterampilan kami dan itu berfungsi dengan baik di saluran Tim. Saluran saluran langsung tidak melewati prompt otentikasi. Skill tidak menerima token kembali setelah login berhasil. Masalah ini hanya ada di saluran saluran langsung kami. Kami menggunakan contoh klien saluran langsung yang disediakan dan mengaktifkan opsi autentikasi yang ditingkatkan sehingga kami tidak memasukkan "Kode ajaib". Ini berfungsi sebelum menambahkan otentikasi yang ditingkatkan tetapi setelah menambahkan fitur ini, keterampilan tidak lagi menerima respons token kembali. Jika kami membatalkan keterampilan dan kembali ke dialog itu, token akan muncul dan kami dapat menyelesaikan dialog. Beri tahu saya jika Anda memiliki pemikiran tentang apa yang mungkin menyebabkan ini.
Terima kasih @tomSauret847 , kami akan meninjau skenario itu dan kami akan
Hanya untuk mulai meninjau skenario:
Terima kasih sekali lagi @Batta32 untuk melihat ini. Kami menggunakan sampel saluran langsung dari repo solusi pembuat bot yang terletak di sini
"Kode ajaib" dijelaskan beberapa dalam pertanyaan stack overflow di sini
Ini hanyalah kode yang harus disalin dan ditempelkan kembali oleh pengguna bot ke dalam percakapan setelah berhasil mengautentikasi. Dengan menerapkan autentikasi yang ditingkatkan, langkah ini dihapus untuk pengguna bot sehingga mereka hanya perlu mengautentikasi dan percakapan bergerak maju saat token diteruskan kembali ke bot di belakang layar.
Terima kasih banyak @tomSauret847 , kami akan meninjau ini dan kami akan memberi tahu Anda pembaruan apa pun di sini 😊!
Hai @tomSauret847 , kami tidak dapat mereproduksi masalah ini karena skenario otentikasi kami berfungsi dengan benar.
Kami datang dengan beberapa pertanyaan untuk Anda:
Ini adalah pengaturan yang kami gunakan:
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*",
"BotName": "skillbot-name",
"DirectLineSecret": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"EnableDirectLineEnhancedAuthentication": true,
"SpeechServiceRegionIdentifier": "",
"SpeechServiceSubscriptionKey": ""
}
Langkah-langkah yang kami ikuti adalah:
Kami akan memperhatikan jawaban Anda.
Terima kasih @matiasroldan6 untuk melihat ini. Untuk menjawab pertanyaan Anda
Kami memiliki ID pengguna yang disetel ke "dl_xxxx" di klien saluran langsung
Kami memiliki otentikasi Azure AD v2 dalam koneksi pada Skill dan VA
Kami memiliki appsettings.json dari klien saluran langsung yang sama seperti yang Anda miliki di atas
Kami tidak dapat menggunakan saluran saluran langsung pada keterampilan dan hanya menggunakannya di VA
Kami dapat menggunakan Otentikasi di saluran Teams dengan satu-satunya masalah adalah pesan dialog rusak. Gagal mengirim stepContext.context.sendActivity('message') pertama hingga satu menit kemudian dalam konversi. Ini hanya terjadi pada dialog yang menyertakan autentikasi di dalamnya dan hanya di saluran Teams.
Kami menggunakan solusi bot 1.0 yang terletak di sini
Tolong beri tahu saya jika Anda memerlukan informasi lagi tentang keterampilan dan VA
Hai @tomSauret847 , kami dapat mereproduksi kemunculan masalah ini.
Dalam skenario kami, masalahnya adalah alamat asal tepercaya yang ditetapkan di saluran Directline. Misalnya, popup Directline menyatakan bahwa asal tepercaya harus _https_, atau _http_ untuk _localhost_. Ini akan menjelaskan Directline sebagai satu-satunya saluran yang gagal untuk Anda.
Untuk memeriksa apakah ini juga masalah Anda, dapatkah Anda mencoba menetapkan sebagai asal tepercaya:
Alamat bot Anda (baik https://xxxxx.azurewebsites.net atau https://xxxx.ngrok.io jika Anda melakukan debug secara lokal)
Localhost Anda jika Anda membutuhkannya, sebagai http://localhost
Pengaturan untuk mereproduksi ini adalah:
Langkah repro kami adalah:
Harap beri tahu kami jika ini membantu. Kami akan memperhatikan tanggapan Anda.
Terima kasih @matiasroldan6 untuk melihat ini. Pengaturan yang Anda tunjukkan di atas sama dengan yang kami gunakan. Kami menghapus rute localhost dan hanya memiliki alamat bot di sumber tepercaya untuk saluran saluran langsung (https://xxxxx.azurewebsites.net). Keahlian masih tidak responsif setelah masuk prompt dan jika kita membatalkan percakapan dan memanggil keterampilan lagi itu akan memiliki token dan melanjutkan dialog. Kami masih tidak dapat memperoleh keterampilan untuk menerima token setelah pengguna masuk.
Terima kasih atas balasan Anda @tomSauret847 - kami akan terus bekerja untuk menemukan perbaikan untuk masalah ini 😊.
Kami memiliki pertanyaan untuk memahami bagaimana Anda menggunakan titik akhir azurewebsites.net
dengan mempertimbangkan solusi bot versi 1.0 (PR #3583):
Messaging endpoint
dari Bot Aplikasi Web (Asisten Virtual) yang Anda terbitkan?.tgz
dari perpustakaan. Apakah ini benar?Terima kasih @Batta32
Terima kasih @tomSauret847 , kami akan terus meninjau masalah ini dengan informasi baru yang Anda berikan! Segera setelah kami memiliki pembaruan, kami akan menghubungi Anda kembali 😊.
Hai @tomSauret847 , kami berhasil mereproduksi kemunculan masalah ini.
Satu hal yang kami perhatikan dari tanggapan Anda
Menurut komentar ini , dan dokumentasi ini , Anda harus memiliki URL klien obrolan Anda.
Pengaturan kami adalah:
Langkah:
Kami akan terus meninjau masalah ini saat kami mengonfirmasi dan seperti yang Anda sebutkan, bahwa di Microsoft Teams dan Emulator ini berfungsi.
Hai @tomSauret847 , kami berhasil menjalankan proses otentikasi menggunakan Enhanced Authentication.
Kami datang dengan beberapa pertanyaan sehingga Anda dapat memeriksa di pihak kami:
<WEB_APP_BOT_NAME>
dengan nama sumber daya bot Anda? Periksa apakah Anda memiliki node_modules
, lib
, dan folder lainnya.Ini adalah lingkungan kita:
Kami mengikuti langkah -
.tgz
pada kedua sampel"bot-solutions": ".//TGZ//bot-solutions-1.0.0.tgz"
dari botdeploy.ps1
publish.ps1
run sample dialog
Last but not least, kami mengkonfirmasi langkah yang sama menggunakan bot C# dan memeriksa bahwa itu juga berfungsi dengan benar.
Kami akan memperhatikan balasan Anda
_Konfigurasi Otentikasi yang Ditingkatkan_
_Komunikasi yang berhasil menggunakan Enhanced Authentication dan TypeScript bots_
_Komunikasi yang berhasil menggunakan Enhanced Authentication dan C# bots_
Terima kasih @VictorGrycuk. Maaf atas respons yang terlambat, kami perlu menyiapkan instance pengujian untuk memverifikasi perbaikan. Kami telah berhasil membuat autentikasi berfungsi dalam contoh pengujian dan telah mempersempit di mana masalahnya.
Untuk contoh VA /Keterampilan kami, kami memilikinya di belakang gateway aplikasi dengan firewall. Tampaknya inilah alasan otentikasi yang ditingkatkan tidak berfungsi. Ketika kami menerapkan ini pada VA dan keterampilan di luar konfigurasi itu, itu berfungsi dengan baik. gateway aplikasi menempatkan host lain dalam campuran dan kami pikir inilah yang memblokir token. Jadi kita punya pertanyaan berikut,
Apakah ada cara agar autentikasi yang ditingkatkan berfungsi dengan bot di belakang App Gateway?
Hebat @tomSauret847! Kami akan melakukan penelitian dan beberapa pengujian untuk meninjau cara agar autentikasi yang ditingkatkan berfungsi dengan bot di belakang App Gateway.
Segera setelah kami memiliki pembaruan untuk ini, kami akan memberi tahu Anda di sini 😊.
Hai @tomSauret847 , kami melakukan sedikit riset, dan kami mengajukan beberapa
Kami akan memperhatikan jawaban Anda
Terima kasih telah menanggapi @VictorGrycuk berikut adalah jawaban atas pertanyaan kami,
Kami sedang menguji dengan bot yang dikerahkan ke Azure. Kami tidak dapat membuat terowongan untuk diuji secara lokal.
Ya, kami menggunakan gateway aplikasi Azure dengan WAF seperti yang dijelaskan di tautan Anda
Ini adalah bot TypeScript (VA dan 2 Keterampilan dengan otentikasi) kami hanya menggunakan 1 keterampilan C# untuk mengatasi masalah loop sinkron dan tidak memiliki otentikasi di dalamnya.
Hai @tomSauret847 , maaf atas keterlambatannya - kami pikir itu mungkin untuk menggunakan Enhanced Authentication dengan Azure App Gateway yang memiliki bot di belakangnya.
Beberapa pertanyaan tambahan:
Komponen :
Konfigurasi :
Kami akan bekerja untuk mereplikasi skenario ini.
Terima kasih @VictorGrycuk Jawaban atas pertanyaan Anda adalah
Bisakah Anda terhubung ke Asisten Virtual dengan emulator menggunakan IP publik Gateway? Dalam pengujian kami, kami mengonfirmasi bahwa ini mungkin
Bisakah Anda terhubung dan berkomunikasi dengan keterampilan melalui VA tanpa komunikasi yang ditingkatkan?
Hai @tomSauret847 , kami dapat mengonfirmasi bahwa Enhanced Authentication berfungsi dengan bot di belakang Azure Application Gateway.
Kami membuat PR #3694 yang menyertakan dokumentasi baru tentang cara mengonfigurasi Azure Application Gateway dengan bot yang digunakan.
Kami melakukan pengujian kami dengan mengikuti langkah -
Karena ini tampaknya merupakan masalah konfigurasi Gateway Aplikasi Azure, saya sarankan Anda untuk bertanya di https://stackoverflow.com/questions/tagged/botframework untuk saran; dan jika Anda baik-baik saja, kami dapat menutup masalah ini .
Terima kasih @VictorGrycuk Kami akan mengerjakan informasi yang Anda posting. Saya sudah memperhatikan bahwa tautan ini rusak.
Terima kasih @tomSauret847 , tautan itu akan mengarah ke Mengonfigurasi pemeriksaan kesehatan Gateway dengan bot TypeScript (serta gambar ini ) setelah dokumen digabungkan menjadi cabang master
, karena dokumentasi menggunakan {{site.baseurl}}
untuk menghasilkan URL.
@peterinnesmsft - kami dapat menutup masalah karena tidak aktif. @tomSauret847 jika Anda masih mengalami masalah, silakan aktifkan kembali dan kami dapat mengambilnya lagi, atau membuat masalah baru!
Juga, jika Anda memiliki pertanyaan, silakan tanyakan di https://stackoverflow.com/questions/tagged/botframework.
Seluruh proses otentikasi akan diselesaikan segera setelah PR berikut digabungkan untuk TypeScript versi 1.0:
[TypeScript][Bot-Solutions] Implement changes in Bot-Solutions to 1.0 release
[TypeScript][Virtual Assistant] Implement changes in Virtual Assistant to 1.0 release
[TypeScript][Skill] Implement changes in Skill to 1.0 release
Terima kasih @Batta32 atas bantuan Anda dalam hal ini. Kami harus menahan bagian ini untuk sementara, jadi saya akan menutup masalah ini dan membukanya kembali jika kami memiliki masalah ketika kami mengambilnya kembali.
@ Batta32 Kami memiliki pertanyaan singkat tentang masalah ini. Apakah SSO untuk TypeScript sudah tersedia? Kami menemukan masalahnya adalah keterampilan kami berada di belakang firewall dan tidak dapat menerima respons token. Ketika kami melewati kredensial VA di dalamnya, itu tidak meneruskan token ke keterampilan itu hanya memulai kembali percakapan. Jika SSO untuk TypeScript tidak tersedia, kapan Anda mengharapkannya? Terima kasih atas semua bantuan Anda dalam masalah ini.
Hai @tomSauret847 , SSO tidak tersedia untuk TypeScript saat ini karena diperkenalkan dalam versi 1.0. PR TypeScript versi 1.0 harus disetujui dan digabungkan untuk merilis versi baru dengan fitur tersebut.
Kami akan memberi tahu Anda segera setelah kami memiliki pembaruan apa pun 😊.
Komentar yang paling membantu
Terima kasih sekali lagi @Batta32! Saya memang menggunakan paket 1.0 untuk pengujian. Saya masih perlu menyimpan pengaturan koneksi di keterampilan, tetapi saya bisa membuat otentikasi berfungsi. Saya dapat melihat di mana VA menerima respons token dan meneruskannya ke keterampilan untuk diproses.