ボットを Twilio に接続するConnect a bot to Twilio

適用対象: SDK v4APPLIES TO: SDK v4

Twilio クラウド通信プラットフォームを使用してユーザーと通信するようにボットを構成できます。You can configure your bot to communicate with people using the Twilio cloud communication platform.

SMS メッセージを送受信するための Twilio アカウントにログインするかアカウントを作成するLog in to or create a Twilio account for sending and receiving SMS messages

Twilio アカウントを持っていない場合は、新しいアカウントを作成しますIf you don't have a Twilio account, create a new account.

TwiML アプリケーションを作成するCreate a TwiML Application

手順に従って、TwiML アプリケーションを作成します。Create a TwiML application following the instructions.

アプリを作成する

[Properties](プロパティ) の下で、フレンドリ名 を入力します。Under Properties, enter a FRIENDLY NAME. このチュートリアルでは、例として "My TwiML app" を使用します。In this tutorial we use "My TwiML app" as an example. [Voice](音声) の下の [REQUEST URL](要求 URL) は空のままにすることができます。The REQUEST URL under Voice can be left empty. [Messaging](メッセージング) の下の [Request URL](要求 URL)https://sms.botframework.com/api/sms にする必要があります。Under Messaging, the Request URL should be https://sms.botframework.com/api/sms.

電話番号を選択または追加するSelect or add a phone number

こちらの手順に従って、コンソール サイト経由で検証済みの呼び出し元の ID を追加します。Follow the instructions here to add a verified caller ID via the console site. 終了すると、 [Manage Numbers](番号の管理) の下の [Active Numbers](アクティブな番号) に検証済みの番号が表示されます。After you finish, you will see your verified number in Active Numbers under Manage Numbers.

電話番号を設定する

音声とメッセージングに使用するアプリケーションを指定するSpecify application to use for Voice and Messaging

番号をクリックし、 [Configure](構成) に移動します。Click the number and go to Configure. [Voice](音声) と [Messaging](メッセージング) の両方で、 [CONFIGURE WITH](構成の対象) を [TwiML App](TwiML アプリ) に設定し、 [TWIML APP](TwiML アプリ) を "My TwiML app" に設定します。Under both Voice and Messaging, set CONFIGURE WITH to be TwiML App and set TWIML APP to be My TwiML app. 終了したら、 [保存] をクリックします。After you finish, click Save.

アプリケーションを指定する

[Manage Numbers](番号の管理) に戻ります。[Voice](音声) と [Messaging](メッセージング) の両方の構成が [TwiML App](TwiML アプリ) に変更されています。Go back to Manage Numbers, you will see the configuration of both Voice and Messaging are changed to TwiML App.

指定された番号

資格情報を収集するGather credentials

コンソール ホームページに戻ります。次のように、アカウント SID と認証トークンがプロジェクト ダッシュボードに表示されます。Go back to the console homepage, you will see your Account SID and Auth Token on the project dashboard, as shown below.

アプリの資格情報を収集する

資格情報を送信するSubmit credentials

