Konvertieren eines JavaScript-Bots der Version 3 in einen SkillConvert a JavaScript v3 bot to a skill

gilt für: SDK v4APPLIES TO: SDK v4

In diesem Artikel erfahren Sie, wie Sie zwei JavaScript-Beispielbots der Version 3 in Skills konvertieren und einen Skill-Consumer der Version 4 erstellen, der auf diese Skills zugreifen kann.This article describes how to convert 2 sample JavaScript v3 bots to skills and to create a v4 skill consumer that can access these skills. Wenn Sie einen .NET-Bot der Version 3 in einen Skill konvertieren möchten, lesen Sie Konvertieren eines .NET-Bots der Version 3 in einen Skill.To convert a .NET v3 bot to a skill, see how to Convert a .NET v3 bot to a skill. Wenn Sie einen JavaScript-Bot der Version 3 zur Version 4 migrieren möchten, lesen Sie Migrieren eines JavaScript v3-Bots zu einem v4-Bot.To migrate a JavaScript bot from v3 to v4, see how to Migrate a Javascript v3 bot to a v4 bot.

VoraussetzungenPrerequisites

  • Visual Studio Code.Visual Studio Code.
  • Node.jsNode.js.
  • Ein Azure-Abonnement.An Azure subscription. Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.If you don't have an Azure subscription, create a free account before you begin.
  • Zum Testen der Qualifikationen benötigen Sie die Bot Framework Emulator und lokale Kopien der Bots:To test the skills, you will need the Bot Framework Emulator and local copies of the bots:

Informationen zu den BotsAbout the bots

In diesem Artikel wird jeder Bot der Version 3 als Skill erstellt.In this article, each v3 bot is created to act as a skill. Die zu Skills konvertierten Bots können mit dem enthaltenen Skill-Consumer der Version 4 getestet werden.A v4 skill consumer is included, so that you can test the converted bots as skills.

  • Der Bot v3-skill-bot gibt empfangene Nachrichten zurück.The v3-skill-bot echoes back messages it receives. Als Skill wird er beendet, wenn er die Nachricht „end“ oder „stop“ erhält.As a skill, it completes when it receives an "end" or "stop" message. Der zu konvertierende Bot basiert auf einem sehr einfachen Bot der Version 3.The bot to convert is based on a minimal v3 bot.
  • Der Bot v3-booking-bot-skill ermöglicht es dem Benutzer, einen Flug oder ein Hotel zu buchen.The v3-booking-bot-skill allows the user to book a flight or a hotel. Als Skill gibt er die erfassten Informationen nach Abschluss des Vorgangs an den übergeordneten Bot zurück.As a skill, it sends collected information back to the parent when finished.

Darüber hinaus veranschaulicht der Bot v4-root-bot als Skill-Consumer der Version 4, wie die Skills genutzt werden, und ermöglicht das Testen der Skills.Also, a v4 skill consumer, the v4-root-bot, demonstrates how to consume the skills and allows you to test them.

Um die Skills mit dem Skill-Consumer testen zu können, müssen alle drei Bots gleichzeitig ausgeführt werden.To use the skill consumer to test the skills, all 3 bots need to be running at the same time. Die Bots können lokal mit Bot Framework Emulator getestet werden. Dabei verwendet jeder Bot einen anderen lokalen Port.The bots can be tested locally using the Bot Framework Emulator, with each bot using a different local port.

Erstellen der Azure-Ressourcen für die BotsCreate Azure resources for the bots

Für die Authentifizierung zwischen Bots muss jeder beteiligte Bot über eine gültige App-ID und ein Kennwort verfügen.Bot-to-bot authentication requires that each participating bot has a valid app ID and password.

  1. Erstellen Sie bei Bedarf eine geeignete Botkanalregistrierung für die Bots.Create a Bot Channels Registration for the bots as needed.
  2. Notieren Sie sich jeweils die App-ID und das Kennwort.Record the app ID and password for each one.

