Botframework-solutions: [TypeScript] Tambahkan dukungan GA SDK Skill ke VA/Skill Generator

Dibuat pada 8 Okt 2019  ·  64Komentar  ·  Sumber: microsoft/botframework-solutions

Mengikuti perubahan protokol Skill ke WebSockets, kami telah menunggu perpustakaan Ekstensi Streaming baru tersedia untuk TypeScript, yang sebelumnya hanya tersedia untuk C#. Ini akan membuka blokir skenario pemanggilan Skill untuk Asisten Virtual saat menggunakan TypeScript.

Cerita Pengguna

Sebagai ... Pengembang
Saya ingin ... dapat menghubungkan keterampilan ke versi TypeScript dari Asisten Virtual
sehingga ... ada paritas antara C# dan TypeScript

Kriteria penerimaan

  • [ ] Perbarui VA dan generator Keterampilan untuk memasukkan Keterampilan GA SDK baru
  • [ ] Deploy VA TypeScript dan tambahkan Skill C# (mis. Kalender)
  • [ ] Berikan dokumentasi tentang perubahan yang diperlukan untuk solusi VA yang ada dan Keterampilan yang dibuat oleh generator sesuai kebutuhan
P0 Committed In Progress

Komentar yang paling membantu

@Batta32 Jika SkillConversationIdFactory menggunakan encodeURI, maka keterampilan akan menerima percakapan itu dan meresponsnya sesuai dengan itu. Saya cukup yakin ini diperlukan.

Juga ya, ada masalah dengan id percakapan yang panjang saat menggunakan restify. Kami menyebutkan cara mengatasi masalah dalam contoh ini: https://github.com/microsoft/BotBuilder-Samples/blob/master/samples/javascript_nodejs/80.skills-simple-bot-to-bot/simple-root -bot/skillConversationIdFactory.js#L21

// Kunci ini memiliki batas 100 karakter secara default. Tingkatkan dengan restify.createServer({ maxParamLength: 1000 }); di index.js.

Semua 64 komentar

hai Darrenj,
Apakah ada ETA tentang masalah yang harus diperbaiki?
Terima kasih,
Kumar

Berharap untuk bekerja dari ujung ke ujung untuk pengujian minggu ini semuanya baik-baik saja.

Terima kasih @darrenj untuk pembaruannya.

apakah ada pembaruan tentang masalah ini @darrenj

Hai Darren,

@darrenj bisakah Anda memberikan pembaruan pada item pekerjaan ini. kami membutuhkan fitur penting ini untuk dikembangkan untuk kasus penggunaan kami.

menghargai bantuan Anda.

Terima kasih,
Kumar

Hai @darrenj ,

Maaf mengganggu Anda lagi, apakah ada pembaruan tentang ini?
Saya melihat bahwa perpustakaan telah dirilis untuk versi 4.6.0 (https://botbuilder.myget.org/feed/botbuilder-v4-js-daily/package/npm/botframework-streaming), apakah ini kompatibel dengan Botframework 4.5.0 dan Asisten Virtual?

Ada beberapa hal dalam penerbangan di sini, satu adalah ketersediaan ekstensi streaming yang telah Anda lihat dan yang lainnya adalah ketersediaan TypeScript dari versi GA baru dari perpustakaan Keterampilan. Saya mengharapkan paket pertama dari pustaka Keterampilan minggu depan di mana kita dapat memulai pembaruan dari template C# dan TypeScript untuk menguji dan menyediakan langkah-langkah migrasi (sederhana).

Kami menargetkan pekerjaan ini siap digunakan pada bulan Januari dan akan terus memperbarui masalah ini dengan kemajuan termasuk saat build harian tersedia.

Sementara itu Bot Javascript/Typescript VA dapat memanggil Skill yang dibuat dalam JavaScript/Typescript karena ini menggunakan HTTP karena kurangnya ketergantungan ekstensi streaming. Masalahnya muncul ketika Anda ingin memanggil Keterampilan C # seperti Kalender yang perubahan di atas akan selaras di semua bahasa.

@darrenj apakah ini sudah diperbaiki dan dapatkah saya menghubungkan Keterampilan C# dari TypeScript VA? Saya bingung dengan komentar terakhir Anda.

Halo @darrenj ,

Setelah ini diselesaikan, apakah mungkin untuk memanggil keterampilan cSharp seperti ToDo dari versi TypeScript di VA ?

Saat ini, saya mendapatkan kesalahan terkait dengan WebSocketTransport yang digunakan pada keterampilan C#. Tapi VA saya adalah TypeScript.

Ya, migrasi ke versi GA Keterampilan menghilangkan ketergantungan pada Websockets dan dengan demikian akan memungkinkan perpaduan/kecocokan keterampilan yang mulus di seluruh platform. Kami memiliki bit terbaru untuk C# dan JS dan bekerja pada integrasi awal, tujuannya adalah untuk mendapatkan perubahan ke build harian dalam beberapa minggu ke depan untuk membuka blokir skenario.

Hai @darrenj ,

Saya memiliki kasus penggunaan lain yaitu TypeScript VA dan TypeScript Skill.

Masalah saya adalah updateActivity tidak tersedia di seluruh VA ke Skill dan saya memerlukan perpustakaan streaming untuk ini (sejauh yang saya mengerti). Sekarang saya benar-benar memperhatikan bahwa dependensi WebSocket telah dihapus dari perpustakaan keterampilan terbaru (4.4.9).
Tidak mengerti mengapa :) Apakah akan dipindahkan ke tempat lain? Atau?