別のウィンドウで、Bot Framework サイト (https://dev.botframework.com/ ) に戻ります。In a separate window, return to the Bot Framework site at https://dev.botframework.com/.

  • [My bots](マイ ボット) を選択し、Twilio に接続するボットを選択します。Select My bots and choose the Bot that you want to connect to Twilio. これにより Azure portal に移動します。This will direct you to the Azure portal.
  • [Bot Management](ボット管理) の下の [チャネル] を選択します。Select Channels under Bot Management. Twilio (SMS) アイコンをクリックします。Click the Twilio (SMS) icon.
  • 前に記録した電話番号、アカウント SID、および認証トークンを入力します。Enter the Phone Number, Account SID, and Auth Token you record earlier. 終了したら、 [保存] をクリックします。After you finish, click Save.

資格情報を送信する

これらの手順を完了すると、ボットは、Twilio を使ってユーザーと通信するように正しく構成されます。When you have completed these steps, your bot will be successfully configured to communicate with users using Twilio.

Twilio アダプターを使用してボットを Twilio に接続するConnect a bot to Twilio using the Twilio adapter

Twilio にボットを接続するには、Azure Bot Service で用意されているチャネルを使用するほかに、Twilio アダプターを使用する方法があります。As well as the channel available in the Azure Bot Service to connect your bot with Twilio, you can also use the Twilio adapter. この記事では、アダプターを使用してボットを Twilio に接続する方法について説明します。In this article you will learn how to connect a bot to Twilio using the adapter. この記事では、Twilio に接続するよう EchoBot サンプルに変更を加える手順を解説します。This article will walk you through modifying the EchoBot sample to connect it to Twilio.

注意

以下の手順では、Twilio アダプターの C# 実装について説明しています。The instructions below cover the C# implementation of the Twilio adapter. JS アダプター (BotKit ライブラリに含まれます) の使用手順については、BotKit Twilio のドキュメントを参照してください。For instructions on using the JS adapter, part of the BotKit libraries, see the BotKit Twilio documentation.

前提条件Prerequisites

Twilio 番号を取得してアカウントの資格情報を収集するGet a Twilio number and gather account credentials

  1. Twilio にログインします。Log into Twilio. ご利用のアカウントの [ACCOUNT SID](アカウント SID)[AUTH TOKEN](認証トークン) がページの右側に表示されるので、それらを書き留めておいてください。後で自分のボット アプリケーションを構成する際に必要になります。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. [Get Started with Twilio](Twilio の開始) のオプションから [Programmable Voice](プログラミング可能な音声) を選択します。Choose Programmable Voice from the options under Get Started with Twilio.

プログラミング可能な音声で開始する

  1. 次のページで、 [Get your first Twilio number](最初の Twilio 番号を取得) ボタンをクリックします。On the next page, click the Get your first Twilio number button. ポップアップ ウィンドウに新しい番号が表示されます。これは、 [Choose this number](この番号を選択する) をクリックすることで受け入れられます (画面の指示に従って別の番号を検索することもできます)。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. 目的の番号を選択したら、それを書き留めておいてください。後の手順でボット アプリケーションを構成する際に必要になります。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.

ボットに Twilio アダプターを接続するWiring up the Twilio adapter in your bot

Twilio 番号とアカウントの資格情報が揃ったら、自分のボット アプリケーションを構成する必要があります。Now that you have your Twilio number and account credentials, you need to configure your bot application.

Twilio アダプターの NuGet パッケージをインストールするInstall the Twilio adapter NuGet package

Microsoft.Bot.Builder.Adapters.Twilio NuGet パッケージを追加します。Add the Microsoft.Bot.Builder.Adapters.Twilio NuGet package. NuGet の使用方法について詳しくは、Visual Studio でパッケージをインストールして管理する方法に関するページを参照してください。For more information on using NuGet, see Install and manage packages in Visual Studio.

Twilio アダプター クラスを作成するCreate a Twilio adapter class

*Twを 継承するクラスを作成します。Create a new class that inherits from the *TwilioAdapter _ class. このクラスは、Twilio チャネルのアダプターとして機能し、エラー処理機能を含みます (この例では、既に BotFrameworkAdapterWithErrorHandler クラスに似ていますが、Azure Bot Service からの他の要求を処理するために使用されています)。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");
            };
        }
}

Twilio の要求を処理するための新しいコントローラーを作成するCreate a new controller for handling Twilio requests

Azure Bot Service チャネルからの要求に使用される既定の "api/messages" ではなく、新しいエンドポイント "api/twilio" に、Twilio からの要求を処理する新しいコントローラーを作成します。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. 自分のボットに新しくエンドポイントを追加することによって、Bot Service チャネルからの要求だけでなく、Twilio からの要求も、同じボットを使用して受け入れることができます。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);
    }
}

ボットの startup.cs に Twilio アダプターを挿入するInject the Twilio adapter in your bot startup.cs

Startup.cs ファイル内の ConfigureServices メソッドに次の行を追加します。Add the following line to the ConfigureServices method within your startup.cs file. これによって Twilio アダプターが登録され、新しいコントローラー クラスで利用できるようになります。This will register your Twilio adapter and make it available for your new controller class. 前の手順で追加した構成設定が、アダプターによって自動的に使用されます。The configuration settings you added in the previous step will be automatically used by the adapter.

