Verbinden eines Bots mit TwilioConnect a bot to Twilio

gilt für: SDK v4APPLIES TO: SDK v4

Sie können Ihren Bot so konfigurieren, dass er mit Personen kommuniziert, die als Plattform für die Cloudkommunikation Twilio verwenden.You can configure your bot to communicate with people using the Twilio cloud communication platform.

Anmelden bei einem Twilio-Konto oder Erstellen eines Kontos für das Senden und Empfangen von SMS-NachrichtenLog in to or create a Twilio account for sending and receiving SMS messages

Wenn Sie kein Twilio-Konto besitzen, können Sie ein neues Konto erstellen.If you don't have a Twilio account, create a new account.

Erstellen einer TwiML-AnwendungCreate a TwiML Application

Erstellen Sie eine TwiML-Anwendung, indem Sie die folgende Anleitung befolgen.Create a TwiML application following the instructions.

Erstellen einer App

Geben Sie unter Eigenschaften einen ANZEIGENAMEN ein.Under Properties, enter a FRIENDLY NAME. In diesem Tutorial verwenden wir „My TwiML app“ als Beispiel.In this tutorial we use "My TwiML app" as an example. Die ANFORDERUNGS-URL unter „Voice“ (Sprache) kann leer gelassen werden.The REQUEST URL under Voice can be left empty. Unter Messaging sollte die Anforderungs-URL auf https://sms.botframework.com/api/sms festgelegt werden.Under Messaging, the Request URL should be https://sms.botframework.com/api/sms.

Auswählen oder Hinzufügen einer TelefonnummerSelect or add a phone number

Befolgen Sie diese Anleitung, um über die Konsolenwebsite eine verifizierte Anrufer-ID hinzuzufügen.Follow the instructions here to add a verified caller ID via the console site. Wenn Sie fertig sind, wird Ihre verifizierte Nummer im Abschnitt Active Numbers (Aktive Nummern) unter Manage Numbers (Nummern verwalten) angezeigt.After you finish, you will see your verified number in Active Numbers under Manage Numbers.

Festlegen einer Telefonnummer

Angeben der Anwendung für Sprachfunktion (Voice) und MessagingSpecify application to use for Voice and Messaging

Klicken Sie auf die Nummer, und navigieren Sie zu Konfigurieren.Click the number and go to Configure. Legen Sie unter „Voice“ und „Messaging“ jeweils die Option CONFIGURE WITH (KONFIGURIEREN MIT) auf „TwiML App“ und TWIML APP auf „My TwiML app“ fest.Under both Voice and Messaging, set CONFIGURE WITH to be TwiML App and set TWIML APP to be My TwiML app. Klicken Sie auf Speichern, wenn Sie fertig sind.After you finish, click Save.

Angeben der Anwendung

Navigieren Sie zurück zu Manage Numbers (Nummern verwalten). Sie sehen, dass die Konfiguration für „Voice“ und „Messaging“ in „TwiML App“ geändert wurde.Go back to Manage Numbers, you will see the configuration of both Voice and Messaging are changed to TwiML App.

Angegebene Nummer

Erfassen von AnmeldeinformationenGather credentials

Navigieren Sie zurück zur Startseite der Konsole. Sie sehen, dass Ihre Konto-SID (Account SID) und das Authentifizierungstoken (Auth Token) im Projektdashboard angezeigt werden (unten dargestellt).Go back to the console homepage, you will see your Account SID and Auth Token on the project dashboard, as shown below.

Erfassen von App-Anmeldeinformationen

Senden von AnmeldeinformationenSubmit credentials