Oke, saya memiliki pembaruan tentang kemajuan sehubungan dengan GA dari kemampuan Keterampilan dalam Bot Framework SDK. Ini telah mentransisikan pekerjaan yang diinkubasi oleh Asisten Virtual menjadi versi GA formal.

Tersedia sampel yang menunjukkan bagaimana Bot dapat memanggil Bot (Keterampilan) lain. Perubahan utama adalah kami sekarang memiliki adaptor terpadu yang berarti tidak perlu menggunakan adaptor atau ekstensi Streaming yang berbeda. C# dan JS .

Kami sedang mengerjakan pembaruan pada template Asisten Virtual / Keterampilan untuk memberikan perubahan (kecil) di luar kotak dan memberikan dokumentasi tentang beberapa langkah yang diperlukan untuk memperbarui Keterampilan yang ada. Menargetkan akhir Januari, dengan build di build harian kami segera.

Jika Anda ingin membuat kemajuan sebelum ini, sampel di atas akan memberikan semua yang Anda butuhkan. Saya akan memperbarui masalah ini dengan petunjuk ke build/perubahan harian segera setelah siap.

@darrenj terima kasih atas pembaruan yang luar biasa ini. Saya hanya ingin tahu tentang adaptor terpadu sebelum kami mulai memanfaatkannya di Asisten virtual produksi kami.

Apakah ini berarti kita dapat menggunakan adaptor terpadu di TypeScript VA dan masih dapat menggunakan keterampilan c#?

Pembaruan yang sudah lama ditunggu-tunggu!

Kami memposting rilis 0.8 kemarin yang mencakup pembaruan untuk semua Keterampilan sampel kami untuk mendukung kemampuan Keterampilan GA baru dan tidak lagi melihat pratinjau. Soket web telah dipensiunkan untuk mendukung komunikasi Layanan Web antar keterampilan, Keterampilan berkomunikasi kembali ke Bot secara asinkron menggunakan koneksi HTTP "panggilan balik".

Akibatnya ada beberapa pembaruan langsung ke Asisten Virtual dan Keterampilan yang akan dibuat. Pembaruan C# VA didokumentasikan di sini dan pembaruan Keterampilan C# didokumentasikan di sini .

Perubahan generator JS/Typescript yang setara sedang diselesaikan saat kami berbicara dan menargetkan penerbitan Generator dan dokumen baru untuk VA/Keterampilan yang ada sebelum 14 Februari. Untuk referensi latar belakang, langkah-langkah tingkat tinggi untuk mendukung keterampilan memanggil dapat ditemukan di sini

Setelah perubahan ini selesai, itu berarti JS/Ketik VA dapat memanggil Keterampilan C#, sebaliknya dan memang Python juga.

@darrenj , ada pemikiran tentang komentar di atas tentang proyek TypeScript?

Sesuai di atas, ya akan ada beberapa langkah migrasi untuk diikuti yang sedang kami selesaikan

Terima kasih.

Hai @darrenj , ada berita kapan generator JS/TS berubah dan pembaruan dokumen akan dirilis?