So konvertieren Sie einen v3-BotTo convert a v3 bot

Die Konvertierung eines vorhandenen Bots in einen Skill-Bot umfasst nur wenige Schritte. Diese werden in den nächsten Abschnitten erläutert.To convert an existing bot to a skill bot takes just a few steps, as outlined in the next couple sections. Ausführlichere Informationen finden Sie unter Grundlegendes zu Qualifikationen.For more in-depth information, see about skills.

  • Aktualisieren Sie die Datei .env des Bots, um die App-ID und das Kennwort des Bots festzulegen und eine Eigenschaft für die App-ID des Stamm-Bots hinzuzufügen.Update the bot's .env file to set the bot's app ID and password and to add a root bot app ID property.
  • Fügen Sie eine Anspruchsüberprüfung hinzu.Add claims validation. Dadurch wird der Skill-Zugriff auf Benutzer und Ihren Stamm-Bot beschränkt.This will restrict access to the skill so that only users or your root bot can access the skill. Weitere Informationen zur standardmäßigen und benutzerdefinierten Anspruchsüberprüfung finden Sie im Abschnitt Zusätzliche Informationen.See the additional information section for more information about default and custom claims validation.
  • Ändern Sie den Nachrichtencontroller des Bots, um endOfConversation-Aktivitäten vom Stamm-Bot zu behandeln.Modify the bot's messages controller to handle endOfConversation activities from the root bot.
  • Ändern Sie den Botcode so, dass bei Abschluss des Skills eine endOfConversation-Aktivität zurückgegeben wird.Modify the bot code to return an endOfConversation activity when the skill completes.
  • Bei Abschluss des Skills müssen der Konversationszustand gelöscht und die Ressourcen freigegeben werden (sofern vorhanden).Whenever the skill completes, if it has conversation state or maintains resources, it should clear its conversation state and release resources.
  • Fügen Sie optional eine Manifestdatei hinzu.Optionally add a manifest file. Da ein Skill-Consumer nicht immer über Zugriff auf den Qualifikationscode verfügt, sollten Sie ein Qualifikationsmanifest verwenden, um Folgendes zu beschreiben: Aktivitäten, die die Qualifikation empfangen und generieren kann, die Eingabe- und Ausgabeparameter und die Endpunkte der Qualifikation.Since a skill consumer does not necessarily have access to the skill code, use a skill manifest to describe the activities the skill can receive and generate, its input and output parameters, and the skill's endpoints. Das aktuelle Manifestschema ist skill-manifest-2.0.0.json.The current manifest schema is skill-manifest-2.0.0.json.

Konvertieren des Echo-BotsConvert the echo bot

