WeChat에 봇 연결Connect a bot to WeChat

적용 대상: SDK v4APPLIES TO: SDK v4

WeChat 공식 계정 플랫폼을 사용하여 사용자와 통신하도록 봇을 구성할 수 있습니다.You can configure your bot to communicate with people using the WeChat Official Accounts Platform.

Bot Framework용 WeChat 어댑터 다운로드Download WeChat Adapter for Bot Framework

Microsoft Bot Framework용 WeChat 어댑터는 GitHub의 오픈 소스 어댑터입니다.WeChat adapter for Microsoft Bot Framework is an open source adapter on GitHub. Bot Framework용 WeChat 어댑터를 다운로드하세요.Download WeChat Adapter for Bot Framework.

WeChat 계정 만들기Create a WeChat Account

WeChat을 사용하여 통신하도록 봇을 구성하려면 WeChat 공식 계정을 WeChat 공식 계정 플랫폼에 만든 다음, 봇을 앱에 연결해야 합니다.To configure a bot to communicate using WeChat, you need to create a WeChat official account on WeChat Official Account Platform and then connect the bot to the app. 현재 서비스 계정만 지원합니다.Currently we only support Service Account.

기본 설정 언어 변경Change Your Prefer Language

로그인하기 전에 원하는 표시 언어를 변경할 수 있습니다.You can change the display language you prefer before login.

change_language

서비스 계정 등록Register A Service Account

WeChat에서 실제 서비스 계정을 확인 해야 합니다. 계정이 확인 되기 전에 webhook을 사용 하도록 설정할 수 없습니다.A real service account must be verified by WeChat, you can't enable webhook before account is verified. 사용자 고유의 서비스 계정을 만들려면 여기의 지침을 따르세요.To create your own service account, please follow the instruction Here. 요약하면, 위쪽에서 [Register Now](지금 등록)를 클릭하고, [Service Account](서비스 계정)를 선택하고, 지침을 따릅니다.For short, just click the Register Now on the top, select the Service Account and follow the instruction.

register_account

샌드박스 계정Sandbox Account

WeChat 및 봇 통합만 테스트하려는 경우 서비스 계정을 만드는 대신 샌드박스 계정을 사용할 수 있습니다.If you just want to test the WeChat and bot integration, you can use a sandbox account instead of creating the service account. 샌드박스 계정을 만드는 방법에 대해 자세히 알아보세요.Learn more about creating a sandbox account.

WeChat 어댑터를 봇에 사용하도록 설정Enable WeChat Adapter To Bot

봇 프로젝트는 일반 Bot Framework SDK V4 프로젝트입니다.The Bot Project is a regular Bot Framework SDK V4 project. 시작하기 전에 봇을 실행할 수 있는지 확인해야 합니다.Before you can launch it, you need to make sure you can run the bot. Bot Framework용 WeChat 어댑터를 다운로드합니다.Download WeChat Adapter for Bot Framework.

사전 요구 사항Prerequisites

  • .NET Core SDK (버전 2.2. x).NET Core SDK (version 2.2.x)

WeChat 어댑터 원본에 대한 참조 추가Add Reference To WeChat Adapter Source

WeChat 어댑터 프로젝트를 직접 참조하거나 ~/BotFramework-WeChat/libraries/csharp_dotnetcore/outputpackages를 로컬 NuGet 원본으로 추가하세요.Please directly reference the WeChat adapter project or add ~/BotFramework-WeChat/libraries/csharp_dotnetcore/outputpackages as local NuGet source.

봇 Startup.cs에 WeChat 어댑터 삽입Inject WeChat Adapter In Your Bot Startup.cs

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

    // Create the storage we'll be using for User and Conversation state. (Memory is great for testing purposes.)
    services.AddSingleton<IStorage, MemoryStorage>();

    // Create the User state. (Used in this bot's Dialog implementation.)
    services.AddSingleton<UserState>();

    // Create the Conversation state. (Used by the Dialog system itself.)
    services.AddSingleton<ConversationState>();

    // Load WeChat settings.
    var wechatSettings = new WeChatSettings();
    Configuration.Bind("WeChatSettings", wechatSettings);
    services.AddSingleton<WeChatSettings>(wechatSettings);

    // Configure hosted serivce.
    services.AddSingleton<IBackgroundTaskQueue, BackgroundTaskQueue>();
    services.AddHostedService<QueuedHostedService>();
    services.AddSingleton<WeChatHttpAdapter>();

    // The Dialog that will be run by the bot.
    services.AddSingleton<MainDialog>();

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

봇 컨트롤러 업데이트Update Your Bot Controller

[Route("api/messages")]
[ApiController]
public class BotController : ControllerBase
{  
    private readonly IBot _bot;
    private readonly WeChatHttpAdapter _weChatHttpAdapter;
    private readonly string Token;
    public BotController(IBot bot, WeChatHttpAdapter weChatAdapter)
    {
        _bot = bot;
        _weChatHttpAdapter = weChatAdapter;
    }

    [HttpPost("/WeChat")]
    [HttpGet("/WeChat")]
    public async Task PostWeChatAsync([FromQuery] SecretInfo secretInfo)
    {
        // Delegate the processing of the HTTP POST to the adapter.
        // The adapter will invoke the bot.
        await _weChatHttpAdapter.ProcessAsync(Request, Response, _bot, secretInfo);
    }
}

appsettings.json 설정Setup appsettings.json

봇을 시작하기 전에 appsettings.json을 설정해야 합니다. 아래에서 필요한 항목을 찾을 수 있습니다.You will need to set up appsettings.json before start up the bot, you can find what you need below.

"WeChatSettings": {
    "UploadTemporaryMedia": true,
    "PassiveResponseMode": false,
    "Token": "",
    "EncodingAESKey": "",
    "AppId": "",
    "AppSecret": ""
}

서비스 계정Service Account

서비스 계정이 이미 있고 배포할 준비가 되면 아래와 같이 왼쪽 탐색 막대의 기본 구성에서 AppID, AppSecret, EncodingAESKeyToken 을 찾을 수 있습니다.If you already have a service account and ready to deploy, then you can find AppID , AppSecret , EncodingAESKey and Token in the basic configurations on the left nav bar, like below.

IP 허용 목록을 설정 하지 않아도 됩니다. 그렇지 않으면 WeChat 요청을 수락 하지 않습니다.Don't forgot you need to set up the IP allow-list, otherwise WeChat won't accept your request.

serviceaccount_console

샌드박스 계정Sandbox Account

샌드 박스 계정에는 EncodingAESKey 가 없습니다. WeChat의 메시지는 암호화되지 않았으며, EncodingAESKey는 비워 둡니다.Sandbox account don't have EncodingAESKey , message from WeChat was not encrypted just leave EncodingAESKey blank. 여기에는 세 개의 매개 변수(appID, appsecretToken)만 있습니다.You only have three parameters here, appID , appsecret and Token.

sandbox_account

봇 시작 및 엔드포인트 URL 설정Start Bot And Set Endpoint URL

이제 봇 백 엔드를 설정할 수 있습니다.Now you can set your bot backend. 이 작업을 수행하려면 먼저 설정을 저장하기 전에 봇을 시작해야 합니다. 그러면 WeChat에서 URL을 확인하기 위한 요청을 보냅니다.Before you are doing this, you have to start the bot before you save the settings, WeChat will send you a request to verify the URL. 엔드포인트를 https://your_end_point/WeChat 패턴으로 설정하거나, BotController.cs에서 수행한 것과 동일한 방식으로 개인 설정을 지정하세요.Please set the endpoint in such pattern: https://your_end_point/WeChat, or set your personal settings the same with what you have done in BotController.cs

sandbox_account2

공식 계정 구독Subscribe Your Official Account

WeChat에서와 같이 테스트 계정을 구독할 수 있는 QR 코드를 찾을 수 있습니다.You can find a QR code to subscribe your test account as in WeChat.

subscribe

WeChat을 통해 테스트Test Through WeChat

모든 작업이 완료되었으므로 이제 WeChat 클라이언트에서 사용해 볼 수 있습니다.Everything is done, you can try it in your WeChat client. 테스트 폴더 아래에서 샘플 봇을 사용해 볼 수 있습니다.You can try our sample bot under tests folder. 이 샘플 봇은 WeChat 어댑터를 포함하고, 에코 봇 및 카드 봇과 통합되어 있습니다.This sample bot includes wechat adapter and integrated with echo bot and Cards bot.

채팅