hai @darrenj , dapatkah Anda memberi tahu kami jika komunikasi dari VA (C#) ke pekerjaan keterampilan TypeScript dilakukan dalam kerangka kerja baru (SDK) yang Anda sebutkan di atas. Anda telah mengatakan itu akan dilakukan pada 14 Februari.
menghargai bantuan Anda

@darrenj ada update tiket ini?

@darrenj Hari ini saya mencoba untuk melakukan migrasi atau perbaikan untuk memanggil keterampilan C# dari VA/RootBot (TypeScript). Saya menemukan panduan untuk mengimplementasikan konsumen keterampilan yang tidak memiliki contoh rootbot/VA TypeScript. Apakah ada rencana untuk mendukung panduan migrasi berbasis TypeScript? Beri tahu saya ETA atau panduan lain yang dapat membantu mencapai hal yang sama ..

Kami memiliki serangkaian Permintaan Tarik dalam penerbangan untuk perubahan yang memungkinkan VA/Keterampilan TypeScript baru menggunakan Keterampilan GA baru. Saya akan memperbarui tiket setelah kami menggabungkannya dan membangun harian tersedia.

Sementara itu di sini adalah dokumen draf tentang langkah-langkah untuk memigrasi VA yang ada, umpan balik diterima.

https://github.com/microsoft/botframework-solutions/pull/3123

Hai @darrenj , terima kasih atas pembaruannya, satu-satunya pertanyaan yang saya miliki saat ini adalah tentang 'solusi pembuat bot'. Apakah kita harus menggunakan versi lokal? Dari mana? Saya menemukan cabang ini di sini yang terlihat seperti rilis mendatang ( https://github.com/Microsoft/botframework-solutions/tree/feature/southworks/0.7/parity-botbuilder-solutions/sdk/typescript/libraries/botbuilder-solutions ) , Apakah itu benar?

Terima kasih sebelumnya.

@Batta32 Bisakah Anda dengan cepat mengonfirmasi cabang kode mana yang dapat digunakan orang untuk menguji instruksi (sebelum perpustakaan baru diterbitkan)

@tommyJimmy87 - Anda dapat memeriksa PR #3122 yang berisi semua perubahan yang diperlukan dari BotBuilder-Solutions untuk GA Skills SDK di TypeScript.
Cabang: feature/southworks/ga-skills-sdk/botbuilder-solutions

Untuk menggunakan perpustakaan secara lokal, ikuti langkah-langkah ini (menggunakan cabang yang disebutkan):

  1. Buka perpustakaan di Visual Studio Code
  2. Jalankan npm install untuk menginstal dependensi
  3. Jalankan npm run build untuk mengkompilasi solusi
  4. Jalankan npm pack untuk membuat file .tgz perpustakaan
  5. Buka file package.json Asisten Virtual di Visual Studio Code
  6. Perbarui referensi solusi pembuat bot yang menunjuk ke jalur tgz yang dibuat
  7. Jalankan npm install untuk menginstal dependensi yang akan menginstal paket lokal

Kami sedang memvalidasi perubahan ini, jangan ragu untuk memberikan umpan balik dalam PR itu dan kami akan meninjaunya secepatnya.

Masalah ini sudah basi karena sudah buka 30 hari tanpa aktivitas. Hapus label atau komentar basi atau ini akan ditutup dalam 5 hari

@darrenj - dapatkah Anda memberi tahu kami jika perubahan yang disebutkan di bawah ini dapat dilakukan untuk koneksi dari VA(C#) ke Skill yang merupakan node js .

https://microsoft.github.io/botframework-solutions/overview/whats-new/0.8-beta/migrate-existing-va-to-0.8/

Ya - dokumentasinya ada di PR dan tim sedang menyelesaikan pekerjaan ini saat kita berbicara! (@Batta32). Anda dapat melihat pekerjaan yang sedang berlangsung di sini: https://github.com/microsoft/botframework-solutions/pull/3123

Seiring dengan perubahan terkait pada SDK: https://github.com/microsoft/botframework-solutions/pull/3122

Seperti yang dijanjikan dan terima kasih atas kesabaran Anda saat kami mengerjakan serangkaian perubahan di seluruh SDK.

  • Langkah-langkah untuk memperbarui TypeScript VA Anda yang ada ke GA BF Skills ada di sini
  • Langkah-langkah untuk memperbarui Keterampilan TypeScript Anda yang ada ke Keterampilan GA BF ada di sini

Selain itu, pembuatan generator VA harian berikutnya akan menyertakan perubahan ini di luar kotak. Saya akan memperbarui masalah ini dengan versi yang tepat setelah diproses dan divalidasi.

Ini kemudian akan dipublikasikan ke npm ketika kami memproses rilis 1.0 yang saat ini ditahan menunggu jendela perubahan Azure. Kami berharap pada akhir bulan.

Setiap pertanyaan/masalah dengan hal di atas, silakan angkat masalah baru dan kami siap membantu.

@Batta32 untuk migrasi kita bisa mulai menggunakan botbuilder-solutions 4.5.0-preview ? Saya kira adalah rilis baru untuk migrasi kan?

@Batta32 Kapan SDK baru akan dirilis untuk digunakan? Saya sedang membangun VA dengan 13 keterampilan dan salah satu persyaratannya adalah itu dibangun di TypeScript. Saya menggunakan SDK dari cabang Berikutnya saat ini untuk memulai proyek.

Hai @tommyJimmy87 & @tomSauret847 , sebelum dipublikasikan, Anda dapat menggunakan paket yang diterbitkan di MyGet sebagai build harian:

Untuk mengintegrasikan botbuilder-solutions daily build, Anda memiliki dua opsi berbeda, kami merekomendasikan opsi pertama karena ini yang termudah (pertimbangkan untuk menghapus package-lock dan node_modules bot Anda) :

  • Opsi 1: Tambahkan file .npmrc menunjuk ke registri https://botbuilder.myget.org/F/aitemplates/npm , dan perbarui package.json untuk mengarahkan versi botbuilder-solutions ke 4.5.0-preview223
  • Opsi 2: Unduh tgz dari botbuilder-solutions mereferensikannya langsung di package.json dengan jalur absolut
npm pack [email protected] --registry https://botbuilder.myget.org/F/aitemplates/npm

Jika Anda ingin menggunakan generator-botbuilder-assistant , Anda harus menghapusnya jika sudah memilikinya dan kemudian menginstal salah satu dari MyGet:

npm uninstall -g generator-botbuilder-assistant
npm install -g [email protected] --registry https://botbuilder.myget.org/F/aitemplates/npm

@Batta32 Di mana kami perlu melaporkan masalah yang kami temukan dengan build pratinjau? Saya telah membuat VA baru menggunakan generator pratinjau dan menggunakan SDK pratinjau dan menerima kesalahan bahwa dialog yang tidak valid ditambahkan saat mencoba menjalankan VA tanpa penyesuaian apa pun.
Kesalahan: DialogSet.add(): Dialog yang ditambahkan tidak valid.

@darrenj - apa pendekatan terbaik untuk melaporkan masalah build harian?

@tomSauret847 - sementara itu, Anda dapat membagikan masalah Anda di utas ini dengan lingkungan Anda dan langkah-langkah repro 😊!

Lingkungan berjalan secara lokal di komputer windows 10
Langkah-langkah: jalankan generator pratinjau untuk membuat VA kosong
perbarui appsettings.json dan cognitivemodels.json
tambahkan file .npmrc yang menunjuk ke https://botbuilder.myget.org/F/aitemplates/npm
hapus node_modules dan package-lock.json
jalankan npm install [email protected]
jalankan npm install untuk menginstal semua paket lainnya
jalankan NPM build
jalankan npm jalankan mulai
maka saya menerima kesalahan berikut
C:UsersuserDesktopBlankVAtestassistantnode_modulesapplicationinsightsoutAutoCollectionExceptions.js:34
lempar THIS_IS_APPLICATION_INSIGHTS_RETHROWING_YOUR_EXCEPTION; // Kesalahan berasal dari tempat lain di aplikasi Anda
^

Kesalahan: DialogSet.add(): Dialog yang ditambahkan tidak valid.
di DialogSet.add (C:UsersuserDesktopBlankVAtestassistantnode_modulesbotbuilder-dialogslibdialogSet.js:87:19)
di MainDialog.addDialog (C:UsersuserDesktopBlankVAtestassistantnode_modulesbotbuilder-dialogslibcomponentDialog.js:148:22)
di MainDialog baru (C:UsersuserDesktopBlankVAtestassistantlibdialogsmainDialog.js:34:14)
di Obyek.(C:UsersuserDesktopBlankVAtestassistantlibindex.js:159:24)
di Module._compile (internal/modules/cjs/loader.js:778:30)
di Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
di Module.load (internal/modules/cjs/loader.js:653:32)
di tryModuleLoad (internal/modules/cjs/loader.js:593:12)
di Function.Module._load (internal/modules/cjs/loader.js:585:3)
di Function.Module.runMain (internal/modules/cjs/loader.js:831:12)

Terima kasih! Kami mereproduksi masalah mengikuti langkah Anda, namun ini adalah kesalahan dalam urutan pemasangan dependensi yang menyebabkan konflik ketika botbuilder-solutions diinstal memisahkan sisanya.

image

Coba ikuti langkah - node_modules dan package-lock )

  1. Perbarui package.json dengan versi 4.5.0-preview223 di botbuilder-solutions

image

  1. Instal semua dependensi yang menjalankan npm install
  2. Bangun solusi dengan mengeksekusi npm run build
  3. Mulai Asisten Virtual yang menjalankan npm run start

image

@tomSauret847 beri tahu saya jika Anda melihat masalah lain. Kami sedang menyelesaikan validasi akhir dan akan mendorong build baru ke npm setelah selesai.

Hai @darrenj , saya mendapat kesalahan ketika mencoba menyelesaikan file lg dengan manajer templat baru, pada dasarnya yang terjadi adalah saya menerima lokal en-US dari MS Teams tetapi saya hanya menetapkan en-us (huruf kecil) dan tidak akan diakui. Mungkin menambahkan huruf kecil di sini if (this.templateEnginesPerLocale.has(locale)) akan menyelesaikan masalah (LocaleTemplateEngineManager.ts baris 61) . Untuk menghindari masalah ini untuk saat ini saya harus menambahkan ini di index.ts saya :

const supportedLocales: string[] = ['en-us', 'en-US','de-de'];

supportedLocales.forEach((locale: string) => {
    const localeTemplateFiles: string[] = [];
    templateFiles.forEach(template => {
        // LG template for en-us does not include locale in file extension.
        if (locale === 'en-us' || locale === 'en-US') {
            localeTemplateFiles.push(path.join(__dirname, 'responses', `${ template }.lg`));
        }
        else {
            localeTemplateFiles.push(path.join(__dirname, 'responses', `${ template }.${ locale }.lg`));
        }
    });

    localizedTemplates.set(locale, localeTemplateFiles);
});

Ini bekerja dengan baik tetapi saya tidak tahu apakah dapat dilakukan dengan cara yang lebih baik.

Terima kasih. @Batta32 - dapatkah Anda memeriksa untuk melihat apakah Anda memiliki perubahan pada LocaleTemplateEngine dalam solusi Lib yang menggunakan SDK yang disediakan MultiLanguageLG ? Saya berharap ini akan menangani kasus campuran dengan elegan tetapi beberapa tes akan baik untuk divalidasi.

@lzc850612 Bisakah kita menjalankan validasi cepat dengan csharp GA RC untuk memeriksa apakah berfungsi seperti yang diharapkan dengan lokal kasus campuran yang masuk ke Bot pada suatu Aktivitas?

Tentu @darrenj , kami akan memeriksa perubahan itu!

@darrenj terima kasih atas pembaruan perkembangannya! Saya memiliki masalah lokal yang sama yang ditunjukkan tommyJimmy tetapi berhasil melewatinya dengan menambahkan locale.toLowerCase di localeTemplateManager. Saat ini saya melampirkan keterampilan khusus ke VA tetapi masih menerima kesalahan yang saya coba lacak. Keterampilan mengembalikan kesalahan 501 ke VA tetapi memproses pesan dalam fungsi onMessage di defaultActivityHandler.ts, hanya saja tidak meneruskan aktivitas ke dialog utama untuk diproses keterampilan. Saya menambahkan keterampilan dengan memperbarui file appSettings.json, dan keterampilan menerima aktivitas.

@ Batta32 Saya ingin memeriksa apakah jalur ke depan masih menyertakan localTemplateEngineManager. Saya perhatikan itu hilang dari build pratinjau dan hanya responseManager yang ada. Ke depan, apakah kita perlu menggunakan Manajer respons atau apakah templat Lokal akan ditambahkan kembali?

@ Batta32 Saya dapat melacak kesalahan yang saya terima saat berkomunikasi dengan keterampilan dari VA. Pada modul dialogEx terdapat send trace yaitu mengirimkan trace kembali ke VA dimana skill tersebut dimulai. SendActivity ini melempar kesalahan berikut saat dipanggil:
Kesalahan: /api/messages/v3/conversations/5659a380-841b-11ea-bed3-831b5a6aa1eb%7Clivechat-dlpskill-emulator-skillconvo/activities/5b61c920-841b-11ea-b148-8581dc55a9bb tidak ada
Saat ID percakapan ditambahkan di SkillConversationIdFactory, keterampilan tidak dapat memposting kembali ke ID percakapan baru.

Memperbarui:
Saya salah ketik di skillHostEndpoint yang menyebabkan masalah ini. Setelah saya mengoreksi bahwa saya sekarang dapat melampirkan keterampilan dan membuat mereka berinteraksi dengan VA.

@Batta32 @darrenj Saya menghadapi perilaku yang tidak terduga ketika mencoba menggunakan obrolan dengan VA: pada dasarnya setiap kali pengguna menanyakan sesuatu ke Bot, introstep akan meminta kembali pesan awal, yang dalam kasus obrolan tidak sehebat UX . Apakah ini yang diharapkan atau saya melewatkan sesuatu?

Screen Shot 2020-04-23 at 11 25 46

(pesan harap tunggu adalah pesan khusus jangan khawatir tentang itu
)

@ Batta32 Saya dapat melacak kesalahan yang saya terima saat berkomunikasi dengan keterampilan dari VA. Pada modul dialogEx terdapat send trace yaitu mengirimkan trace kembali ke VA dimana skill tersebut dimulai. SendActivity ini melempar kesalahan berikut saat dipanggil:
Kesalahan: /api/messages/v3/conversations/5659a380-841b-11ea-bed3-831b5a6aa1eb%7Clivechat-dlpskill-emulator-skillconvo/activities/5b61c920-841b-11ea-b148-8581dc55a9bb tidak ada
Saat ID percakapan ditambahkan di SkillConversationIdFactory, keterampilan tidak dapat memposting kembali ke ID percakapan baru.

Memperbarui:
Saya salah ketik di skillHostEndpoint yang menyebabkan masalah ini. Setelah saya mengoreksi bahwa saya sekarang dapat melampirkan keterampilan dan membuat mereka berinteraksi dengan VA.

@tomSauret847 Apa masalah Anda? karena saya mengalami kesalahan yang sama dan tidak mengerti apa itu. Di Asisten Virtual saya, saya punya ini:
"skillHostEndpoint": "https://1c34e472.ngrok.io/api/skills"
Yang merupakan titik akhir dari VA.

Error: /api/skills/v3/conversations/a%3A1QIRXOg6VwVn2aGC-eTj9sj3YYd6YUVrRKf8J7wLrjH1fPYcpn2dYpMyQpr_aHLHSp9Z2SHVzu8lKbdj_ArEh06kvjyF48IG1tgE1ctKTWdIASDloNgy51_eBFoGzwwIN-waSearchSkill-msteams-skillconvo/activities/1588679971133 does not exist at new RestError (/Users/em.tomaselli/Desktop/repository/BMW/wa-search-skill/node_modules/@azure/ms-rest-js/dist/msRest.node.js:1397:28) at /Users/em.tomaselli/Desktop/repository/BMW/wa-search-skill/node_modules/@azure/ms-rest-js/dist/msRest.node.js:1849:37 at process._tickCallback (internal/process/next_tick.js:68:7)

@Batta32 Saya dapat menggunakan VA dan 1 keterampilan saya ke Azure. Ketika saya menggunakan obrolan web, semuanya berfungsi seperti yang diharapkan. Ketika saya mencoba menggunakan saluran tim, saya menerima kesalahan di bawah ini. Ini tampaknya diisolasi ke saluran Teams karena obrolan web dirutekan dengan benar.
Kesalahan: Kesalahan saat memanggil id keterampilan: "dlpskill" di "https://{nama aplikasi}.azurewebsites.net/api/skill/messages" (statusnya adalah 500).
Kesalahan: / api / keterampilan / v3 / percakapan / a: 1lFWWXG9CVtdrkA76VLFeS9CbYWzsHVr9mQ4S7BqDpL4K5WNIc0ND6mqaaj_QsSqH-qUU-Gb2vLX3HQ4CpG3ZDPCbR0XKLtJGOqW0kwKUbe2HKv5C9fs1sjLSO4EvoE5h-dlpskill-msteams-skillconvo / kegiatan / 1588712064379 tidak ada
di SkillDialog.(D:homesitewwwrootnode_modulesbotbuilder-dialogslibskillDialog.js:164:23)
di Generator.next ()
saat terpenuhi (D:homesitewwwrootnode_modulesbotbuilder-dialogslibskillDialog.js:11:58)
di process._tickCallback (internal/process/next_tick.js:68:7)

@tommyJimmy87 Saya tidak menggunakan ngrok untuk berkomunikasi dari VA ke skill lokal jadi saya bisa menggunakan localhost:3979/api/skills untuk skillHostEndpoint dan bisa mencapai skill. Karena Anda juga menggunakan saluran Teams, saya akan mengatakan bahwa ini adalah masalah dengan saluran Teams. Anda dapat mencoba mencapai keterampilan menggunakan obrolan web dan melihat apakah Anda dapat berkomunikasi dengan keterampilan dari VA di biru.

Hai @Batta32 , Saya setuju dengan @tomSauret847 bahwa kemungkinan besar ada masalah dengan Saluran Tim.

Setelah sedikit debugging, saya mungkin mencoba menjelaskan apa yang saya temukan:

1) Dalam ChannelServiceHandler semua metode tidak diimplementasikan, artinya ketika salah satu dari /api/skills dipanggil akan selalu mengembalikan kode kesalahan;

yaitu File : ChannelServiceHandler.ts (pembuat bot) , baris : 219

    protected async onGetActivityMembers(claimsIdentity: ClaimsIdentity, conversationId: string, activityId: string): Promise<ChannelAccount[]> {
        throw new StatusCodeError(StatusCodes.NOT_IMPLEMENTED, `ChannelServiceHandler.onGetActivityMembers(): ${StatusCodes.NOT_IMPLEMENTED}: ${STATUS_CODES[StatusCodes.NOT_IMPLEMENTED]}`);
    }

2) /api/skills/v3/conversations/a%3A1QIRXOg6VwVn2aGC-eTj9sj3YYd6YUVrRKf8J7wLrjH1fPYcpn2dYpMyQpr_aHLHSp9Z2SHVzu8lKbdj_ArEh06kvjyF48IG1tgE1ctKTWdIASDloNgy51_eBFoGzwwIN-waSearchSkill-msteams-skillconvo/activities/1588761991793 Dalam kasus ini malah ada beberapa masalah dalam mengurai ID percakapan dan hasil kesalahan selalu sumber daya tidak ada, tetapi jika Anda mencoba memanggil URL yang sama mengubah percakapanId dengan string yang lebih sederhana itu akan berhasil (tetapi hasilnya akan tetap bahwa metode ini tidak diterapkan karena poin sebelumnya).