Ein Beispiel für einen Echo-Bot der Version 3, der in einen einfachen Skill konvertiert wurde, finden Sie unter Skills/v3-skill-bot.See Skills/v3-skill-bot for an example of a v3 echo bot that has been converted to a basic skill.

  1. Erstellen Sie ein einfaches JavaScript-Botprojekt der Version 3, und importieren Sie die erforderlichen Module.Create a simple JavaScript v3 bot project and import required modules.

    v3-skill-bot/app.jsv3-skill-bot/app.js

    const restify = require('restify');
    const builder = require('botbuilder');
    require('dotenv').config();
    
  2. Konfigurieren Sie den Bot so, dass er lokal am Port 3979 ausgeführt wird.Set the bot to run locally on port 3979.

    v3-skill-bot/app.jsv3-skill-bot/app.js

    // Setup Restify Server
    const server = restify.createServer();
    server.listen(process.env.port || process.env.PORT || 3979, function () {
       console.log('%s listening to %s', server.name, server.url); 
    });
    
  3. Fügen Sie in der Konfigurationsdatei die App-ID und das Kennwort des Echo-Bots hinzu.In the configuration file, add the echo bot's app ID and password. Fügen Sie außerdem eine Eigenschaft vom Typ ROOT_BOT_APP_ID hinzu, und legen Sie deren Wert auf die App-ID des einfachen Stamm-Bots fest.Also, add a ROOT_BOT_APP_ID property with the simple root bot's app ID as its value.

    v3-skill-bot/.envv3-skill-bot/.env

    # Bot Framework Credentials
    
    MICROSOFT_APP_ID=
    MICROSOFT_APP_PASSWORD=
    ROOT_BOT_APP_ID=
    
  4. Erstellen Sie den Chatconnector für den Bot.Create the chat connector for the bot. In diesem Fall wird die Standardauthentifizierungskonfiguration verwendet.This one uses the default authentication configuration. Legen Sie enableSkills auf true fest, damit der Bot als Skill verwendet werden kann.Set enableSkills to true to allow the bot to be used as a skill. Bei allowedCallers handelt es sich um ein Array der App-IDs der Bots, die diesen Skill verwenden dürfen.allowedCallers is an array of the app IDs of the bots allowed to use this skill. Wenn der erste Wert dieses Arrays "*" ist, kann jeder Bot diese Qualifikation verwenden.If the first value of this array is '*', then any bot can use this skill.

    v3-skill-bot/app.jsv3-skill-bot/app.js

    // Create chat connector for communicating with the Bot Framework Service
    const connector = new builder.ChatConnector({
        appId: process.env.MICROSOFT_APP_ID,
        appPassword: process.env.MICROSOFT_APP_PASSWORD,
        enableSkills: true,
        allowedCallers: [process.env.ROOT_BOT_APP_ID]
    });
    
  5. Aktualisieren Sie den Nachrichtenhandler so, dass eine Aktivität vom Typ endOfConversation gesendet wird, wenn der Benutzer den Skill beendet.Update the message handler to send an endOfConversation activity when the user chooses to end the skill.

    v3-skill-bot/app.jsv3-skill-bot/app.js

    // Create your bot with a function to receive messages from the user
    const bot = new builder.UniversalBot(connector, function (session) {
        switch (session.message.text.toLowerCase()) {
            case 'end':
            case 'stop':
                session.endConversation();
                break;
            default:
                session.send("Echo (JS V3) You said: %s", session.message.text);
                session.send('Say "end" or "stop" and I\'ll end the conversation and back to the parent.');
        }
    }).set('storage', inMemoryStorage); // Register in memory storage
    
  6. Da dieser Bot keinen Konversationszustand verwaltet und keine Ressourcen für die Konversation erstellt, muss er keine Aktivitäten vom Typ endOfConversation behandeln, die er vom Skill-Consumer erhält.Since this bot does not maintain conversation state and does not create any resources for the conversation, the bot does not need to handle any endOfConversation activities that it receives from the skill consumer.

  7. Verwenden Sie dieses Manifest für den Echo-Bot.Use this manifest for the echo bot. Legen Sie die Endpunkt-App-ID auf die App-ID des Bots fest.Set the endpoint app ID to the bot's app ID.

    v3-skill-bot/manifest/v3-skill-bot-manifest.jsonv3-skill-bot/manifest/v3-skill-bot-manifest.json

    {
        "$schema": "https://schemas.botframework.com/schemas/skills/skill-manifest-2.0.0.json",
        "$id": "v3-skill-bot",
        "name": "Echo Skill bot",
        "version": "1.0",
        "description": "This is a sample echo skill",
        "publisherName": "Microsoft",
        "privacyUrl": "https://echoskillbot.contoso.com/privacy.html",
        "copyright": "Copyright (c) Microsoft Corporation. All rights reserved.",
        "license": "",
        "iconUrl": "https://echoskillbot.contoso.com/icon.png",
        "tags": [
          "sample",
          "echo"
        ],
        "endpoints": [
          {
            "name": "default",
            "protocol": "BotFrameworkV3",
            "description": "Default endpoint for the skill",
            "endpointUrl": "http://echoskillbot.contoso.com/api/messages",
            "msAppId": "00000000-0000-0000-0000-000000000000"
          }
        ]
      }
    

    Informationen zum Schema des Qualifikationsmanifests finden Sie unter skill-manifest-2.0.0.json.For the skill-manifest schema, see skill-manifest-2.0.0.json.

