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 contoh manifes keterampilan.

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 Python.
  • 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.

Block diagram

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 objek bot dan adaptor yang 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 tempat keterampilan membalas. (Konsumen keterampilan perlu memasangkan kode yang menerima permintaan metode HTTP dari keterampilan dengan handler keterampilan.)
  • Keterampilan memerlukan logika tambahan endOfConversation untuk mengirim aktivitas ketika selesai, sehingga konsumen keterampilan tahu kapan harus berhenti meneruskan aktivitas ke keterampilan.

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

Architecture diagram

  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 handler 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 mengirimkan 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 Konektor Bot menyediakan autentikasi saluran dan bot-ke-bot. Dengan menggunakan objek konfigurasi autentikasi , Anda dapat menambahkan validasi klaim ke konsumen keterampilan atau 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 mengirimkan model untuk keterampilan tersebut.

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 berbagai 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 keterampilan akar.

Pabrik ID percakapan membantu mengelola lalu lintas antara konsumen keterampilan dan keterampilan. Pabrik menerjemahkan 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 tempat instans sebelumnya ditinggalkan sebelum disebut keterampilan.
  • Ketika handler 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 mungkin 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 konsumen keterampilan secara lokal di Bot Framework Emulator. Langganan Azure masih diperlukan untuk menyebarkan keterampilan Anda ke Azure.

Autentikasi tingkat layanan dikelola oleh layanan Konektor Bot. 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 kepada konsumen keterampilan tertentu.

Penting

Jika Anda tidak memberikan validator klaim, bot Anda akan menghasilkan kesalahan atau pengecualian saat menerima aktivitas dari bot lain, baik 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.

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.