Hai @tommyJimmy87 , @tomSauret847 - maaf atas keterlambatannya. Kami akan meninjau skenario Saluran Tim menggunakan perubahan GA Skills SDK dan kami akan kembali ke utas ini nanti 😊.

@tommyJimmy87 - kami berhasil mereproduksi masalah menggunakan Microsoft Teams Channel. Kami akan kembali ke utas ini segera setelah kami memperbaiki masalah.

Terima kasih!

Hai @tommyJimmy87 , @tomSauret847 , kami berhasil menemukan alasan masalahnya.

Masalahnya adalah karakter _':'_ diganti menjadi _'%3A'_ ketika aktivitas dikirim kembali ke Asisten Virtual dari Skill, menghasilkan ketidakcocokan _conversationId_ antara kedua bot.
Rupanya, perilaku ini dijalankan dalam ketergantungan aksio menggantikan karakter seperti yang disebutkan.

Last but not least, ada masalah di microsoft/botbuilder-js#2182 yang menggantikan axios di botbuilder dan ditandai untuk siap _R10_.

Kami akan memperbarui dokumen Masalah yang Diketahui yang menjelaskan masalahnya

Akhirnya, kami akan kembali ke utas ini segera setelah kami memiliki pembaruan baru untuk kalian 😊

_Ketidakcocokan Id percakapan_
image

