Schreiben eines SkillmanifestsWrite a skill manifest

gilt für: SDK v4APPLIES TO: SDK v4

Ein Skillmanifest ist eine JSON-Datei, die die Aktionen beschreibt, die der Skill ausführen kann, seine Eingabe- und Ausgabeparameter sowie die Endpunkte der Qualifikation.A skill manifest is a JSON file that describes the actions the skill can take, its input and output parameters, and the skill's endpoints. Das Manifest enthält die Informationen, die ein Entwickler für den Zugriff auf den Skill in einem anderen Bot benötigt.The manifest contains the information a developer needs to access the skill from another bot.

In diesem Artikel werden unterstützte Versionen des Bot Framework Skillmanifestschemas beschrieben.This article describes supported versions of the Bot Framework skill manifest schema.

VersionVersion NotizenNotes
Version 2.2version 2.2 Einige URI-Eigenschaften wurden aktualisiert, um URI-Verweise zu akzeptieren.Updated some URI properties to accept URI references.
Version 2.1version 2.1 Bietet die Möglichkeit, proaktive Aktivitäten zu beschreiben, die der Skill senden kann, und die Dispatchmodelle, die der Skill verwendet.Adds ability to describe proactive activities the skill can send and the dispatch models the skill uses.
Version 2.0version 2.0 Anfängliche Version.Initial version.

Die Bot Framework Skillmanifestschemas verwenden Entwurf 7 des JSON-Schemavokabulars.The Bot Framework skill manifest schemas use draft 7 of the JSON schema vocabulary.

VoraussetzungenPrerequisites

Das SkillmanifestThe skill manifest

Das Skillmanifest enthält verschiedene Informationskategorien:The skill manifest contains different categories of information:

  • Metadaten, die den Skill auf allgemeiner Ebene beschreibenMetadata that describes the skill at a general level.
  • Eine Liste der Endpunkte, die der Skill bereitstelltA list of the endpoints that the skill provides.
  • Optionale Listen der Aktivitäten, die der Skill empfangen und proaktiv senden kann.Optional lists of the activities the skill can receive and proactively send.
  • Ein optionales Definitionsobjekt, das Schemas für Objekte enthält, auf die von anderen Teilen des Dokuments verwiesen wirdAn optional definitions object that contains schemas for objects referenced by other parts of the document.
  • Eine optionale Liste der vom Skill unterstützten DispatchmodelleAn optional list of the dispatch models the skill supports.

In der folgenden Tabelle wird das vollständige Schema für v2.2 des Bot Framework Skillmanifests beschrieben.The following table describes the full schema for v2.2 of the Bot Framework skill manifest.

Kategorie/FeldCategory/Field Typ/FormatType/Format ErforderlichRequired BESCHREIBUNGDescription
MetadatenMetadata
$id$id Zeichenfolgestring ErforderlichRequired Der Bezeichner des Skillmanifests.The identifier for the skill manifest.
$schema$schema string/uristring/uri ErforderlichRequired Die HTTPS-URI einer JSON-Schemaressource, die das Format des Manifests beschreibt.The HTTPS URI of a JSON schema resource that describes the format of the manifest. Für Version 2.2 lautet der URI https://schemas.botframework.com/schemas/skills/v2.2/skill-manifest.json .For version 2.2, the URI is https://schemas.botframework.com/schemas/skills/v2.2/skill-manifest.json.
copyrightcopyright Zeichenfolgestring OptionalOptional Der Urheberrechtshinweis zum Skill.The copyright notice for the skill.
descriptiondescription Zeichenfolgestring OptionalOptional Eine von Menschen lesbare Beschreibung des Skills.A human-readable description of the skill.
iconUrliconUrl string/uri-referencestring/uri-reference OptionalOptional Die URI des Symbols, das für den Skill angezeigt wird.The URI of the icon to show for the skill.
licenselicense Zeichenfolgestring OptionalOptional Die Lizenzbedingungen des Skills.The license agreement for the skill.
namename Zeichenfolgestring ErforderlichRequired Der Name des Skills.The name of the skill.
privacyUrlprivacyUrl string/uri-referencestring/uri-reference OptionalOptional Der URI der Beschreibung der Datenschutzeinstellungen des Skills.The URI of the privacy description for the skill.
publisherNamepublisherName Zeichenfolgestring ErforderlichRequired Der Name des Herausgebers des Skills.The name of the skill publisher.
tagstags Zeichenfolgenarraystring array OptionalOptional Eine Gruppe von Tags für den Skill.A set of tags for the skill. Falls vorhanden, muss jedes Tag eindeutig sein.If present, each tag must be unique.
versionversion Zeichenfolgestring ErforderlichRequired Die Version des Skills, die im Manifest beschrieben wird.The version of the skill the manifest describes.
EndpunkteEndpoints
-Endpunkteendpoints Endpunktarrayendpoint array ErforderlichRequired Die Liste der vom Skill unterstützten Endpunkte.The list of endpoints supported by the skill. Mindestens ein Endpunkt muss definiert werden.At least one endpoint must be defined. Jeder Endpunkt muss eindeutig sein.Each endpoint must be unique.
AktivitätenActivities
activitiesactivities Objekt mit benannten Aktivitätsobjektenobject containing named activity objects OptionalOptional Die Gruppe der anfänglichen Aktivitäten, die vom Skill akzeptiert werden.The set of initial activities accepted by the skill.
activitiesSentactivitiesSent Objekt mit benannten Aktivitätsobjektenobject containing named activity objects OptionalOptional Beschreibt die proaktiven Aktivitäten, die der Skill senden kann.Describes the proactive activities that the skill can send.
DefinitionenDefinitions
definitionsdefinitions Objekt (object)object OptionalOptional Ein Objekt, das Unterschemas für im Manifest verwendete Objekte enthält.An object containing subschemas for objects used in the manifest.
DispatchmodelleDispatch models
dispatchModelsdispatchModels dispatchModels-ObjektdispatchModels object OptionalOptional Beschreibt die vom Skill unterstützten Sprachmodelle und Absichten auf oberster Ebene.Describes the language models and top-level intents supported by the skill. Informationen zum Schema für dieses Objekt finden Sie unter Dispatchmodelle.See Dispatch models for the schema for this object.

