Verbinden eines Bots mit Webex Teams über den Webex-AdapterConnect a bot to Webex Teams using the Webex adapter

gilt für: SDK v4APPLIES TO: SDK v4

In diesem Artikel erfahren Sie, wie Sie mit dem Adapter im SDK eine Verbindung des Bots mit Webex herstellen können.In this article you will learn how to connect a bot to Webex using the adapter available in the SDK. Dieser Artikel führt Sie durch die Änderung des EchoBot-Beispiels, um eine Verbindung mit einer Webex-App herzustellen.This article will walk you through modifying the EchoBot sample to connect it to a Webex app.

Hinweis

In den folgenden Anweisungen wird die C#-Implementierung des Webex-Adapters behandelt.The instructions below cover the C# implementation of the Webex adapter. Anweisungen zur Verwendung der JavaScript-Implementierung, die Teil der BotKit-Bibliotheken ist, finden Sie in der BotKit-Webex-Dokumentation.For instructions on using the JavaScript implementation, part of the BotKit libraries, see the BotKit Webex documentation.

VoraussetzungenPrerequisites

Erstellen einer Webex-Bot-AppCreate a Webex bot app

  1. Melden Sie sich beim Webex-Entwicklerdashboard an, und klicken Sie auf die Schaltfläche „Create a new app“ (Neue App erstellen).Log into the Webex developer dashboard and then click the 'Create a new app' button.

  2. Wählen Sie auf dem nächsten Bildschirm die Option zum Erstellen eines Webex-Bots aus, indem Sie auf „Create a bot“ (Bot erstellen) klicken.On the next screen choose to create a Webex Bot by clicking 'Create a bot'.

  3. Geben Sie auf dem nächsten Bildschirm einen Namen, einen Benutzername und eine Beschreibung für Ihren Bot ein. Wählen Sie ein Symbol aus, oder laden Sie ein eigenes Bild hoch.On the next screen, enter an appropriate name, username and description for your bot, as well as choosing an icon or uploading an image of your own.

    bot-Einstellung

    Klicken Sie auf die Schaltfläche „Add bot“ (Bot hinzufügen).Click the 'Add bot' button.

  4. Auf der nächsten Seite wird ein Zugriffstoken für Ihre neue Webex-App bereitgestellt. Notieren Sie sich dieses Token, da Sie es beim Konfigurieren Ihres Bots benötigen.On the next page you will be provided with an access token for your new Webex app, please make a note of this token as you will require it when configuring your bot.

    Zugriffstoken

Einbinden des Webex-Adapters in Ihren BotWiring up the Webex adapter in your bot

Bevor Sie die Konfiguration Ihrer Webex-App abschließen können, müssen Sie den Webex-Adapter in Ihren Bot einbinden.Before you can complete the configuration of our Webex app, you need to wire up the Webex adapter into your bot.

Installieren des NuGet-Pakets für den Webex-AdapterInstall the Webex adapter NuGet package

Fügen Sie das NuGet-Paket Microsoft.Bot.Builder.Adapters.Webex hinzu.Add the Microsoft.Bot.Builder.Adapters.Webex NuGet package. Weitere Informationen zur Verwendung von NuGet finden Sie unter Installieren und Verwalten von Paketen in Visual Studio mit dem NuGet-Paket-Manager.For more information on using NuGet, see Install and manage packages in Visual Studio

Erstellen einer Webex-AdapterklasseCreate a Webex adapter class

Erstellen Sie eine neue Klasse, die von der *webexadapter _-Klasse erbt.Create a new class that inherits from the *WebexAdapter _ class. Diese Klasse dient uns als Adapter für den Webex-Kanal.This class will act as our adapter for the Webex channel. Sie enthält Funktionen zur Fehlerbehandlung (ähnlich wie die botframeworkadapterwitherrorhandler -Klasse, die bereits im Beispiel zum Verarbeiten von Anforderungen von Azure bot Service verwendet wird).It includes error handling capabilities (much like the BotFrameworkAdapterWithErrorHandler class already in the sample, used for handling requests from Azure Bot Service).