ketergantungan _axios menggantikan ':' menjadi '%3A'_
image

@Batta32 Apakah menurut Anda akan segera diperbaiki atau akan memakan sedikit waktu?

@tommyJimmy87 , @tomSauret847 - kami perhatikan bahwa masalahnya ada di ms-rest-js alih axios .

Masalahnya adalah ketidakcocokan conversationId antara Skill dan Asisten Virtual. Masalah ini muncul karena karakter _':'_ dari _conversationId_ dari Teams sedang diganti menjadi _'%3A'_ yang harus diganti kembali ke _':'_. Konversi terakhir tidak diterapkan di sendOperationRequest seperti yang dilakukan _axios_.

Mohon maaf atas kesalahannya 😊.

_encodeURIComponent tidak menggantikan '%3A' kembali ke ':'_
image

_Perbedaan penyandian antara aksio dan ms-rest-js_
image

@Batta32 agen default untuk versi ms-rest-js < 2.0 adalah axios https://github.com/Azure/ms-rest-js/blob/1.x/lib/axiosHttpClient.ts

Saya pikir salah satu cara untuk menyelesaikan masalah ini adalah dengan menggunakan encodeURI dalam implementasi SkillConversationIdFactory. Dengan cara ini, agen yang mendasari tidak akan mengubah percakapan.id dari apa yang disimpan di dalam pabrik.