Konvertieren des BuchungsbotsConvert the booking bot

Ein Beispiel für einen Buchungsbot der Version 3, der in einen einfachen Skill konvertiert wurde, finden Sie unter Skills/v3-booking-bot-skill.See Skills/v3-booking-bot-skill for an example of a v3 booking bot that has been converted to a basic skill. Vor der Konvertierung war der Bot vergleichbar mit dem Beispiel core-MultiDialogs der Version 3.Before conversion, the bot was similar to the v3 core-MultiDialogs sample.

  1. Importieren Sie die erforderlichen Module.Import required modules.

    v3-booking-bot-skill/app.jsv3-booking-bot-skill/app.js

    require('dotenv').config();
    
    var builder = require('botbuilder');
    var restify = require('restify');
    const skills = require('botbuilder/skills-validator');
    const { allowedCallersClaimsValidator } = require('./allowedCallersClaimsValidator');
    
  2. Konfigurieren Sie den Bot so, dass er lokal am Port 3980 ausgeführt wird.Set the bot to run locally on port 3980.

    v3-booking-bot-skill/app.jsv3-booking-bot-skill/app.js

    // Setup Restify Server
    var server = restify.createServer();
    server.listen(process.env.port || process.env.PORT || 3980, function () {
        console.log('%s listening to %s', server.name, server.url);
    });
    
  3. Fügen Sie in der Konfigurationsdatei die App-ID und das Kennwort des Buchungsbots hinzu.In the configuration file, add the booking bot's app ID and password. Fügen Sie außerdem eine Eigenschaft vom Typ ROOT_BOT_APP_ID hinzu, und legen Sie deren Wert auf die App-ID des einfachen Stamm-Bots fest.Also, add a ROOT_BOT_APP_ID property with the simple root bot's app ID as its value.

    v3-booking-bot-skill/.envv3-booking-bot-skill/.env

    # Bot Framework Credentials
    
    MICROSOFT_APP_ID=
    MICROSOFT_APP_PASSWORD=
    ROOT_BOT_APP_ID=
    
  4. Erstellen Sie den Chatconnector für den Bot.Create the chat connector for the bot. In diesem Fall wird eine benutzerdefinierte Authentifizierungskonfiguration verwendet.This one uses a custom authentication configuration. Legen Sie enableSkills auf true fest, damit der Bot als Skill verwendet werden kann.Set enableSkills to true to allow the bot to be used as a skill. authConfiguration enthält das Objekt der benutzerdefinierten Authentifizierungskonfiguration für die Authentifizierung und die Anspruchsüberprüfung.authConfiguration contains the custom authentication configuration object to use for authentication and claims validation.

    v3-booking-bot-skill/app.jsv3-booking-bot-skill/app.js

    // Create chat bot and listen to messages
    var connector = new builder.ChatConnector({
        appId: process.env.MICROSOFT_APP_ID,
        appPassword: process.env.MICROSOFT_APP_PASSWORD,
        enableSkills: true,
        authConfiguration: new skills.AuthenticationConfiguration([], allowedCallersClaimsValidator)
    });
    

    v3-booking-bot-skill/allowedCallersClaimsValidator.jsv3-booking-bot-skill/allowedCallersClaimsValidator.js

    Durch den folgenden Code wird eine benutzerdefinierte Anspruchsüberprüfung implementiert und bei nicht erfolgreicher Überprüfung ein Fehler ausgelöst.This implements custom claims validation and throws an error if validation fails.

    const skills = require('botbuilder/skills-validator');
    const path = require('path');
    
    // Import required bot configuration.
    const ENV_FILE = path.join(__dirname, '.env');
    require('dotenv').config({ path: ENV_FILE });
    
    // Load the AppIds for the configured callers (we will only allow responses from skills we have configured).
    // process.env.AllowedCallers is the list of parent bot Ids that are allowed to access the skill
    // to add a new parent bot simply go to the .env file and add
    // the parent bot's Microsoft AppId to the list under AllowedCallers, e.g.:
    //  AllowedCallers=195bd793-4319-4a84-a800-386770c058b2,38c74e7a-3d01-4295-8e66-43dd358920f8
    const allowedCallers = [process.env.ROOT_BOT_APP_ID]; // process.env.AllowedCallers ? process.env.AllowedCallers.split(',') : undefined;
    
    /**
     * Sample claims validator that loads an allowed list from configuration if present
     * and checks that requests are coming from allowed parent bots.
     * @param claims An array of Claims decoded from the HTTP request's auth header
     */
    const allowedCallersClaimsValidator = async (claims) => {
        if (!allowedCallers || allowedCallers.length == 0) {
            throw new Error(`DefaultAuthenticationConfiguration allowedCallers must contain at least one element of '*' or valid MicrosoftAppId(s).`);
        }
        if (!claims || claims.length < 1) {
            throw new Error(`DefaultAuthenticationConfiguration.validateClaims.claims parameter must contain at least one element.`);
        }
        // If allowedCallers is undefined we allow all calls
        // If allowedCallers contains '*' we allow all callers
        if (skills.SkillValidation.isSkillClaim(claims)) {
                    
            if(allowedCallers[0] === '*') {
                return;
            }
            // Check that the appId claim in the skill request is in the list of skills configured for this bot.
            const appId = skills.JwtTokenValidation.getAppIdFromClaims(claims);
            if (allowedCallers.includes(appId)) {
                return;
            }
            throw new Error(`Received a request from a bot with an app ID of "${ appId }". To enable requests from this caller, add the app ID to your configuration file.`);
        }
        throw new Error(`DefaultAuthenticationConfiguration.validateClaims called without a Skill claim in claims.`);
    };
    
    module.exports.allowedCallersClaimsValidator = allowedCallersClaimsValidator;
    
  5. Aktualisieren Sie den Nachrichtenhandler so, dass bei Beendigung des Skills eine Aktivität vom Typ endOfConversation gesendet wird.Update the message handler to send an endOfConversation activity when the skill ends. Beachten Sie, dass durch session.endConversation() sowohl eine Aktivität vom Typ endOfConversation gesendet als auch der Konversationszustand gelöscht wird.Note that session.endConversation() clears conversation state in addition to sending an endOfConversation activity.

    v3-booking-bot-skill/app.jsv3-booking-bot-skill/app.js

    Implementieren Sie eine Hilfsfunktion, um die Eigenschaften code und value der Aktivität endOfConversation festzulegen und den Konversationszustand zu löschen.Implement a helper function to set the endOfConversation activity's code and value properties and clear conversation state. Wenn durch den Bot weitere Ressourcen für die Konversation verwaltet wurden, müssen diese hier freigegeben werden.If the bot managed any other resources for the conversation, you would release them here, too.

    // Code enum can be found here: https://aka.ms/codeEnum
    function endConversation(session, value = null, code = null) {
        session.send('Ending conversation from the skill...');
        // Send endOfConversation with custom code and values
        const msg = {
            value,
            code,
            type: 'endOfConversation'
        };
        session.send(msg);
        // Call endConversation() to clear state
        session.endConversation();
    }
    

    Verwenden Sie die Hilfsmethode, um den Skill zu beenden und die erfassten Daten des Benutzers zurückzugeben, wenn der Benutzer den Prozess abschließt.When the user completes the process, use the helper method to end the skill and return the user's collected data.

    var bot = new builder.UniversalBot(connector, [
        function (session) {
    
        },
        // Dialog has ended
        function(session, result) {
            endConversation(session, result, 'completedSuccessfully');
        }
    ]).set('storage', inMemoryStorage); // Register in memory storage
    

    Die Hilfsmethode wird auch aufgerufen, wenn der Benutzer den Prozess vorzeitig beendet.If instead the user ends the process early, the helper method is still invoked.

    bot.recognizer({
        recognize: function (context, done) {
            var intent = { score: 0.0 };
            if (context.message.text) {
                switch (context.message.text.toLowerCase()) {
                    case 'help':
                        intent = { score: 1.0, intent: 'Help' };
                        break;
                    case 'end':
                        intent = { score: 1.0, intent: 'End' };
                        break;
                }
            }
            done(null, intent);
        }
    });
    
    // Add global endConversation() action bound to the 'Goodbye' intent
    bot.endConversationAction('endAction', "Ok... See you later.", { matches: 'End' });
    
  6. Wird der Skill durch den Skill-Consumer abgebrochen, sendet dieser eine Aktivität vom Typ endOfConversation.If the skill is cancelled by the skill consumer, the consumer sends an endOfConversation activity. Behandeln Sie diese Aktivität, und geben Sie alle mit der Konversation verknüpften Ressourcen frei.Handle this activity and release any resources associated with the conversation.

    v3-booking-bot-skill/app.jsv3-booking-bot-skill/app.js

    // Listen for endOfConversation activities from other sources
    bot.on('endOfConversation', (message) => {
        bot.loadSession(message.address, (err, session) => {
            endConversation(session, null, 'completedSuccessfully');
        });
    })
    
  7. Verwenden Sie dieses Manifest für den Buchungsbot.Use this manifest for the booking bot. Legen Sie die Endpunkt-App-ID auf die App-ID des Bots fest.Set the endpoint app ID to the bot's app ID.

    v3-booking-bot-skill/manifest/v3-booking-bot-skill-manifest.jsonv3-booking-bot-skill/manifest/v3-booking-bot-skill-manifest.json

    {
        "$schema": "https://schemas.botframework.com/schemas/skills/skill-manifest-2.0.0.json",
        "$id": "v3-booking-bot-skill",
        "name": "Booking Skill bot",
        "version": "1.0",
        "description": "This is a sample booking skill",
        "publisherName": "Microsoft",
        "privacyUrl": "https://bookingskillbot.contoso.com/privacy.html",
        "copyright": "Copyright (c) Microsoft Corporation. All rights reserved.",
        "license": "",
        "iconUrl": "https://bookingskillbot.contoso.com/icon.png",
        "tags": [
          "sample",
          "echo"
        ],
        "endpoints": [
          {
            "name": "default",
            "protocol": "BotFrameworkV3",
            "description": "Default endpoint for the skill",
            "endpointUrl": "http://bookingskillbot.contoso.com/api/messages",
            "msAppId": "00000000-0000-0000-0000-000000000000"
          }
        ]
      }
    

    Informationen zum Schema des Qualifikationsmanifests finden Sie unter skill-manifest-2.0.0.json.For the skill-manifest schema, see skill-manifest-2.0.0.json.