Rufen Sie in einem separaten Fenster die Bot Framework-Website unter https://dev.botframework.com/ auf.In a separate window, return to the Bot Framework site at https://dev.botframework.com/.

  • Klicken Sie auf My bots (Meine Bots), und wählen Sie den Bot aus, für den eine Verbindung mit Twilio hergestellt werden soll.Select My bots and choose the Bot that you want to connect to Twilio. Sie werden zum Azure-Portal geleitet.This will direct you to the Azure portal.
  • Wählen Sie unter Bot Management (Botverwaltung) die Option Channels (Kanäle).Select Channels under Bot Management. Klicken Sie auf das Symbol „Twilio (SMS)“.Click the Twilio (SMS) icon.
  • Geben Sie die Telefonnummer, die Konto-SID und das Authentifizierungstoken ein, die Sie sich zuvor notiert haben.Enter the Phone Number, Account SID, and Auth Token you record earlier. Klicken Sie auf Speichern, wenn Sie fertig sind.After you finish, click Save.

Senden von Anmeldeinformationen

Sobald Sie diese Schritte ausgeführt haben, ist Ihr Bot erfolgreich für die Kommunikation mit Benutzern, die Twilio verwenden, konfiguriert.When you have completed these steps, your bot will be successfully configured to communicate with users using Twilio.

Verbinden eines Bots mit Twilio mithilfe des Twilio-AdaptersConnect a bot to Twilio using the Twilio adapter

So wie Sie den im Azure Bot Service verfügbaren Kanal verwenden können, um die Verbindung Ihres Bots mit Twilio herzustellen, können Sie auch den Twilio-Adapter verwenden.As well as the channel available in the Azure Bot Service to connect your bot with Twilio, you can also use the Twilio adapter. In diesem Artikel erfahren Sie, wie Sie mit dem Adapter eine Verbindung des Bots mit Twilio herstellen können.In this article you will learn how to connect a bot to Twilio using the adapter. Dieser Artikel führt Sie durch die Änderung des EchoBot-Beispiels, um es mit Twilio zu verbinden.This article will walk you through modifying the EchoBot sample to connect it to Twilio.

Hinweis

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

VoraussetzungenPrerequisites

Abrufen einer Twilio-Nummer und Sammeln von KontoanmeldeinformationenGet a Twilio number and gather account credentials

  1. Melden Sie sich bei Twilio an.Log into Twilio. Rechts auf der Seite werden ACCOUNT SID (KONTO-SID) und AUTH TOKEN (AUTHENTIFIZIERUNGSTOKEN) für Ihr Konto angezeigt. Notieren Sie sich diese Werte, da Sie sie später beim Konfigurieren ihrer Botanwendung benötigen.On the right hand side of the page you will see the ACCOUNT SID and AUTH TOKEN for your account, make a note of these as you will need them later when configuring your bot application.

  2. Wählen Sie Programmable Voice (Programmierbare Stimme) unter Get Started with Twilio (Einstieg in Twilio) aus.Choose Programmable Voice from the options under Get Started with Twilio.

Erste Schritte mit „Programmable Voice“

  1. Klicken Sie auf der nächsten Seite auf die Schaltfläche Get your first Twilio number (Abrufen Ihrer ersten Twilio-Nummer).On the next page, click the Get your first Twilio number button. In einem Popupfenster wird eine neue Nummer angezeigt, die Sie annehmen können, indem Sie auf Choose this number (Diese Nummer wählen) klicken (alternativ können Sie nach einer anderen Nummer suchen, indem Sie die Anweisungen auf dem Bildschirm befolgen).A pop-up window will show you a new number, which you can accept by clicking Choose this number (alternatively you can search for a different number by following the on screen instructions).

  2. Nachdem Sie die Nummer ausgewählt haben, notieren Sie sich diese, da Sie sie bei der Konfiguration Ihrer Botanwendung in einem späteren Schritt benötigen.Once you have chosen your number, make a note of it, as you will need this when configuring your bot application in a later step.

Einrichten des Twilio-Adapters in Ihrem BotWiring up the Twilio adapter in your bot

Nun verfügen Sie über eine Twilio-Nummer und Anmeldeinformationen und müssen Ihre Botanwendung konfigurieren.Now that you have your Twilio number and account credentials, you need to configure your bot application.

Installieren des Twilio-Adapter-NuGet-PaketsInstall the Twilio adapter NuGet package