Terima kasih @EricDahlvang , kami akan meninjau alternatif penggunaan encodeURI dalam SkillConversationIdFactory !

@EricDahlvang - menambahkan encodeURI di SkillConversationIdFactory tidak memperbaiki masalah karena Keterampilan sudah mengkodekan conversationId sebelum mengirim aktivitas kembali ke Asisten Virtual.

Kami menyadari bahwa masalah ini mungkin terkait dengan panjang percakapan Id saat diterima dari Microsoft Teams. Kami perhatikan bahwa menggunakan conversationId , titik akhir VA tidak terkena, namun, memangkas beberapa karakter dari conversationId dilakukan dengan benar.

Last but not least, masalah ini tidak ada di C#.

_Titik akhir tidak terkena dengan percakapan asli_
image

_Titik akhir dipukul dengan percakapanId_ yang dipangkas
image

_Masalahnya tidak ada di C#_
image

@Batta32 Jika SkillConversationIdFactory menggunakan encodeURI, maka keterampilan akan menerima percakapan itu dan meresponsnya sesuai dengan itu. Saya cukup yakin ini diperlukan.

Juga ya, ada masalah dengan id percakapan yang panjang saat menggunakan restify. Kami menyebutkan cara mengatasi masalah dalam contoh ini: https://github.com/microsoft/BotBuilder-Samples/blob/master/samples/javascript_nodejs/80.skills-simple-bot-to-bot/simple-root -bot/skillConversationIdFactory.js#L21