services.AddSingleton<TwilioAdapter, TwilioAdapterWithErrorHandler>();

追加されると、 ConfigureServices メソッドは次のようになります。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>();
}

ボットの URL を取得するObtain a URL for your bot

自分のボット プロジェクトにアダプターを接続したら、自分のボットが確実にメッセージを受信できるよう、Twilio に提供する適切なエンドポイントを指定する必要があります。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. また、自分のボット アプリケーションの構成を完了するためにも、この URL が必要です。You also require this URL to complete configuration of your bot application.

この手順を実行するために、ボットを Azure にデプロイし、そのデプロイしたボットの URL を書き留めてください。To complete this step, deploy your bot to Azure and make a note of the URL of your deployed bot.

注意

Bot を Azure にデプロイする準備ができていない場合、または Twilio アダプターを使用する場合に bot をデバッグする準備ができていない場合は、 ngrok などのツールを使用できます (以前に Bot Framework Emulator を使用していた場合は、既にインストールされている可能性があります)。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.

ngrok トンネルを作成して自分のボットへの URL を取得したい場合は、ターミナル ウィンドウで次のコマンドを使用します (これは、ローカル ボットがポート 3978 で実行されていることを想定しています。それとは異なるポートでボットが実行されている場合は、コマンド内のポート番号を変更してください)。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"

ボットの構成ファイルに Twilio アプリの設定を追加するAdd Twilio app settings to your bot's configuration file

次に示す設定を自分のボット プロジェクトの appSettings.json ファイルに追加します。Add the settings shown below to your appSettings.json file in your bot project. Twilio 番号を作成するときに収集した値を使用して、_ * TwilioNumber * *、TwilioAccountSid、および Tw Oauthtoken を設定します。 You populate _*TwilioNumber**, TwilioAccountSid and TwilioAuthToken using the values you gathered when creating your Twilio number. TwilioValidationUrl には、自分のボットの URL と、新しく作成したコントローラーで指定した api/twilio エンドポイントを入力する必要があります。TwilioValidationUrl should be your bot's URL, plus the api/twilio endpoint you specified in your newly created controller. たとえば、「 https://yourboturl.com/api/twilio 」のように入力します。For example, https://yourboturl.com/api/twilio.

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

上記の設定が済んだら、自分のボットを再デプロイ (ngrok を使用してローカルで実行している場合は再起動) する必要があります。Once you have populated the settings above, you should redeploy (or restart if running locally with ngrok) your bot.

Twilio 番号の構成を完了するComplete configuration of your Twilio number

最後の手順では、自分のボットがメッセージを確実に受信できるように、新しい Twilio 番号のメッセージング エンドポイントを構成します。The final step is to configure your new Twilio number's messaging endpoint, to ensure your bot receives messages.

  1. Twilio の [Active Numbers](アクティブ番号) ページに移動します。Navigate to the Twilio Active Numbers page.

  2. 前の手順で作成した電話番号をクリックします。Click the phone number you created in the earlier step.

  3. [Messaging](メッセージング) セクションの [A MESSAGE COMES IN](受信されるメッセージの形式) セクションに必要事項を入力します。ドロップダウンから [Webhook] を選択し、前の手順で TwilioValidationUrl を設定する際に使用したボットのエンドポイントをテキスト ボックスに入力してください (例: 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.

Twilio 番号の Webhook を構成する

  1. [保存] ボタンをクリックします。Click the Save button.

Twilio のアダプターを使用してボットをテストするTest your bot with adapter in Twilio

SMS メッセージを自分の Twilio 番号に送信して、自分のボットが Twilio に正しく接続されているかどうかをテストしてみましょう。You can now test whether your bot is connected to Twilio correctly by sending an SMS message to your Twilio number. ボットはメッセージを受信すると、そのメッセージのテキストをエコーする形でメッセージを返します。Once the message is received by your bot it will send a message back to you, echoing the text from your message.

この機能のテストには、Twilio アダプターのサンプル ボットを使用することもできます。上記の手順で説明したのと同じ値を appSettings.json に設定してください。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.