public class WebexAdapterWithErrorHandler : WebexAdapter
{
    public WebexAdapterWithErrorHandler(IConfiguration configuration, ILogger<WebexAdapter> logger)
        : base(configuration, null, logger)
    {
        OnTurnError = async (turnContext, exception) =>
        {
            // Log any leaked exception from the application.
            logger.LogError(exception, $"[OnTurnError] unhandled error : {exception.Message}");

            // Send a message to the user
            await turnContext.SendActivityAsync("The bot encountered an error or bug.");
            await turnContext.SendActivityAsync("To continue to run this bot, please fix the bot source code.");

            // Send a trace activity, which will be displayed in the Bot Framework Emulator
            await turnContext.TraceActivityAsync("OnTurnError Trace", exception.Message, "https://www.botframework.com/schemas/error", "TurnError");
        };
    }
}

Erstellen eines neuen Controllers für die Verarbeitung von Webex-AnforderungenCreate a new controller for handling Webex requests

Wir erstellen einen neuen Controller, der Anforderungen von Ihrer Webex-App verarbeitet, auf einem neuen Endpunkt „api/webex“ (anstelle des Standardendpunkts „api/messages“, der für Anforderungen von Azure Bot Service-Kanälen verwendet wird).We create a new controller which will handle requests from your Webex app, on a new endpoint 'api/webex' instead of the default 'api/messages' used for requests from Azure Bot Service Channels. Indem Sie Ihrem Bot einen zusätzlichen Endpunkt hinzufügen, können Sie mit demselben Bot sowohl Anforderungen von Bot Service-Kanälen als auch von Webex akzeptieren.By adding an additional endpoint to your bot, you can accept requests from Bot Service channels (or additional adapters), as well as from Webex, using the same bot.

[Route("api/webex")]
[ApiController]
public class WebexController : ControllerBase
{
    private readonly WebexAdapter _adapter;
    private readonly IBot _bot;

    public WebexController(WebexAdapter adapter, IBot bot)
    {
        _adapter = adapter;
        _bot = bot;
    }

    [HttpPost]
    public async Task PostAsync()
    {
        // Delegate the processing of the HTTP POST to the adapter.
        // The adapter will invoke the bot.
        await _adapter.ProcessAsync(Request, Response, _bot, default(CancellationToken));
    }
}

Einfügen des Webex-Adapters in die Datei „Startup.cs“ des BotsInject Webex Adapter In Your Bot Startup.cs

Fügen Sie die folgende Zeile in der Startup.cs-Datei in die Methode " konfiguriert reservices " ein, die den WebEx-Adapter registriert und für die neue Controller Klasse verfügbar macht.Add the following line into the ConfigureServices method within your Startup.cs file, which will register your Webex adapter and make it available for your new controller class. Die Konfigurationseinstellungen, die Sie im nächsten Schritt beschrieben werden, werden automatisch vom Adapter verwendet.The configuration settings, described in the next step, will be automatically used by the adapter.

services.AddSingleton<WebexAdapter, WebexAdapterWithErrorHandler>();

Nachdem Sie hinzugefügt wurden, sollte die Methode " Konfigurations Methode" wie folgt aussehen.Once added, your ConfigureServices method should look like this.

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
    services.AddHttpClient().AddControllers().AddNewtonsoftJson();

    // Create the default Bot Framework Adapter.
    services.AddSingleton<IBotFrameworkHttpAdapter, BotFrameworkAdapterWithErrorHandler>();

    // Create the default Bot Framework Adapter.
    services.AddSingleton<WebexAdapter, WebexAdapterWithErrorHandler>();

    // Create the bot as a transient. In this case the ASP Controller is expecting an IBot.
    services.AddTransient<IBot, EchoBot>();
}