// Kunci ini memiliki batas 100 karakter secara default. Tingkatkan dengan restify.createServer({ maxParamLength: 1000 }); di index.js.

@EricDahlvang Terima kasih atas informasi ini. Saya menambahkan pembaruan ke VA dan keterampilan saya. Saya sekarang bisa membuat VA berkomunikasi dengan keterampilan di saluran Teams tanpa kesalahan.

Terima kasih @EricDahlvang atas informasi yang diberikan! Kami membuat PR #3359 meningkatkan maxParamLength dan juga memperbarui versi @types/restify@^8.4.2 .

Terima kasih kawan @tommyJimmy87 , @tomSauret847 , segera setelah perubahan ini digabungkan, Anda akan dapat mengujinya 😊.

image

@Batta32 maaf mengganggu Anda lagi, pertama-tama, saya menerapkan perubahan dan sekarang berfungsi. Sekarang saya memiliki masalah dengan aktivitas pembaruan keterampilan melalui VA, di dalam SkillHandler tidak ada implementasi untuk itu, dapatkah Anda memberikannya? Terima kasih

Hai @tommyJimmy87 , kami perhatikan bahwa SkillHandler di C# dan JS tidak berisi onUpdateActivity() seperti yang Anda sebutkan, sementara itu Anda dapat menambahkan handler Anda sendiri mulai dari SkillHandler atau ChannelServiceHandler .

@darrenj - dapatkah Anda mengonfirmasi bahwa tidak adanya metode onUpdateActivity() di SkillHandler sudah benar atau apakah ada rencana untuk menerapkannya?