EndpunkteEndpoints

Jedes Endpunktobjekt beschreibt einen Endpunkt, der vom Skill unterstützt wird.Each endpoint object describes an endpoint supported by the skill.

Dieses Beispiel listet zwei Endpunkte für einen Skill auf.This example lists two endpoints for a skill.

"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"
    }
],

Endpunktobjektendpoint object

Beschreibt einen vom Skill unterstützten Endpunkt.Describes an endpoint supported by the skill.

FeldField Typ/FormatType/Format ErforderlichRequired BESCHREIBUNGDescription
descriptiondescription Zeichenfolgestring OptionalOptional Eine Beschreibung des Endpunkts.A description of the endpoint.
endpointUrlendpointUrl string/uristring/uri ErforderlichRequired Der URI-Endpunkt des Skills.The URI endpoint for the skill.
msAppIdmsAppId Zeichenfolgestring ErforderlichRequired Die Microsoft AppId (GUID) des Skills zur Authentifizierung von Anforderungen.The Microsoft AppId (GUID) for the skill, used to authenticate requests. Muss mit dem regulären Ausdruck übereinstimmen: ^[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}$ .Must match the regular expression: ^[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}$.
namename Zeichenfolgestring ErforderlichRequired Der eindeutige Name des Endpunkts.The unique name for the endpoint.
Protokollprotocol Zeichenfolgestring OptionalOptional Das unterstützte Botprotokoll.The supported Bot protocol. Der Standardwert ist "BotFrameworkV3", der die Version 3 der Bot Connector-API darstellt.Default is "BotFrameworkV3", which represents the Bot Connector API version 3. Verwenden Sie den Standardwert, es sei denn, Ihr Skill verwendet ein anderes Protokoll.Use the default value unless your skill specifically uses a different protocol.

activitiesActivities

Jedes Aktivitätsobjekt beschreibt eine Aktivität, die vom Skill akzeptiert wird.Each activity object describes an activity accepted by the skill. Der Skill startet eine Aktion oder Aufgabe basierend auf der anfänglichen Aktivität, die er empfängt.The skill begins an action or task based on the initial activity it receives. Der mit dem Aktivitätsobjekt verbundene Name gibt die Aktion oder Aufgabe an, die der Skill ausführt.The name associated with the activity object indicates the action or task the skill will perform.

Einige Aktivitätstypen verfügen über eine Werteigenschaft, die verwendet werden kann, um zusätzliche Eingaben für den Skill bereitzustellen.Some activity types have a value property that can be used to provide extra input to the skill. Wenn die Qualifikation endet (die Aktion abgeschlossen), kann sie einen Rückgabewert in der Werteigenschaft der zugeordneten End-of-Conversation-Aktivität bereitstellen.When the skill ends (completes the action), it can provide a return value in the associated end-of-conversation activity's value property.

Die zulässigen Aktivitätstypen sind: message, event, invoke und andere Aktivitäten.The activity types allowed are: message, event, invoke, and other activities. Ein Skill kann eine Aufrufaktivität empfangen, aber nicht senden.A skill can receive an invoke activity, but can't send one.