Fügen Sie das NuGet-Paket Microsoft.Bot.Builder.Adapters.Twilio hinzu.Add the Microsoft.Bot.Builder.Adapters.Twilio 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 Twilio-AdapterklasseCreate a Twilio adapter class

Erstellen Sie eine neue Klasse, die von der *twilioadapter _-Klasse erbt.Create a new class that inherits from the *TwilioAdapter _ class. Diese Klasse fungiert als Adapter für den twilio-Kanal und enthält Funktionen zur Fehlerbehandlung (ähnlich der botframeworkadapterwitherrorhandler -Klasse, die bereits im Beispiel verwendet wird, um andere Anforderungen von Azure bot Service zu verarbeiten).This class will act as our adapter for the Twilio channel and include error handling capabilities (similar to the BotFrameworkAdapterWithErrorHandler class already in the sample, used for handling other requests from Azure Bot Service).

public class TwilioAdapterWithErrorHandler : TwilioAdapter
{
    public TwilioAdapterWithErrorHandler(IConfiguration configuration, ILogger<BotFrameworkHttpAdapter> logger)
            : base(configuration, 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 Twilio-AnforderungenCreate a new controller for handling Twilio requests

Erstellen Sie einen neuen Controller, der Anforderungen von Twilio verarbeitet, und zwar in einem neuen Endpunkt „api/twilio“ anstelle des standardmäßigen, für Anforderungen von Azure Bot Service-Kanälen verwendeten „api/messages“.Create a new controller which will handle requests from Twilio, on a new endpoing 'api/twilio' 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 Twilio akzeptieren.By adding an additional endpoint to your bot, you can accept requests from Bot Service channels, as well as from Twilio, using the same bot.

[Route("api/twilio")]
[ApiController]
public class TwilioController : ControllerBase
{
    private readonly TwilioAdapter _adapter;
    private readonly IBot _bot;

    public TwilioController(TwilioAdapter adapter, IBot bot)
    {
        _adapter = adapter;
        _bot = bot;
    }

    [HttpPost]
    [HttpGet]
    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);
    }
}

Einfügen des Twilio-Adapters in die Datei „startup.cs“ des BotsInject the Twilio adapter in your bot startup.cs

Fügen Sie die folgende Zeile in der Startup.cs-Datei der Methode " konfiguriert " hinzu.Add the following line to the ConfigureServices method within your startup.cs file. Dadurch wird Ihr Twilio-Adapter registriert und für die neue Controllerklasse verfügbar gemacht.This will register your Twilio adapter and make it available for your new controller class. Die Konfigurationseinstellungen, die Sie im vorherigen Schritt hinzugefügt haben, werden automatisch vom Adapter verwendet.The configuration settings you added in the previous step will be automatically used by the adapter.

services.AddSingleton<TwilioAdapter, TwilioAdapterWithErrorHandler>();

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

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

    // Create the default Bot Framework Adapter (used for Azure Bot Service channels and Emulator).
    services.AddSingleton<IBotFrameworkHttpAdapter, BotFrameworkAdapterWithErrorHandler>();

    // Create the Twilio Adapter
    services.AddSingleton<TwilioAdapter, TwilioAdapterWithErrorHandler>();

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

Abrufen einer URL für Ihren BotObtain a URL for your bot

Nachdem Sie nun den Adapter in Ihrem Botprojekt eingerichtet haben, müssen Sie Twilio den richtigen Endpunkt bereitstellen, damit der Bot Nachrichten empfängt.Now that you have wired up the adapter in your bot project, you need to identify the correct endpoint to provide to Twilio in order to ensure your bot receives messages. Sie benötigen diese URL auch, um die Konfiguration Ihrer Botanwendung abzuschließen.You also require this URL to complete configuration of your bot application.

Um diesen Schritt abzuschließen, stellen Sie den Bot in Azure bereit, und notieren Sie die URL Ihres bereitgestellten Bots.To complete this step, deploy your bot to Azure and make a note of the URL of your deployed bot.

Hinweis