Hinzufügen von Webex-Adaptereinstellungen zur Konfigurationsdatei Ihres BotsAdd Webex adapter settings to your bot's configuration file

  1. Fügen Sie die unten gezeigten vier Einstellungen der Datei „appsettings.json“ in Ihrem Botprojekt hinzu.Add the 4 settings shown below to your appSettings.json file in your bot project.
{
  "WebexPublicAddress": "",
  "WebexAccessToken": "",
  "WebexSecret": "",
  "WebexWebhookName": ""
}
  1. Füllen Sie die Einstellung _ webexaccesstoken* innerhalb des WebEx-bot-Zugriffs Tokens auf, das beim Erstellen Ihrer WebEx-bot-app in den vorherigen Schritten generiert wurde.Populate the _ WebexAccessToken* setting within the Webex Bot Access Token, that was generated when creating your Webex bot app in the earlier steps. Lassen Sie die drei anderen Einstellungen für den Moment leer. Die Informationen für diese Einstellungen werden in späteren Schritten gesammelt.Leave the other 3 settings empty at this time, until we gather the information needed for them in later steps.

Abschluss der Konfiguration Ihrer Webex-App und des zugehörigen BotsComplete configuration of your Webex app and bot

Erstellen und Aktualisieren eines Webex-WebhooksCreate and update a Webex webhook

