Bagikan melalui


Gambaran umum keterampilan

BERLAKU UNTUK: SDK v4

Anda dapat memperluas bot menggunakan bot keterampilan . Keterampilan dapat dikonsumsi oleh berbagai bot lain, memfasilitasi penggunaan kembali, dan dengan cara ini, Anda dapat membuat bot yang menghadap pengguna dan memperluasnya dengan mengonsumsi keterampilan Anda sendiri atau pihak ketiga.

  • Keterampilan adalah bot yang dapat melakukan serangkaian tugas untuk bot lain—bot dapat menjadi keterampilan dan bot yang menghadap pengguna.
  • Konsumen keterampilan adalah bot yang dapat memanggil satu atau beberapa keterampilan. Konsumen keterampilan yang menghadap pengguna juga disebut bot root.
  • Manifes keterampilan adalah file JSON yang menjelaskan tindakan yang dapat dilakukan keterampilan, parameter input dan outputnya, dan titik akhir keterampilan.
    • Pengembang yang tidak memiliki akses ke kode sumber keterampilan dapat menggunakan informasi dalam manifes untuk merancang konsumen keterampilan mereka.
    • Skema manifes keterampilan adalah file JSON yang menjelaskan skema manifes keterampilan.
    • Lihat cara menerapkan keterampilan dan cara menulis manifes keterampilan untuk manifes keterampilan sampel.

Dengan kata lain, pengguna berinteraksi langsung dengan bot akar, dan bot akar mendelegasikan beberapa logika percakapannya ke keterampilan.

Fitur keterampilan dirancang sehingga:

  • Keterampilan dan konsumen berkomunikasi melalui HTTP menggunakan protokol Bot Framework.
  • Konsumen keterampilan dapat mengonsumsi beberapa keterampilan.
  • Konsumen keterampilan dapat menggunakan keterampilan terlepas dari bahasa yang digunakan untuk mengimplementasikan keterampilan. Misalnya, bot C# dapat menggunakan keterampilan yang diimplementasikan menggunakan JavaScript.
  • Keterampilan juga dapat menjadi konsumen keterampilan dan memanggil keterampilan lain.
  • Keterampilan mendukung autentikasi pengguna; namun, autentikasi pengguna bersifat lokal untuk keterampilan dan tidak dapat ditransfer ke bot lain.
  • Keterampilan dapat bekerja dengan adaptor Bot Framework dan adaptor kustom.

Diagram ini menunjukkan beberapa kemungkinan permutasi.

Illustration of permutations between skill consumers and skills.

Arsitektur konseptual

Konsumen keterampilan dan keterampilan adalah bot terpisah, dan Anda menerbitkannya secara independen.

  • Konsumen keterampilan memerlukan logika tambahan untuk mengelola keterampilan, seperti kapan harus memanggil atau membatalkan keterampilan, dan sebagainya. Selain bot dan objek adaptor biasa, konsumen mencakup beberapa objek terkait keterampilan, yang digunakan untuk bertukar aktivitas dengan keterampilan. Konsumen keterampilan mengimplementasikan setidaknya dua titik akhir HTTP:
    • Titik akhir olahpesan menerima aktivitas dari pengguna atau saluran. Ini adalah titik akhir olahpesan biasa yang diterapkan semua bot.
    • Titik akhir host keterampilan untuk menerima aktivitas dari keterampilan. Ini bertindak sebagai URL panggilan balik, URL layanan yang balasan keterampilannya. (Konsumen keterampilan perlu memasangkan kode yang menerima permintaan metode HTTP dari keterampilan dengan penangan keterampilan.)
  • Keterampilan memerlukan logika tambahan endOfConversation untuk mengirim aktivitas ketika selesai, sehingga konsumen keterampilan tahu kapan harus menghentikan aktivitas penerusan ke keterampilan.

Diagram ini menguraikan alur aktivitas dari pengguna ke bot root ke keterampilan dan kembali lagi.

