Menulis manifes keterampilan
BERLAKU UNTUK: SDK v4
Manifes keterampilan adalah file JSON yang menjelaskan tindakan yang dapat diambil keterampilan, parameter input dan outputnya, dan titik akhir keterampilan. Manifes berisi informasi yang dapat dibaca mesin yang dapat digunakan pengembang untuk mengakses keterampilan dari bot lain.
Artikel ini menjelaskan versi skema manifes keterampilan Bot Framework yang didukung.
Versi | Catatan |
---|---|
versi 2.2 | Memperbarui beberapa properti URI untuk menerima referensi URI. |
versi 2.1 | Menambahkan kemampuan untuk menjelaskan aktivitas proaktif yang dapat dikirim keterampilan dan model pengiriman yang digunakan keterampilan. |
versi 2.0 | Versi awal. |
Skema manifes keterampilan Bot Framework menggunakan draf 7 kosakata skema JSON.
Prasyarat
- Pengetahuan tentang keterampilan.
- Beberapa keakraban dengan Skema JSON dan format JSON.
Manifes keterampilan
Manifes keterampilan berisi berbagai kategori informasi:
- Metadata yang menjelaskan keterampilan pada tingkat umum.
- Daftar titik akhir yang disediakan keterampilan.
- Daftar opsional aktivitas yang dapat diterima keterampilan dan dikirim secara proaktif.
- Objek definisi opsional yang berisi skema untuk objek yang dirujuk oleh bagian lain dari dokumen.
- Daftar opsional model pengiriman yang didukung keterampilan.
Tabel berikut menjelaskan skema lengkap untuk v2.2 dari manifes keterampilan Bot Framework.
Kategori/Bidang | Jenis/Format | Wajib | Deskripsi |
---|---|---|---|
Metadata | |||
$id | String | Wajib | Pengidentifikasi untuk manifes keterampilan. |
$schema | String/URI | Wajib | URI HTTPS dari sumber daya skema JSON yang menjelaskan format manifes. Untuk versi 2.2, URI adalah https://schemas.botframework.com/schemas/skills/v2.2/skill-manifest.json . |
Hak cipta | String | Opsional | Pemberitahuan hak cipta untuk keterampilan. |
description | String | Opsional | Deskripsi keterampilan yang dapat dibaca manusia. |
iconUrl | String/referensi URI | Opsional | URI ikon yang ditampilkan untuk keterampilan. |
lisensi | String | Opsional | Perjanjian lisensi untuk keterampilan. |
nama | String | Wajib | Nama keterampilan. |
privacyUrl | String/referensi URI | Opsional | URI deskripsi privasi untuk keterampilan. |
publisherName | String | Wajib | Nama penerbit keterampilan. |
tag | Array string | Opsional | Sekumpulan tag untuk keterampilan. Jika ada, setiap tag harus unik. |
versi | String | Wajib | Versi keterampilan yang dijelaskan manifes. |
Titik Akhir | |||
Titik akhir | array titik akhir | Wajib | Daftar titik akhir yang didukung oleh keterampilan. Setidaknya satu titik akhir harus ditentukan. Setiap titik akhir harus unik. |
Kegiatan | |||
aktivitas | Objek yang berisi objek aktivitas bernama | Opsional | Kumpulan aktivitas awal yang diterima oleh keterampilan. |
aktivitasSent | Objek yang berisi objek aktivitas bernama | Opsional | Menjelaskan aktivitas proaktif yang dapat dikirim keterampilan. |
Definisi | |||
definisi | Objek | Opsional | Objek yang berisi subskema untuk objek yang digunakan dalam manifes. |
Mengirimkan model | |||
dispatchModels | objek dispatchModels | Opsional | Menjelaskan model bahasa dan niat tingkat atas yang didukung oleh keterampilan. Lihat Mengirimkan model untuk skema untuk objek ini. |
Titik akhir
Setiap objek titik akhir menjelaskan titik akhir yang didukung oleh keterampilan.
Contoh ini mencantumkan dua titik akhir untuk keterampilan.
"endpoints": [
{
"name": "americas",
"protocol": "BotFrameworkV3",
"description": "Production endpoint for SkillBot in the Americas",
"endpointUrl": "http://myskill.contoso.com/api/messages",
"msAppId": "00000000-0000-0000-0000-000000000000"
},
{
"name": "eu",
"protocol": "BotFrameworkV3",
"description": "Production endpoint for SkillBot in Europe",
"endpointUrl": "http://myskill.contoso.com/api/messages",
"msAppId": "11111111-0000-0000-0000-000000000000"
}
],
objek titik akhir
Menjelaskan titik akhir yang didukung oleh keterampilan.
Bidang | Jenis/Format | Wajib | Deskripsi |
---|---|---|---|
description | String | Opsional | Deskripsi titik akhir. |
endpointUrl | String/URI | Wajib | Titik akhir URI untuk keterampilan. |
msAppId | String | Wajib | Microsoft AppId (GUID) untuk keterampilan, digunakan untuk mengautentikasi permintaan. Harus cocok dengan ekspresi reguler: ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$ . |
nama | String | Wajib | Nama unik untuk titik akhir. |
protokol | String | Opsional | Protokol Bot yang didukung. Defaultnya adalah "BotFrameworkV3", yang mewakili Bot Koneksi or API versi 3. Gunakan nilai default kecuali keterampilan Anda secara khusus menggunakan protokol yang berbeda. |
Aktivitas
Setiap objek aktivitas menjelaskan aktivitas yang diterima oleh keterampilan. Keterampilan memulai tindakan atau tugas berdasarkan aktivitas awal yang diterimanya. Nama yang terkait dengan objek aktivitas menunjukkan tindakan atau tugas yang akan dilakukan keterampilan.
Beberapa jenis aktivitas memiliki properti nilai yang dapat digunakan untuk memberikan input tambahan ke keterampilan. Ketika keterampilan berakhir (menyelesaikan tindakan), keterampilan dapat memberikan nilai pengembalian di properti nilai aktivitas akhir percakapan terkait.
Jenis aktivitas yang diizinkan adalah: pesan, peristiwa, pemanggilan, dan aktivitas lainnya . Keterampilan dapat menerima aktivitas pemanggilan, tetapi tidak dapat mengirimnya.
Berikut adalah deskripsi aktivitas sampel.
"bookFlight": {
"description": "Books a flight",
"type": "event",
"name": "BookFlight",
"value": {
"$ref": "#/definitions/bookingInfo"
},
"resultValue": {
"$ref": "#/definitions/bookingInfo"
}
},
objek eventActivity
Menjelaskan aktivitas peristiwa yang diterima atau dikirim oleh keterampilan. Arti aktivitas peristiwa didefinisikan oleh bidang namanya, yang bermakna dalam cakupan keterampilan.
Bidang | Jenis | Wajib | Deskripsi |
---|---|---|---|
description | String | Opsional | Deskripsi tindakan yang harus dimulai oleh peristiwa. |
nama | String | Wajib | Nilai properti nama aktivitas peristiwa. |
resultValue | Objek | Opsional | Definisi skema JSON dari jenis objek yang dapat dikembalikan oleh tindakan. |
jenis | String | Wajib | Jenis aktivitas. Harus "peristiwa". |
value | Objek | Opsional | Definisi skema JSON dari jenis objek yang diharapkan tindakan ini sebagai input. |
objek invokeActivity
Menjelaskan aktivitas pemanggilan yang diterima oleh keterampilan. Arti aktivitas pemanggilan didefinisikan oleh bidang namanya, yang bermakna dalam cakupan keterampilan.
Bidang | Jenis | Wajib | Deskripsi |
---|---|---|---|
description | String | Opsional | Deskripsi tindakan yang harus dimulai oleh pemanggilan. |
nama | String | Wajib | Nilai properti nama aktivitas pemanggilan. |
resultValue | Objek | Opsional | Definisi skema JSON dari jenis objek yang dapat dikembalikan oleh tindakan terkait. |
jenis | String | Wajib | Jenis aktivitas. Harus "dipanggil". |
value | Objek | Opsional | Definisi skema JSON dari jenis objek yang diharapkan tindakan ini sebagai input. |
objek messageActivity
Menjelaskan aktivitas pesan yang diterima atau dikirim oleh keterampilan. Properti teks aktivitas pesan berisi ucapan pengguna atau bot.
Bidang | Jenis | Wajib | Deskripsi |
---|---|---|---|
description | String | Opsional | Deskripsi tindakan. |
resultValue | Objek | Opsional | Definisi skema JSON dari jenis objek yang dapat dikembalikan oleh tindakan terkait. |
jenis | String | Wajib | Jenis aktivitas. Harus "pesan". |
value | Objek | Opsional | Definisi skema JSON dari jenis objek yang diharapkan tindakan ini sebagai input. |
Objek Aktivitas lainnya
Menjelaskan jenis aktivitas lain yang diterima atau dikirim oleh keterampilan.
Bidang | Jenis | Wajib | Deskripsi |
---|---|---|---|
jenis | String | Wajib | Jenis aktivitas. Harus salah satu jenis aktivitas Bot Framework lainnya: "contactRelationUpdate", "conversationUpdate", "deleteUserData", "endOfConversation", "handoff", "installationUpdate", "messageDelete", "messageReaction", "messageUpdate", "suggestion", "trace", atau "typing". |
Objek Aktivitas lainnya dapat mencakup properti lain, tetapi skema manifes keterampilan tidak menentukan maknanya.
Definisi
Setiap definisi menjelaskan subskema yang dapat dikonsumsi oleh bagian lain dari dokumen.
Berikut adalah subskema sampel untuk informasi pemesanan penerbangan.
"bookingInfo": {
"type": "object",
"required": [
"origin"
],
"properties": {
"origin": {
"type": "string",
"description": "this is the origin city for the flight"
},
"destination": {
"type": "string",
"description": "this is the destination city for the flight"
},
"date": {
"type": "string",
"description": "The date for the flight in YYYY-MM-DD format"
}
}
},
Mengirimkan model
Model pengiriman berisi daftar model bahasa dan daftar niat tingkat atas yang didukung oleh keterampilan. Ini adalah fitur canggih untuk memungkinkan pengembang konsumen keterampilan membuat model bahasa yang menggabungkan fitur bot konsumen dan keterampilan.
Setiap model bahasa menggunakan .lu
format file atau .qna
. Untuk informasi selengkapnya tentang format ini, lihat format file .lu dan format file .qna.
Nama lokal adalah kombinasi dari kode budaya huruf kecil dua huruf ISO 639 yang terkait dengan bahasa dan kode subkultur huruf besar dua huruf ISO 3166 opsional yang terkait dengan negara atau wilayah, misalnya "en" atau "en-US".
Bidang | Jenis | Wajib | Deskripsi |
---|---|---|---|
niat | Array string | Opsional | Daftar niat tingkat atas yang didukung oleh keterampilan. Setiap niat harus unik. |
bahasa | Objek yang berisi array languageModel bernama | Opsional | Daftar model bahasa yang didukung oleh keterampilan. Setiap nama adalah lokal untuk model bahasa, dan array berisi model bahasa untuk lokal tersebut. Model pengiriman harus mendukung setidaknya satu lokal. Setiap lokal dalam bidang bahasa harus unik. |
Berikut adalah contoh model pengiriman yang berisi dua model bahasa di tiga lokal. Ini juga menjelaskan dua niat tingkat atas yang dapat dikenali keterampilan.
"dispatchModels": {
"languages": {
"en": [
{
"name": "SkillBot LU (English)",
"contentType": "application/lu",
"url": "http://sample.com/SkillBot-en.lu",
"description": "English language model for the skill"
},
{
"name": "SkillBot QnA LU (English)",
"contentType": "application/qna",
"url": "http://sample.com/SkillBot-QnA-en.qna",
"description": "English language model for the skill (QnAMaker)"
}
],
"es-ES": [
{
"name": "SkillBot LU (Spanish-Spain)",
"contentType": "application/lu",
"url": "http://sample.com/SkillBot-es-ES.lu",
"description": "Spanish (Spain) language model for the skill"
},
{
"name": "SkillBot QnA LU (Spanish-Spain)",
"contentType": "application/qna",
"url": "http://sample.com/SkillBot-QnA-es-ES.qna",
"description": "Spanish (Spain) language model for the skill (QnAMaker)"
}
],
"es-MX": [
{
"name": "SkillBot LU (Spanish-Mexico)",
"contentType": "application/lu",
"url": "http://sample.com/SkillBot-es-MX.lu",
"description": "Spanish (Mexico) language model for the skill"
},
{
"name": "SkillBot QnA LU (Spanish-Mexico)",
"contentType": "application/qna",
"url": "http://sample.com/SkillBot-QnA-es-MX.qna",
"description": "Spanish (Mexico) language model for the skill (QnAMaker)"
}
]
},
"intents": [
"bookFlight",
"getWeather"
]
},
objek languageModel
Menjelaskan model bahasa untuk budaya tertentu. Namanya adalah nama lokal.
Bidang | Jenis/Format | Wajib | Deskripsi |
---|---|---|---|
contentType | String | Wajib | Jenis model bahasa. |
description | String | Opsional | Deskripsi model bahasa. |
nama | String | Wajib | Nama model bahasa. |
url | String/referensi URI | Wajib | URL untuk model bahasa. |
Manifes sampel
Berikut adalah sampel lengkap manifes v2.2 untuk keterampilan yang mengekspos beberapa aktivitas.
{
"$schema": "https://schemas.botframework.com/schemas/skills/v2.2/skill-manifest.json",
"$id": "SkillBot",
"name": "Sample skill definition that can handle multiple types of activities",
"version": "1.0",
"description": "This is a sample skill definition for multiple activity types",
"publisherName": "Microsoft",
"privacyUrl": "https://myskill.contoso.com/privacy.html",
"copyright": "Copyright (c) Microsoft Corporation. All rights reserved.",
"license": "",
"iconUrl": "skillIcon.png",
"tags": [
"sample",
"travel",
"weather"
],
"endpoints": [
{
"name": "americas",
"protocol": "BotFrameworkV3",
"description": "Production endpoint for SkillBot in the Americas",
"endpointUrl": "http://myskill.contoso.com/api/messages",
"msAppId": "00000000-0000-0000-0000-000000000000"
},
{
"name": "eu",
"protocol": "BotFrameworkV3",
"description": "Production endpoint for SkillBot in Europe",
"endpointUrl": "http://myskill.contoso.com/api/messages",
"msAppId": "11111111-0000-0000-0000-000000000000"
}
],
"dispatchModels": {
"languages": {
"en": [
{
"name": "SkillBot LU (English)",
"contentType": "application/lu",
"url": "http://sample.com/SkillBot-en.lu",
"description": "English language model for the skill"
},
{
"name": "SkillBot QnA LU (English)",
"contentType": "application/qna",
"url": "http://sample.com/SkillBot-QnA-en.qna",
"description": "English language model for the skill (QnAMaker)"
}
],
"es-ES": [
{
"name": "SkillBot LU (Spanish-Spain)",
"contentType": "application/lu",
"url": "http://sample.com/SkillBot-es-ES.lu",
"description": "Spanish (Spain) language model for the skill"
},
{
"name": "SkillBot QnA LU (Spanish-Spain)",
"contentType": "application/qna",
"url": "http://sample.com/SkillBot-QnA-es-ES.qna",
"description": "Spanish (Spain) language model for the skill (QnAMaker)"
}
],
"es-MX": [
{
"name": "SkillBot LU (Spanish-Mexico)",
"contentType": "application/lu",
"url": "http://sample.com/SkillBot-es-MX.lu",
"description": "Spanish (Mexico) language model for the skill"
},
{
"name": "SkillBot QnA LU (Spanish-Mexico)",
"contentType": "application/qna",
"url": "http://sample.com/SkillBot-QnA-es-MX.qna",
"description": "Spanish (Mexico) language model for the skill (QnAMaker)"
}
]
},
"intents": [
"bookFlight",
"getWeather"
]
},
"activities": {
"bookFlight": {
"description": "Books a flight",
"type": "event",
"name": "BookFlight",
"value": {
"$ref": "#/definitions/bookingInfo"
},
"resultValue": {
"$ref": "#/definitions/bookingInfo"
}
},
"getWeather": {
"description": "Retrieves and returns the weather for the user's location",
"type": "invoke",
"name": "GetWeather",
"value": {
"$ref": "#/definitions/location"
},
"resultValue": {
"$ref": "#/definitions/weatherReport"
}
},
"message": {
"type": "message",
"description": "Receives the user's' utterance and attempts to resolve it using the skill's LU models"
},
"typing": {
"type": "typing"
},
"conversationUpdate": {
"type": "conversationUpdate"
}
},
"definitions": {
"localeValue": {
"type": "object",
"properties": {
"locale": {
"type": "string",
"description": "The current user's locale ISO code"
}
}
},
"bookingInfo": {
"type": "object",
"required": [
"origin"
],
"properties": {
"origin": {
"type": "string",
"description": "this is the origin city for the flight"
},
"destination": {
"type": "string",
"description": "this is the destination city for the flight"
},
"date": {
"type": "string",
"description": "The date for the flight in YYYY-MM-DD format"
}
}
},
"weatherReport": {
"type": "array",
"description": "Array of forecasts for the next week.",
"items": [
{
"type": "string"
}
]
},
"location": {
"type": "object",
"description": "Location metadata",
"properties": {
"latitude": {
"type": "number",
"title": "Latitude"
},
"longitude": {
"type": "number",
"title": "Longitude"
},
"postalCode": {
"type": "string",
"title": "Postal code"
}
}
}
},
"activitiesSent": {
"flightUpdated": {
"type": "event",
"name": "FlightUpdated",
"description": "Event which is sent by the skill when there is an update in flight info",
"value": {
"type": "object",
"description": "Flight update information",
"properties": {
"flightNumber": {
"type": "string"
},
"departureDate": {
"type": "string",
"description": "The departure date for the flight in YYYY-MM-DD format"
},
"departureTime": {
"type": "string",
"description": "The departure time for the flight in HH-MM format"
}
}
}
}
}
}
Langkah berikutnya
- Cara Menerapkan keterampilan.
- Cara Menggunakan dialog dalam keterampilan.
- Cara Menerapkan konsumen keterampilan.
- Cara Menggunakan dialog untuk menggunakan keterampilan.