Hier sehen Sie eine Beschreibung der Beispielaktivität.Here's a sample activity description.

"bookFlight": {
    "description": "Books a flight",
    "type": "event",
    "name": "BookFlight",
    "value": {
        "$ref": "#/definitions/bookingInfo"
    },
    "resultValue": {
        "$ref": "#/definitions/bookingInfo"
    }
},

eventActivity-ObjekteventActivity object

Beschreibt eine vom Skill akzeptierte oder gesendete Ereignisaktivität.Describes an event activity accepted or sent by the skill. Die Bedeutung einer Ereignisaktivität wird durch ihr Namensfeld definiert, das innerhalb des Bereichs der Qualifikation sinnvoll ist.The meaning of an event activity is defined by its name field, which is meaningful within the scope of the skill.

FeldField typeType ErforderlichRequired BESCHREIBUNGDescription
descriptiondescription Zeichenfolgestring OptionalOptional Eine Beschreibung der Aktion, die das Ereignis initiieren soll.A description of the action the event should initiate.
namename Zeichenfolgestring ErforderlichRequired Der Wert der Namenseigenschaft der Ereignisaktivität.The value of the event activity's name property.
resultValueresultValue Objekt (object)object OptionalOptional Eine JSON-Schemadefinition des Objekttyps, den die Aktion zurückgeben kann.A JSON schema definition of the type of object that the action can return.
typetype Zeichenfolgestring ErforderlichRequired Der Aktivitätstyp.The activity type. Muss „event“ sein.Must be "event".
valuevalue Objekt (object)object OptionalOptional Eine JSON-Schemadefinition des Objekttyps, den diese Aktion als Eingabe erwartet.A JSON schema definition of the type of object that this action expects as input.

invokeActivity-ObjektinvokeActivity object

Beschreibt eine Aufrufaktivität, die vom Skill akzeptiert wird.Describes an invoke activity accepted by the skill. Die Bedeutung einer Aufrufaktivität wird durch ihr Namensfeld definiert, das innerhalb des Bereichs der Qualifikation sinnvoll ist.The meaning of an invoke activity is defined by its name field, which is meaningful within the scope of the skill.

FeldField typeType ErforderlichRequired BESCHREIBUNGDescription
descriptiondescription Zeichenfolgestring OptionalOptional Eine Beschreibung der Aktion, die der Aufruf initiieren soll.A description of the action the invoke should initiate.
namename Zeichenfolgestring ErforderlichRequired Der Wert der Namenseigenschaft der Aufrufaktivität.The value of the invoke activity's name property.
resultValueresultValue Objekt (object)object OptionalOptional Eine JSON-Schemadefinition des Objekttyps, den die zugeordnete Aktion zurückgeben kann.A JSON schema definition of the type of object that the associated action can return.
typetype Zeichenfolgestring ErforderlichRequired Der Aktivitätstyp.The activity type. Muss „invoke“ sein.Must be "invoke".
valuevalue Objekt (object)object OptionalOptional Eine JSON-Schemadefinition des Objekttyps, den diese Aktion als Eingabe erwartet.A JSON schema definition of the type of object that this action expects as input.

messageActivity-ObjektmessageActivity object

Beschreibt eine vom Skill akzeptierte oder gesendete Nachrichtenaktivität.Describes a message activity accepted or sent by the skill. Die Texteigenschaft der Nachrichtenaktivität enthält die Äußerung des Benutzers oder Bots.The message activity's text property contains the user's or bot's utterance.

FeldField typeType ErforderlichRequired BESCHREIBUNGDescription
descriptiondescription Zeichenfolgestring OptionalOptional Eine Beschreibung der Aktion.A description of the action.
resultValueresultValue Objekt (object)object OptionalOptional Eine JSON-Schemadefinition des Objekttyps, den die zugeordnete Aktion zurückgeben kann.A JSON schema definition of the type of object that the associated action can return.
typetype Zeichenfolgestring ErforderlichRequired Der Aktivitätstyp.The activity type. Muss „message“ sein.Must be "message".
valuevalue Objekt (object)object OptionalOptional Eine JSON-Schemadefinition des Objekttyps, den diese Aktion als Eingabe erwartet.A JSON schema definition of the type of object that this action expects as input.

otherActivities-ObjektotherActivities object

Beschreibt alle anderen Aktivitätstypen, die vom Skill akzeptiert oder gesendet werden.Describes any other activity type accepted or sent by the skill.