Illustration of how activities flow from the user to the skill and back again.

  1. Adaptor bot akar menerima aktivitas dari pengguna dan meneruskannya ke penanganan aktivitas bot akar. (Aktivitas dari pengguna diterima di titik akhir olahpesan bot akar.)
  2. Bot root menggunakan klien HTTP keterampilan untuk mengirim aktivitas ke keterampilan. Klien mendapatkan informasi percakapan keterampilan konsumen dari definisi keterampilan dan pabrik ID percakapan keterampilan. Ini termasuk URL layanan yang akan digunakan keterampilan untuk membalas aktivitas.
  3. Adaptor keterampilan menerima aktivitas dari konsumen keterampilan dan meneruskannya ke penangan aktivitas keterampilan. (Aktivitas dari konsumen diterima di titik akhir olahpesan bot keterampilan.)
  4. Ketika keterampilan merespons, penangan keterampilan bot akar menerima aktivitas. Ini mendapatkan informasi percakapan pengguna akar dari pabrik ID percakapan keterampilan. Kemudian meneruskan aktivitas ke adaptor bot akar. (Aktivitas dari keterampilan diterima di titik akhir host keterampilan bot akar.)
  5. Adaptor bot akar secara internal menghasilkan pesan proaktif untuk melanjutkan percakapan dengan pengguna.
  6. Adaptor bot akar mengirim pesan apa pun dari keterampilan kepada pengguna.

Objek-objek ini membantu mengelola keterampilan dan merutekan lalu lintas keterampilan:

  • Keterampilan Bot Framework menjelaskan informasi perutean untuk keterampilan dan dapat dibaca dari file konfigurasi konsumen keterampilan.
  • Klien HTTP keterampilan mengirim aktivitas ke keterampilan.
  • Penangan keterampilan menerima aktivitas dari keterampilan.
  • Pabrik ID percakapan keterampilan diterjemahkan antara referensi percakapan akar pengguna dan referensi percakapan keterampilan akar.
  • Layanan Bot Koneksi or menyediakan autentikasi saluran dan bot-to-bot. Dengan menggunakan objek konfigurasi autentikasi, Anda dapat menambahkan validasi klaim ke keterampilan atau konsumen keterampilan untuk membatasi aplikasi atau pengguna mana yang memiliki akses.

Klien keterampilan dan objek penangan keterampilan menggunakan pabrik ID percakapan untuk menerjemahkan antara percakapan yang digunakan bot akar untuk berinteraksi dengan pengguna dan percakapan yang digunakan bot akar untuk berinteraksi dengan keterampilan.

Manifes keterampilan

Manifes keterampilan adalah file JSON yang menjelaskan tindakan yang dapat dilakukan keterampilan, parameter input dan outputnya, titik akhir keterampilan, dan model pengiriman untuk keterampilan.

Untuk informasi tentang skema manifes keterampilan, lihat cara menulis manifes keterampilan.

Komunikasi bot-ke-bot

Penting untuk memahami aspek-aspek tertentu dari desain ini, terlepas dari bot mana yang Anda rancang.

Tindakan keterampilan

Beberapa keterampilan dapat melakukan beberapa tugas atau tindakan. Misalnya, keterampilan yang harus dilakukan mungkin memungkinkan aktivitas membuat, memperbarui, menampilkan, dan menghapus yang dapat diakses sebagai percakapan diskrit.

Referensi percakapan

Percakapan akar pengguna berbeda dari percakapan akar keterampilan.

Pabrik ID percakapan membantu mengelola lalu lintas antara konsumen keterampilan dan keterampilan. Pabrik diterjemahkan antara ID percakapan yang dimiliki akar dengan pengguna dan yang dimilikinya dengan keterampilan. Dengan kata lain, ini menghasilkan ID percakapan untuk digunakan antara akar dan keterampilan, dan memulihkan ID percakapan akar pengguna asli dari ID percakapan keterampilan akar.

Koordinasi lintas server

Bot akar dan keterampilan berkomunikasi melalui HTTP. Jadi, instans bot akar yang menerima aktivitas dari keterampilan mungkin bukan instans yang sama yang mengirim aktivitas yang dimulai; dengan kata lain, server yang berbeda dapat menangani kedua permintaan ini.

  • Selalu simpan status di konsumen keterampilan sebelum meneruskan aktivitas ke keterampilan. Ini memastikan bahwa instans yang menerima lalu lintas dari keterampilan dapat mengambil di mana instans sebelumnya ditinggalkan sebelum disebut keterampilan.
  • Ketika penangan keterampilan menerima aktivitas dari keterampilan, ia menerjemahkannya ke dalam bentuk yang sesuai untuk konsumen keterampilan, dan meneruskannya ke adaptor konsumen.