Wenn Sie nicht bereit sind, den bot in Azure bereitzustellen oder den bot bei Verwendung des twilio-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 Twilio 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"

Hinzufügen von Twilio-App-Einstellungen zur Konfigurationsdatei Ihres BotsAdd Twilio app settings to your bot's configuration file

Fügen Sie die unten gezeigten Einstellungen der Datei „appSettings.json“ in Ihrem Botprojekt hinzu.Add the settings shown below to your appSettings.json file in your bot project. Mit den Werten, die Sie beim Erstellen Ihrer twilio-Nummer gesammelt haben, füllen Sie _ * twilionenummer * *, twilioaccountsid und twilioauthtoken auf.You populate _*TwilioNumber**, TwilioAccountSid and TwilioAuthToken using the values you gathered when creating your Twilio number. TwilioValidationUrl sollte die URL Ihres Bots sein, plus des api/twilio-Endpunkts, den Sie im neu erstellten Controller angegeben haben.TwilioValidationUrl should be your bot's URL, plus the api/twilio endpoint you specified in your newly created controller. Beispiel: https://yourboturl.com/api/twilio.For example, https://yourboturl.com/api/twilio.

  "TwilioNumber": "",
  "TwilioAccountSid": "",
  "TwilioAuthToken": "",
  "TwilioValidationUrl", ""

Nachdem Sie die oben aufgeführten Einstellungen vorgenommen haben, sollten Sie den Bot erneut bereitstellen (oder bei der lokalen Ausführung mit ngrok neu starten).Once you have populated the settings above, you should redeploy (or restart if running locally with ngrok) your bot.

Abschluss der Konfiguration Ihrer Twilio-NummerComplete configuration of your Twilio number

Im letzten Schritt konfigurieren Sie den Messagingendpunkt Ihrer neuen Twilio-Nummer, um sicherzustellen, dass Ihr Bot Nachrichten empfängt.The final step is to configure your new Twilio number's messaging endpoint, to ensure your bot receives messages.

  1. Navigieren Sie zur Twilio-Seite Active Numbers (Aktive Nummern).Navigate to the Twilio Active Numbers page.

  2. Klicken Sie auf die Telefonnummer, die Sie im vorherigen Schritt erstellt haben.Click the phone number you created in the earlier step.

  3. Vervollständigen Sie im Abschnitt Messaging den Abschnitt A MESSAGE COMES IN (EINE NACHRICHT GEHT EIN), indem Sie in der Dropdownliste Webhook auswählen und in das Textfeld den Endpunkt Ihres Bots eintragen, den Sie im vorherigen Schritt zum Festlegen der Einstellung TwilioValidationUrl verwendet haben, z. B. https://yourboturl.com/api/twilio.Within the Messaging section, complete the A MESSAGE COMES IN section by chooisng Webhook from the drop down and populating the text box with your bot's endpoint that you used to populate the TwilioValidationUrl setting in the previous step, such as https://yourboturl.com/api/twilio.

Konfigurieren des Twilio-Nummern-Webhooks

  1. Klicken Sie auf die Schaltfläche Save .Click the Save button.

Testen des Bots mit Adapter in TwilioTest your bot with adapter in Twilio

Sie können jetzt überprüfen, ob Ihr Bot ordnungsgemäß mit Twilio verbunden ist, indem Sie eine SMS-Nachricht an Ihre Twilio-Nummer senden.You can now test whether your bot is connected to Twilio correctly by sending an SMS message to your Twilio number. Nachdem die Nachricht von Ihrem Bot empfangen wurde, sendet er eine Nachricht an Sie zurück, um den Text aus Ihrer Nachricht wiederzugeben.Once the message is received by your bot it will send a message back to you, echoing the text from your message.

Sie können diese Funktion auch mit dem Beispielbot für den Twilio-Adapter testen, indem Sie die Datei „appSettings.json“ mit den gleichen Werten auffüllen, die in den obigen Schritten beschrieben werden.You can also test this feature using the sample bot for the Twilio adapter by populating the appSettings.json with the same values described in the steps above.