Erstellen des Stamm-Bots der Version 4Create the v4 root bot

Der einfache Stamm-Bot nutzt die beiden Skills, sodass Sie überprüfen können, ob die Konvertierungsschritte wie geplant funktioniert haben.The simple root bot consumes the 2 skills and lets you verify that the conversion steps worked as planned. Dieser Bot wird lokal am Port 3978 ausgeführt.This bot will run locally on port 3978.

  1. Fügen Sie der Konfigurationsdatei die App-ID und das Kennwort des Stamm-Bots hinzu.To the configuration file, add the root bot's app ID and password. Fügen Sie für die einzelnen Skills der Version 3 jeweils die entsprechende App-ID hinzu.For each of the v3 skills, add the skill's app ID.

    v4-root-bot/.envv4-root-bot/.env

    MicrosoftAppId=
    MicrosoftAppPassword=
    SkillHostEndpoint=http://localhost:3978/api/skills
    
    SkillSimpleId=v3-skill-bot
    SkillSimpleAppId=
    SkillSimpleEndpoint=http://localhost:3979/api/messages
    
    SkillBookingId=v3-booking-bot-skill
    SkillBookingAppId=
    SkillBookingEndpoint=http://localhost:3980/api/messages
    

Testen des Stamm-BotsTest the root bot