Status konsumen dan keterampilan keterampilan

Konsumen keterampilan dan keterampilan mengelola status mereka sendiri secara terpisah. Namun, konsumen membuat ID percakapan yang digunakannya untuk berkomunikasi dengan keterampilan. Hal ini dapat berpengaruh pada status percakapan dalam keterampilan.

Penting

Seperti disebutkan sebelumnya, ketika konsumen keterampilan mendelegasikan aktivitas pengguna ke keterampilan, instans konsumen yang berbeda dapat menerima respons keterampilan. Konsumen harus selalu menyimpan status percakapan segera sebelum meneruskan aktivitas ke keterampilan.

Autentikasi bot-ke-bot

Anda tidak memerlukan ID aplikasi dan kata sandi untuk menguji keterampilan dan keterampilan konsumen secara lokal di Emulator Kerangka Kerja Bot. Langganan Azure masih diperlukan untuk menyebarkan keterampilan Anda ke Azure.

Autentikasi tingkat layanan dikelola oleh layanan Bot Koneksi or. Kerangka kerja menggunakan token pembawa dan ID aplikasi bot untuk memverifikasi identitas setiap bot. (Kerangka Kerja Bot menggunakan objek konfigurasi autentikasi untuk memvalidasi header autentikasi pada permintaan masuk.)

Penting

Ini mengharuskan semua bot yang disebarkan (konsumen keterampilan dan keterampilan apa pun yang dikonsumsinya) untuk memiliki kredensial aplikasi yang valid.

Validasi klaim

Anda harus menambahkan validator klaim ke konfigurasi autentikasi. Klaim dievaluasi setelah header autentikasi. Berikan kesalahan atau pengecualian dalam kode validasi Anda untuk menolak permintaan.

Catatan

Bot melakukan validasi klaim jika memiliki ID aplikasi dan kata sandi; jika tidak, validasi klaim tidak dilakukan.

Ada berbagai alasan Anda mungkin menolak permintaan yang diautentikasi:

  • Ketika konsumen keterampilan harus menerima lalu lintas hanya dari keterampilan yang mungkin telah memulai percakapan.
  • Ketika keterampilan adalah bagian dari layanan berbayar, dan pengguna yang tidak ada dalam database seharusnya tidak memiliki akses.
  • Ketika Anda ingin membatasi akses ke keterampilan ke konsumen keterampilan tertentu.

Penting

Jika Anda tidak memberikan validator klaim, bot Anda akan menghasilkan kesalahan atau pengecualian saat menerima aktivitas dari bot lain, apakah bot Anda adalah keterampilan atau konsumen keterampilan.

Men-debug percakapan keterampilan

Karena lalu lintas antara keterampilan dan konsumen keterampilan diautentikasi, ada langkah tambahan saat men-debug bot tersebut.

  • Konsumen keterampilan dan semua keterampilan yang dikonsumsinya, secara langsung atau tidak langsung, harus berjalan.
  • Jika bot berjalan secara lokal dan jika salah satu bot memiliki ID aplikasi dan kata sandi, semua bot harus memiliki ID dan kata sandi yang valid.
  • Jika semua bot disebarkan, lihat cara Men-debug bot dari saluran apa pun menggunakan ngrok.
  • Jika beberapa bot berjalan secara lokal dan beberapa disebarkan, lihat cara Men-debug keterampilan atau konsumen keterampilan.

Jika tidak, Anda dapat men-debug konsumen keterampilan atau keterampilan seperti Anda men-debug bot lain. Untuk informasi selengkapnya, lihat Men-debug bot dan Debug dengan Emulator Kerangka Kerja Bot.

Informasi Tambahan

Dari perspektif pengguna, mereka berinteraksi dengan bot akar. Dari perspektif keterampilan, konsumen keterampilan adalah saluran tempat ia berkomunikasi dengan pengguna.

  • Untuk informasi selengkapnya tentang konsumen keterampilan, lihat tentang konsumen keterampilan.