Beceri bildirimi yazma
ŞUNLAR IÇIN GEÇERLIDIR: SDK v4
Beceri bildirimi, bir becerinin gerçekleştirebileceği eylemleri, giriş ve çıkış parametrelerini ve becerinin uç noktalarını açıklayan bir JSON dosyasıdır. Bildirim, bir geliştiricinin başka bir bottan beceriye erişmek için kullanabileceği makine tarafından okunabilir bilgiler içerir.
Bu makalede Bot Framework beceri bildirim şemasının desteklenen sürümleri açıklanmaktadır.
Sürüm | Notlar |
---|---|
sürüm 2.2 | Bazı URI özellikleri URI başvurularını kabul etmek için güncelleştirildi. |
sürüm 2.1 | Becerinin gönderebileceği proaktif etkinlikleri ve becerinin kullandığı gönderim modellerini açıklama yeteneği ekler. |
sürüm 2.0 | İlk sürüm. |
Bot Framework beceri bildirimi şemaları, JSON şema sözlüğü taslak 7'yi kullanır.
Ön koşullar
- Beceri bilgisi.
- JSON Şeması ve JSON biçimi hakkında biraz bilgi.
Beceri bildirimi
Beceri bildirimi farklı bilgi kategorileri içerir:
- Beceriyi genel düzeyde açıklayan meta veriler.
- Becerinin sağladığı uç noktaların listesi.
- Becerinin alabileceği ve proaktif olarak gönderebileceği etkinliklerin isteğe bağlı listeleri.
- Belgenin diğer bölümleri tarafından başvuruda bulunan nesneler için şemalar içeren isteğe bağlı bir tanımlar nesnesi.
- Becerinin desteklediği dağıtım modellerinin isteğe bağlı bir listesi.
Aşağıdaki tabloda, Bot Framework beceri bildiriminin v2.2 için tam şeması açıklanmaktadır.
Kategori/Alan | Tür/Biçim | Zorunlu | Tanım |
---|---|---|---|
Meta veriler | |||
$id | String | Zorunlu | Beceri bildiriminin tanımlayıcısı. |
$schema | Dize/URI | Zorunlu | Bildirimin biçimini açıklayan bir JSON şema kaynağının HTTPS URI'sini. Sürüm 2.2 için URI'dir https://schemas.botframework.com/schemas/skills/v2.2/skill-manifest.json . |
telif hakkı | String | İsteğe bağlı | Beceri için telif hakkı bildirimi. |
açıklama | String | İsteğe bağlı | Becerinin insan tarafından okunabilen bir açıklaması. |
iconUrl | Dize/URI başvurusu | İsteğe bağlı | Beceri için gösterilecek simgenin URI'si. |
lisans | String | İsteğe bağlı | Beceri için lisans sözleşmesi. |
name | String | Zorunlu | Becerinin adı. |
privacyUrl | Dize/URI başvurusu | İsteğe bağlı | Beceri için gizlilik açıklamasının URI'sini. |
publisherName | String | Zorunlu | Beceri yayımcısının adı. |
etiketler | Dize dizisi | İsteğe bağlı | Beceri için bir dizi etiket. Varsa, her etiket benzersiz olmalıdır. |
sürüm | String | Zorunlu | Bildirimin tanımladığı becerinin sürümü. |
Uç Noktalar | |||
uç noktalar | uç nokta dizisi | Zorunlu | Beceri tarafından desteklenen uç noktaların listesi. En az bir uç nokta tanımlanmalıdır. Her uç nokta benzersiz olmalıdır. |
Etkinlikler | |||
etkinlikler | Adlandırılmış etkinlik nesnelerini içeren nesne | İsteğe bağlı | Beceri tarafından kabul edilen ilk etkinlikler kümesi. |
etkinliklerSent | Adlandırılmış etkinlik nesnelerini içeren nesne | İsteğe bağlı | Becerinin gönderebileceği proaktif etkinlikleri açıklar. |
Tanımlar | |||
Tanım | Nesne | İsteğe bağlı | Bildirimde kullanılan nesneler için altchemas içeren bir nesne. |
Dağıtım modelleri | |||
dispatchModels | dispatchModels nesnesi | İsteğe bağlı | Beceri tarafından desteklenen dil modellerini ve üst düzey amaçları açıklar. Bu nesnenin şeması için bkz . Dağıtım modelleri . |
Uç Noktalar
Her uç nokta nesnesi, beceri tarafından desteklenen bir uç noktayı açıklar.
Bu örnekte bir beceri için iki uç nokta listelenir.
"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"
}
],
uç nokta nesnesi
Beceri tarafından desteklenen bir uç noktayı açıklar.
Alan | Tür/Biçim | Zorunlu | Tanım |
---|---|---|---|
açıklama | String | İsteğe bağlı | Uç noktanın açıklaması. |
endpointUrl | Dize/URI | Zorunlu | Beceri için URI uç noktası. |
msAppId | String | Zorunlu | İsteklerin kimliğini doğrulamak için kullanılan beceri için Microsoft AppId (GUID). Normal ifadeyle eşleşmelidir: ^[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}$ . |
name | String | Zorunlu | Uç noktanın benzersiz adı. |
Protokolü | String | İsteğe bağlı | Desteklenen Bot protokolü. Varsayılan değer, Bot Bağlan or API sürüm 3'lerini temsil eden "BotFrameworkV3"dür. Beceriniz özel olarak farklı bir protokol kullanmıyorsa varsayılan değeri kullanın. |
Aktiviteler
Her etkinlik nesnesi, beceri tarafından kabul edilen bir etkinliği açıklar. Beceri, aldığı ilk etkinliğe göre bir eylem veya görev başlatır. Etkinlik nesnesiyle ilişkili ad, becerinin gerçekleştireceği eylemi veya görevi gösterir.
Bazı etkinlik türleri, beceriye ek giriş sağlamak için kullanılabilecek bir değer özelliğine sahiptir. Beceri sona erdiğinde (eylemi tamamladığında), ilişkili konuşma sonu etkinliğinin değer özelliğinde bir dönüş değeri sağlayabilir.
İzin verilen etkinlik türleri şunlardır: ileti, olay, çağırma ve diğer etkinlikler. Bir beceri bir çağırma etkinliği alabilir, ancak gönderemez.
Aşağıda örnek etkinlik açıklaması verilmiştir.
"bookFlight": {
"description": "Books a flight",
"type": "event",
"name": "BookFlight",
"value": {
"$ref": "#/definitions/bookingInfo"
},
"resultValue": {
"$ref": "#/definitions/bookingInfo"
}
},
eventActivity nesnesi
Beceri tarafından kabul edilen veya gönderilen bir olay etkinliğini açıklar. Olay etkinliğinin anlamı, beceri kapsamında anlamlı olan ad alanıyla tanımlanır.
Alan | Tür | Zorunlu | Tanım |
---|---|---|---|
açıklama | String | İsteğe bağlı | Olayın başlatması gereken eylemin açıklaması. |
name | String | Zorunlu | Olay etkinliğinin ad özelliğinin değeri. |
resultValue | Nesne | İsteğe bağlı | Eylemin döndürebileceği nesne türünün JSON şema tanımı. |
tür | String | Zorunlu | Etkinlik türü. "Olay" olmalıdır. |
value | Nesne | İsteğe bağlı | Bu eylemin giriş olarak beklediği nesne türünün JSON şema tanımı. |
invokeActivity nesnesi
Beceri tarafından kabul edilen bir çağırma etkinliğini açıklar. Çağırma etkinliğinin anlamı, beceri kapsamında anlamlı olan ad alanıyla tanımlanır.
Alan | Tür | Zorunlu | Tanım |
---|---|---|---|
açıklama | String | İsteğe bağlı | Çağırmanın başlatması gereken eylemin açıklaması. |
name | String | Zorunlu | Çağırma etkinliğinin ad özelliğinin değeri. |
resultValue | Nesne | İsteğe bağlı | İlişkili eylemin döndürebileceği nesne türünün JSON şema tanımı. |
tür | String | Zorunlu | Etkinlik türü. "Invoke" olmalıdır. |
value | Nesne | İsteğe bağlı | Bu eylemin giriş olarak beklediği nesne türünün JSON şema tanımı. |
messageActivity nesnesi
Beceri tarafından kabul edilen veya gönderilen bir ileti etkinliğini açıklar. İleti etkinliğinin metin özelliği kullanıcının veya botunun konuşmasını içerir.
Alan | Tür | Zorunlu | Tanım |
---|---|---|---|
açıklama | String | İsteğe bağlı | Eylemin açıklaması. |
resultValue | Nesne | İsteğe bağlı | İlişkili eylemin döndürebileceği nesne türünün JSON şema tanımı. |
tür | String | Zorunlu | Etkinlik türü. "İleti" olmalıdır. |
value | Nesne | İsteğe bağlı | Bu eylemin giriş olarak beklediği nesne türünün JSON şema tanımı. |
otherActivities nesnesi
Beceri tarafından kabul edilen veya gönderilen diğer etkinlik türlerini açıklar.
Alan | Tür | Zorunlu | Tanım |
---|---|---|---|
tür | String | Zorunlu | Etkinlik türü. Diğer Bot Framework etkinlik türlerinden biri olmalıdır: "contactRelationUpdate", "conversationUpdate", "deleteUserData", "endOfConversation", "handoff", "installationUpdate", "messageDelete", "messageReaction", "messageUpdate", "suggestion", "trace", veya "typing". |
OtherActivities nesnesi diğer özellikleri içerebilir, ancak beceri bildirimi şeması anlamlarını tanımlamaz.
Tanımlar
Her tanım, belgenin diğer bölümleri tarafından kullanılabilecek bir alt kimyayı açıklar.
Uçuş rezervasyon bilgileri için örnek bir alt kimya aşağıda verilmiştir.
"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"
}
}
},
Dağıtım modelleri
Gönderim modeli, dil modellerinin listesini ve beceri tarafından desteklenen en üst düzey amaçların listesini içerir. Beceri tüketicisi geliştiricisinin, tüketici ve beceri botlarının özelliklerini birleştiren bir dil modeli oluşturmasını sağlayan gelişmiş bir özelliktir.
Her dil modeli veya .qna
dosya biçimini kullanır.lu
. Bu biçimler hakkında daha fazla bilgi için bkz . .lu dosya biçimi ve .qna dosya biçimi.
Yerel ayar adı, bir dille ilişkilendirilmiş ISO 639 iki harfli küçük harfli kültür kodu ile bir ülke veya bölgeyle ilişkilendirilmiş isteğe bağlı ISO 3166 iki harfli büyük harfli alt kültür kodunun (örneğin, "en" veya "en-US" gibi) birleşimidir.
Alan | Tür | Zorunlu | Tanım |
---|---|---|---|
Niyet | Dize dizisi | İsteğe bağlı | Beceri tarafından desteklenen en üst düzey amaçların listesi. Her amaç benzersiz olmalıdır. |
diller | Adlandırılmış languageModel dizilerini içeren nesne | İsteğe bağlı | Beceri tarafından desteklenen dil modellerinin listesi. Her ad, dil modellerinin bulunduğu yerel ayardır ve dizi bu yerel ayarın dil modellerini içerir. Dağıtım modeli en az bir yerel ayarı desteklemelidir. Diller alanındaki her yerel ayar benzersiz olmalıdır. |
Aşağıda üç yerel ayarda iki dil modeli içeren örnek bir dağıtım modeli verilmiştir. Ayrıca, becerinin tanıyabileceği iki üst düzey amacı da açıklar.
"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"
]
},
languageModel nesnesi
Belirli bir kültür için dil modelini açıklar. Ad bir yerel ayar adıdır.
Alan | Tür/Biçim | Zorunlu | Tanım |
---|---|---|---|
Contenttype | String | Zorunlu | Dil modelinin türü. |
açıklama | String | İsteğe bağlı | Dil modelinin açıklaması. |
name | String | Zorunlu | Dil modelinin adı. |
url | Dize/URI başvurusu | Zorunlu | Dil modelinin URL'si. |
Örnek bildirim
Birden çok etkinliği kullanıma sunan bir beceriye yönelik tam örnek v2.2 bildirimi aşağıda verilmiştir.
{
"$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"
}
}
}
}
}
}
Sonraki adımlar
- Beceri uygulama.
- Bir beceri içinde iletişim kutularını kullanma.
- Beceri tüketicisi uygulama.
- Beceriyi kullanmak için iletişim kutusu kullanma.