Nachdem Sie eine Webex-App erstellt und den Adapter in Ihr Botprojekt eingebunden haben, besteht der letzte Schritt darin, einen Webex-Webhook zu konfigurieren, ihn an den richtigen Endpunkt in Ihrem Bot zu verweisen und Ihre App zu abonnieren, um sicherzustellen, dass Ihr Bot Nachrichten und Anhänge empfängt.Now that you have created a Webex app and wired up the adapter in your bot project, the final steps are to configure a Webex webhook, point it to the correct endpoint on your bot, and subscribe your app to ensure your bot receives messages and attachments. Zu diesem Zweck muss der Bot ausgeführt werden, damit Webex überprüfen kann, ob die URL des Endpunkts gültig ist.To do this your bot must be running, so that Webex can verify the URL to the endpoint is valid.

  1. Um diesen Schritt abzuschließen, stellen Sie den Bot in Azure bereit, und notieren Sie die URL zu Ihrem bereitgestellten Bot.To complete this step, deploy your bot to Azure and make a note of the URL to your deployed bot. Ihr Webex-Messagingendpunkt ist die URL zu Ihrem Bot. Dabei handelt es sich um die URL Ihrer bereitgestellten Anwendung (bzw. den ngrok-Endpunkt) plus „/api/webex“ (Beispiel: https://yourbotapp.azurewebsites.net/api/webex).Your Webex messaging endpoint is the URL for your bot, which will be the URL of your deployed application (or ngrok endpoint), plus '/api/webex' (for example, https://yourbotapp.azurewebsites.net/api/webex).

    Hinweis

    Wenn Sie nicht bereit sind, den bot in Azure bereitzustellen oder den bot bei Verwendung des WebEx-Adapters zu debuggen, können Sie ein Tool wie ngrok verwenden (das Sie wahrscheinlich bereits installiert haben, wenn Sie zuvor den bot Framework-Emulator verwendet haben), um die lokale Ausführung zu Ihrem bot zu Tunneln und Ihnen eine öffentlich zugängliche URL für dieses bereitzustellen.If you are not ready to deploy your bot to Azure, or wish to debug your bot when using the Webex adapter, you can use a tool such as ngrok (which you will likely already have installed if you have used the Bot Framework Emulator previously) to tunnel through to your bot running locally and provide you with a publicly accessible URL for this.

    Wenn Sie einen ngrok-Tunnel erstellen und eine URL zu Ihrem Bot abrufen möchten, verwenden Sie den folgenden Befehl in einem Terminalfenster (dies setzt voraus, dass der lokale Bot auf Port 3978 ausgeführt wird; wenn dies auf Ihren Bot nicht zutrifft, ändern Sie die Portnummern im Befehl).If you wish create an ngrok tunnel and obtain a URL to your bot, use the following command in a terminal window (this assumes your local bot is running on port 3978, alter the port numbers in the command if your bot is not).

    ngrok.exe http 3978 -host-header="localhost:3978"
    
  2. Navigieren Sie zu https://developer.webex.com/docs/api/v1/webhooks.Navigate to https://developer.webex.com/docs/api/v1/webhooks.

  3. Klicken Sie auf den Link für die Post -Methode https://webexapis.com/v1/webhooks (mit der Beschreibung webhook erstellen).Click the link for the POST method https://webexapis.com/v1/webhooks (with the description Create a webhook). Dadurch wird ein Formular angezeigt, das es Ihnen ermöglicht, eine Anforderung an den Endpunkt zu senden.This will display a form that allows you to send a request to the endpoint.

    webhook-Endpunkt

  4. Füllen Sie das Formular mit den folgenden Details:Populate the form with the following details:

    1. Name : der Name des webhooks, z. b. Nachrichten-webhook.Name - The name for your webhook, for example Messages Webhook.
    2. TargetUrl : die vollständige URL zum WebEx-Endpunkt Ihres Bots, z https://yourbotapp.azurewebsites.net/api/webex . b.).TargetUrl - The full URL to your bot's Webex endpoint, such as https://yourbotapp.azurewebsites.net/api/webex).
    3. Ressourcen -Nachrichten.resource - Messages.
    4. Ereignis -erstellt.event - Created.
    5. Filter : lassen Sie das Feld leer.filter - Leave it blank.
    6. Secret : ein geheimer Schlüssel Ihrer Wahl zum Sichern Ihres webhooks.secret - A secret of your choice to secure your webhook. Später fügen Sie Sie Ihrem bot hinzu appsettings.json .Later you will add it to your bot's appsettings.json.

    webhook-Formular

  5. Klicken Sie auf die Schaltfläche Run (Ausführen). Ihr Webhook wird erstellt, und Ihnen wird eine Erfolgsmeldung angezeigt.Click Run, which should create your webhook and provide you with a success message.

Einrichten der verbleibenden Einstellungen in Ihrer BotanwendungComplete the remaining settings in your bot application

Richten Sie die verbleibenden drei Einstellungen in der appsettings.json-Datei Ihres Bots ein (WebexAccessToken haben Sie bereits in einem früheren Schritt aufgefüllt).Complete the remaining 3 settings in your bot's appsettings.json file (you already populated WebexAccessToken in an earlier step).

  • WebexPublicAddress (vollständige URL zum Webex-Endpunkt Ihres Bots)WebexPublicAddress (the full URL to your bot's Webex endpoint)
  • WebexSecret (das Geheimnis, das Sie beim Erstellen Ihres Webhooks im vorherigen Schritt angegeben haben)WebexSecret (the secret you provided when creating your webhook in the previous step)
  • WebexWebhookName (der Name Ihres Webhooks, den Sie im vorherigen Schritt angegeben haben)WebexWebhookName (the name for your webhook you provided in the previous step)

Erneutes Bereitstellen Ihres Bots in Ihrem Webex-TeamRe-deploy your bot in your Webex team

Nachdem Sie die Konfiguration der Einstellungen Ihres Bots in der Datei „appsettings.json“ abgeschlossen haben, sollten Sie Ihren Bot erneut bereitstellen (bzw. den Bot neu starten, wenn Sie über „ngrok“ einen Tunnel zu einem lokalen Endpunkt erstellt haben).Now that you have completed the configuration of your bot's settings in appsettings.json, you should re-deploy your bot (or restart your bot if you are tunnelling to a local endpoint using ngrok). Die Konfiguration Ihrer Webex-App und des zugehörigen Bots ist jetzt abgeschlossen.Configuration of you Webex app and bot are now complete. Sie können sich jetzt unter https://www.webex.com bei Ihrem Webex-Team anmelden und mit Ihrem Bot chatten, indem Sie auf dieselbe Weise eine Nachricht an den Bot senden, als würden Sie eine andere Person kontaktieren.You can now login to your Webex team at https://www.webex.com and chat with your bot by sending it a message, in the same way you would contact another person.

Kontaktperson