Laden Sie die aktuelle Version von Bot Framework Emulator herunter, und installieren Sie sie.Download and install the latest Bot Framework Emulator.

  1. Starten Sie alle drei Bots lokal auf Ihrem Computer.Start all three bots locally on your machine.
  2. Verwenden Sie den Emulator, um eine Verbindung mit dem Stamm-Bot herzustellen.Use the Emulator to connect to the root bot.
  3. Testen Sie die Skills und den Skill-Consumer.Test the skills and skill consumer.

Ab Version 4.11 benötigen Sie keine App-ID und kein Kennwort, um einen Skill- und Skill-Consumer lokal im Emulator zu testen.Starting with version 4.11, you don't need an app ID and password to test a skill and skill consumer locally in the Emulator. Ein Azure-Abonnement ist weiterhin erforderlich, um Ihre Qualifikation in Azure bereitzustellen.An Azure subscription is still required to deploy your skill to Azure.

Zusätzliche InformationenAdditional information

Authentifizierung zwischen BotsBot-to-bot authentication

Der Stamm und die Qualifikation kommunizieren per HTTP.The root and skill communicate over HTTP. Vom Framework werden Bearertoken und Botanwendungs-IDs verwendet, um die Identität der einzelnen Bots zu bestätigen.The framework uses bearer tokens and bot application IDs to verify the identity of each bot. Es verwendet ein Objekt für die Authentifizierungskonfiguration, um den Authentifizierungsheader eingehender Anforderungen zu überprüfen.It uses an authentication configuration object to validate the authentication header on incoming requests. Sie müssen der Authentifizierungskonfiguration ein Anspruchsüberprüfungs-Validierungszertifikat hinzufügen.You must add a claims validator to the authentication configuration. Die Ansprüche werden nach dem Authentifizierungsheader ausgewertet.The claims are evaluated after the authentication header. Ihr Überprüfungscode sollte einen Fehler oder eine Ausnahme auslösen, um die Anforderung abzulehnen.Your validation code should throw an error or exception to reject the request.