@ Batta32 Saya benar-benar mencoba ini, implementasinya terlihat seperti ini:

    protected async onUpdateActivity(claimsIdentity: ClaimsIdentity, conversationId: string, activityId: string, activity: Activity): Promise<ResourceResponse> {
        return await this.updateActivity(claimsIdentity, conversationId, activityId, activity);
    }

Dan fungsi updateActivity adalah sebagai berikut:

private async updateActivity(claimsIdentity: ClaimsIdentity, conversationId: string, replyToActivityId: string, activity: Activity): Promise<ResourceResponse> {

        let skillConversationReference: SkillConversationReference;
        try {
            skillConversationReference = await this.conversationIdFactory.getSkillConversationReference(conversationId);
        } catch (err) {
            // If the factory has overridden getSkillConversationReference, call the deprecated getConversationReference().
            // In this scenario, the oAuthScope paired with the ConversationReference can only be used for talking with
            // an official channel, not another bot.
            if (err.message === 'Not Implemented') {
                const conversationReference = await this.conversationIdFactory.getConversationReference(conversationId);
                skillConversationReference = {
                    conversationReference,
                    oAuthScope: JwtTokenValidation.isGovernment(this.channelService) ?
                        GovernmentConstants.ToChannelFromBotOAuthScope :
                        AuthenticationConstants.ToChannelFromBotOAuthScope
                };
            } else {
                // Re-throw all other errors. 
                throw err;
            }
        }

        if (!skillConversationReference) {
            throw new Error('skillConversationReference not found');
        }
        if (!skillConversationReference.conversationReference) {
            throw new Error('conversationReference not found.');
        }

        const activityConversationReference = TurnContext.getConversationReference(activity);

        /**
         * Callback passed to the BotFrameworkAdapter.createConversation() call.
         * This function does the following:
         *  - Caches the ClaimsIdentity on the TurnContext.turnState
         *  - Applies the correct ConversationReference to the Activity for sending to the user-router conversation.
         *  - For EndOfConversation Activities received from the Skill, removes the ConversationReference from the
         *    ConversationIdFactory
         */
        const callback = async (context: TurnContext): Promise<void> => {
            const adapter: BotFrameworkAdapter = (context.adapter as BotFrameworkAdapter);
            // Cache the ClaimsIdentity and ConnectorClient on the context so that it's available inside of the bot's logic.
            context.turnState.set(adapter.BotIdentityKey, claimsIdentity);
            context.turnState.set(this.SkillConversationReferenceKey, activityConversationReference);
            activity = TurnContext.applyConversationReference(activity, skillConversationReference.conversationReference) as Activity;
            const client = adapter.createConnectorClient(activity.serviceUrl);
            context.turnState.set(adapter.ConnectorClientKey, client);

            context.activity.id = replyToActivityId;
            await context.updateActivity(context.activity);
            return;
        };

        // Add the channel service URL to the trusted services list so we can send messages back.
        // the service URL for skills is trusted because it is applied based on the original request
        // received by the root bot.
        AppCredentials.trustServiceUrl(skillConversationReference.conversationReference.serviceUrl);

        await (this.adapter as BotFrameworkAdapter).continueConversation(skillConversationReference.conversationReference, skillConversationReference.oAuthScope, callback);
        return { id: uuid() };
    }

Ini pada dasarnya adalah salinan dari fungsi processActivity yang sudah diterapkan di SkillHandler tetapi memanggil context.updateActivity(context.activity) di akhir.

Mengatakan bahwa saya mendapatkan kesalahan ini:

(node:68325) UnhandledPromiseRejectionWarning: Error: Failed to decrypt conversation id 

Mungkin ada sesuatu yang saya lewatkan atau saya lakukan salah.

@tommyJimmy87 - kami akan mencoba mereproduksi skenario Anda dan kami akan menghubungi Anda nanti 😊.

@ Batta32 Saya perhatikan di "Kartu bantuan" dengan asisten Virtual bahwa itu tidak menampilkan kartu bantuan untuk keterampilan aktif. Ketika Anda menekan interupsi "bantuan" saat dalam dialog keterampilan, itu masih menyajikan kartu bantuan untuk VA dan bukan keterampilan. Saya telah memperbarui ke rilis terakhir yang menyertakan pengaturan status ActiveSkillProperty dengan keterampilan yang aktif. Adakah ide tentang cara memperbaiki masalah ini? Keluar dari status dialog aktif masih terdaftar sebagai dialog yang saya miliki di VA dan bukan keterampilan aktif.

Hai @tommyJimmy87 , @tomSauret847 , terima kasih telah melaporkan masalah ini.

Karena [email protected] , [email protected] dan [email protected] diterbitkan dalam npmjs dan digabungkan dalam cabang master , Anda dapat membuat masalah di repositori untuk jelaskan lebih baik masalahnya dan kami akan menindaklanjutinya 😊.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat