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.

앱 만들기

속성 아래에 FRIENDLY NAME 을 입력합니다.Under Properties, enter a FRIENDLY NAME. 이 자습서에서는 "내 TwiML 앱"을 예로 사용합니다.In this tutorial we use "My TwiML app" as an example. 음성 아래의 REQUEST URL 을 비워 둘 수 있습니다.The REQUEST URL under Voice can be left empty. 메시징 아래에서 요청 URLhttps://sms.botframework.com/api/sms여야 합니다.Under Messaging, the Request URL should be https://sms.botframework.com/api/sms.

전화 번호 선택 또는 추가Select or add a phone number

Twilio 설명서 의 지침에 따라 콘솔 사이트를 통해 확인 된 호출자 ID를 추가 합니다.Follow the instruction in the Twilio documentation to add a verified caller ID via the console site. 완료되면 번호 관리활성 번호 에서 인증된 번호를 확인할 수 있습니다.After you finish, you will see your verified number in Active Numbers under Manage Numbers.

전화 번호 설정

음성 및 메시징에 사용할 애플리케이션 지정Specify application to use for Voice and Messaging

번호를 클릭하고 구성 으로 이동합니다.Click the number and go to Configure. 음성 및 메시징 아래에서 CONFIGURE WITH 를 TwiML 앱으로 설정하고 TWIML APP 을 내 TwiML 앱으로 설정합니다.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.

애플리케이션 지정

번호 관리 로 돌아가면 음성 및 메시징의 구성이 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

별도의 창에서 https://dev.botframework.com/ 의 Bot Framework 사이트로 돌아갑니다.In a separate window, return to the Bot Framework site at https://dev.botframework.com/.

  • 내 봇 을 선택하고 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.
  • 봇 관리 아래에서 채널 을 선택합니다.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. 이 문서는 EchoBot 샘플을 Twilio에 연결하도록 수정하는 과정을 안내합니다.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. BotKit 라이브러리의 일부인 JS 어댑터를 사용하는 방법에 대한 지침은 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.

Programmable Voice 시작

  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

*TwilioAdapter _ 클래스에서 상속 되는 새 클래스를 만듭니다.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 채널에서 요청 하는 데 사용 되는 기본 ' a p i/m a t e '가 아닌 새 끝점 ' a p i/Twilio '에서 Twilio의 요청을 처리할 새 컨트롤러를 만듭니다.Create a new controller which will handle requests from Twilio, on a new endpoint '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 should 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.

참고

Azure에 봇을 배포할 준비가 되지 않았거나 Twilio 어댑터를 사용할 때 봇을 디버그 하려는 경우 ngrok (이전에 Bot Framework Emulator를 사용 하 여 이미 설치 했을 수 있음)와 같은 도구를 사용 하 여 로컬에서 실행 하는 bot로 터널링 하 고이에 대해 공개적으로 액세스할 수 있는 URL을 제공할 수 있습니다.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, TwilioAccountSidTwilioAuthToken 을 채웁니다.You populate TwilioNumber, TwilioAccountSid and TwilioAuthToken using the values you gathered when creating your Twilio number. TwilioValidationUrl 은 새로 만든 컨트롤러에서 지정한 api/twilio 엔드포인트가 포함된 봇의 URL이어야 합니다.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 page(활성 번호 페이지)로 이동합니다.Navigate to the Twilio Active Numbers page.

  2. 이전 단계에서 만든 전화 번호를 클릭합니다.Click the phone number you created in the earlier step.

  3. 메시징 섹션 내에서 드롭 다운에서 Webhook 를 선택 하 고 텍스트 상자를 이전 단계의 TwilioValidationUrl 설정 (예:)을 채우는 데 사용한 봇의 끝점으로 채워서 섹션 에 제공 된 메시지 를 완료 합니다 https://yourboturl.com/api/twilio .Within the Messaging section, complete the A MESSAGE COMES IN section by choosing 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 번호 웹후크 구성

  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.

또한 appSettings.json을 위의 단계에서 설명한 것과 동일한 값으로 채워 Twilio 어댑터용 샘플 봇을 사용하여 이 기능을 테스트할 수도 있습니다.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.