Schließen Sie bei Erstellung eines Chatconnectors eine Eigenschaft vom Typ allowedCallers oder authConfiguration in den Einstellungsparameter ein, um die Authentifizierung zwischen Bots zu ermöglichen.When creating a chat connector, include either an allowedCallers or an authConfiguration property in the settings parameter to enable bot-to-bot authentication.

Die standardmäßige Anspruchsüberprüfung für den Chatconnector verwendet die Eigenschaft allowedCallers.The default claims validator for the chat connector uses the allowedCallers property. Bei dem Wert der Eigenschaft muss es sich um ein Array der Anwendungs-IDs der Bots handeln, die den Skill aufrufen dürfen.Its value should be an array of the application IDs of the bots that are allowed to call the skill. Legen Sie das erste Element auf '*' fest, damit jeder Bot die Qualifikation aufrufen kann.Set the first element to '*' to allow any bot to call the skill.

Wenn Sie eine benutzerdefinierte Anspruchsüberprüfungsfunktion verwenden möchten, legen Sie das Feld authConfiguration auf Ihre Überprüfungsfunktion fest.To use a custom claims validation function, set the authConfiguration field to your validation function. Diese Funktion muss ein Array mit Anspruchsobjekten akzeptieren und bei nicht erfolgreicher Überprüfung einen Fehler auslösen.This function should accept an array of claim objects and throw an error if validation fails. Ein Beispiel für eine Anspruchsüberprüfung finden Sie in Schritt 4 des Abschnitts Konvertieren des Buchungsbots.Step 4 of the convert the booking bot section has an example claims validator.