FeldField typeType ErforderlichRequired BESCHREIBUNGDescription
typetype Zeichenfolgestring ErforderlichRequired Der Aktivitätstyp.The activity type. Muss einer der anderen Bot Framework-Aktivitätstypen sein: "contactRelationUpdate", "conversationUpdate", "deleteUserData", "endOfConversation", "handoff", "installationUpdate", "messageDelete", "messageReaction", "messageUpdate", "suggestion", "trace" oder "typing".Must be one of the other Bot Framework activity types: "contactRelationUpdate", "conversationUpdate", "deleteUserData", "endOfConversation", "handoff", "installationUpdate", "messageDelete", "messageReaction", "messageUpdate", "suggestion", "trace", or "typing".

Das otherActivities-Objekt kann andere Eigenschaften enthalten, aber das Skillmanifestschema definiert deren Bedeutung nicht.The otherActivities object can include other properties, but the skill manifest schema does not define their meaning.

DefinitionenDefinitions

Jede Definition beschreibt ein Unterschema, das von anderen Teilen des Dokuments genutzt werden kann.Each definition describes a subschema that can be consumed by other parts of the document.

Hier sehen Sie ein Beispielunterschema für Flugbuchungsinformationen.Here's a sample subschema for flight booking information.

"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"
        }
    }
},

DispatchmodelleDispatch models

Das Dispatchmodell enthält eine Liste von Sprachmodellen und eine Liste von Absichten auf oberster Ebene, die vom Skill unterstützt werden.The dispatch model contains a list of language models and a list of top-level intents supported by the skill. Es handelt sich um ein erweitertes Feature, das es einem Entwickler eines Skill-Consumers ermöglicht, ein Sprachmodell zu erstellen, das die Features des Consumers und der Skillbots kombiniert.It is an advanced feature to enable a developer of a skill consumer to compose a language model that combines the features of the consumer and skill bots.

Der Name eines Gebietsschemas ist eine Kombination aus einem aus zwei Kleinbuchstaben bestehenden ISO 639-Kulturcode, der einer Sprache zugeordnet ist, und einem optionalen aus zwei Großbuchstaben bestehenden ISO 3166-Unterkulturcode, der einem Land oder einer Region zugeordnet ist, z. B. „en“ oder „en-US“.A locale name is a combination of an ISO 639 two-letter lowercase culture code associated with a language and an optional ISO 3166 two-letter uppercase subculture code associated with a country or region, for example "en" or "en-US".

FeldField typeType ErforderlichRequired BESCHREIBUNGDescription
Absichtenintents Zeichenfolgenarraystring array OptionalOptional Eine Liste der Absichten auf oberster Ebene, die vom Skill unterstützt werden.A list of the top-level intents supported by the skill. Jede Absicht muss eindeutig sein.Each intent must be unique.
languageslanguages Objekt, das benannte languageModel-Arrays enthältobject containing named languageModel arrays OptionalOptional Eine Liste der vom Skill unterstützten Sprachmodelle.A list of the language models supported by the skill. Jeder Name ist das Locale, für das die Sprachmodelle gelten, und das Array enthält die Sprachmodelle für dieses Locale.Each name is the locale the language models are for, and the array contains the language models for that locale. Ein Dispatchmodell muss mindestens ein Gebietsschema unterstützen.A dispatch model must support at least one locale. Jedes Gebietsschema innerhalb des Sprachenfelds muss eindeutig sein.Each locale within the languages field must be unique.

Hier sehen Sie ein Beispiel für ein Dispatchmodell, das zwei Sprachmodelle für drei Lokale enthält.Here's a sample dispatch model that contains two languages models across three locales. Es beschreibt auch zwei Absichten auf oberster Ebene, die der Skill erkennen kann.It also describes two top-level intents that the skill can recognize.

"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-ObjektlanguageModel object

Beschreibt ein Sprachmodell für eine bestimmte Kultur.Describes a language model for a given culture. Der Name ist ein Gebietsschemaname.The name is a locale name.

FeldField Typ/FormatType/Format ErforderlichRequired BESCHREIBUNGDescription
contentTypecontentType Zeichenfolgestring ErforderlichRequired Der Typ des Sprachmodells.Type of the language model.
descriptiondescription Zeichenfolgestring OptionalOptional Eine Beschreibung des Sprachmodells.A description of the language model.
namename Zeichenfolgestring ErforderlichRequired Der Name des Sprachmodells.Name of the language model.
urlurl string/uri-referencestring/uri-reference ErforderlichRequired Der URL des Sprachmodells.The URL for the language model.

BeispielmanifestSample manifest

Im Folgenden finden Sie ein vollständiges v2.2-Beispielmanifest für einen Skill, der mehrere Aktivitäten verfügbar macht.Here's a full sample v2.2 manifest for a skill that exposes multiple activities.

{
    "$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"
                    }
                }
            }
        }
    }
}

Nächste SchritteNext steps