Conexión de un bot a WeChatConnect a bot to WeChat

se aplica a: SDK V4APPLIES TO: SDK v4

Puede configurar el bot para comunicarse con personas mediante la Plataforma oficial de cuentas de WeChat.You can configure your bot to communicate with people using the WeChat Official Accounts Platform.

Descarga del adaptador de WeChat para Bot FrameworkDownload WeChat Adapter for Bot Framework

El adaptador de WeChat para Microsoft Bot Framework es un adaptador de código abierto de GitHub.WeChat adapter for Microsoft Bot Framework is an open source adapter on GitHub. Descarga del adaptador de WeChat para Bot FrameworkDownload WeChat Adapter for Bot Framework.

Creación de una cuenta de WeChatCreate a WeChat Account

Para configurar un bot para que se comunique mediante WeChat, debe crear una cuenta oficial de WeChat en la Plataforma oficial de cuentas de WeChat y, después, conectar el bot a la aplicación.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. Actualmente solo se admite la cuenta de servicio.Currently we only support Service Account.

Cambio del idioma preferidoChange Your Prefer Language

Puede cambiar el idioma de visualización que prefiera antes del inicio de sesión.You can change the display language you prefer before login.

Cambio de idioma

Registro de una cuenta de servicioRegister A Service Account

Una cuenta de servicio real debe comprobarse mediante WeChat, no se puede habilitar webhook antes de que se Compruebe la cuenta.A real service account must be verified by WeChat, you can't enable webhook before account is verified. Para crear su propia cuenta de servicio, siga las instrucciones descritas aquí.To create your own service account, please follow the instruction Here. Para abreviar, solo tiene que hacer clic en el botón Registrarme ahora que se encuentra en la parte superior, seleccionar la cuenta de servicio y seguir las instrucciones.For short, just click the Register Now on the top, select the Service Account and follow the instruction.

Registro de cuenta

Cuenta de espacio aisladoSandbox Account

Si solo quiere probar la integración entre WeChat y el bot, puede usar una cuenta de espacio aislado en lugar de crear la cuenta de servicio.If you just want to test the WeChat and bot integration, you can use a sandbox account instead of creating the service account. Más información sobre la creación de una cuenta de espacio aislado.Learn more about creating a sandbox account.

Habilitación del adaptador de WeChat en el botEnable WeChat Adapter To Bot

El proyecto del bot es un proyecto normal de Bot Framework SDK V4.The Bot Project is a regular Bot Framework SDK V4 project. Antes de poder iniciarlo, debe asegurarse de que puede ejecutar el bot.Before you can launch it, you need to make sure you can run the bot. Descargue el Adaptador de WeChat para Bot Framework.Download WeChat Adapter for Bot Framework.

PrerrequisitosPrerequisites

  • SDK de .NET Core (versión 2.2. x).NET Core SDK (version 2.2.x)

Adición de la referencia al origen del adaptador de WeChatAdd Reference To WeChat Adapter Source

Haga referencia directamente al proyecto del adaptador de WeChat o agregue ~/BotFramework-WeChat/libraries/csharp_dotnetcore/outputpackages como origen de NuGet local.Please directly reference the WeChat adapter project or add ~/BotFramework-WeChat/libraries/csharp_dotnetcore/outputpackages as local NuGet source.

Inserción del adaptador de WeChat en el archivo Startup.cs del botInject 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>();
}

Actualización del controlador del botUpdate 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);
    }
}

Configuración de appsettings.jsonSetup appsettings.json

Debe configurar el archivo appsettings.json antes de iniciar el bot; puede encontrar lo necesario a continuación.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": ""
}

Cuenta de servicioService Account

Si ya tiene una cuenta de servicio y está lista para su implementación, puede encontrar los elementos AppID, AppSecret, EncodingAESKey y Token en las configuraciones básicas de la barra de navegación izquierda, como se muestra a continuación.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.

No se olvidó de tener que configurar la opción de IP allow-list; de lo contrario, WeChat no aceptará la solicitud.Don't forgot you need to set up the IP allow-list, otherwise WeChat won't accept your request.

Consola de la cuenta de servicio

Cuenta de espacio aisladoSandbox Account

La cuenta de espacio aislado no tiene elemento EncodingAESKey, el mensaje de WeChat no se cifró, deje EncodingAESKey en blanco.Sandbox account don't have EncodingAESKey , message from WeChat was not encrypted just leave EncodingAESKey blank. Aquí solo tiene tres parámetros, appID, appsecret y Token.You only have three parameters here, appID , appsecret and Token.

Cuenta de espacio aislado

Inicio del bot y establecimiento de la dirección URL del punto de conexiónStart Bot And Set Endpoint URL

Ahora puede establecer el back-end del bot.Now you can set your bot backend. Antes de hacerlo, debe iniciar el bot antes de guardar la configuración; WeChat le enviará una solicitud para comprobar la dirección 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. Establezca el punto de conexión en este patrón: https://your_end_point/WeChat , o bien establezca la configuración personal tal y como ha hecho en BotController.csPlease 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

Suscripción a la cuenta oficialSubscribe Your Official Account

Puede encontrar un código QR para suscribirse a la cuenta de prueba como en WeChat.You can find a QR code to subscribe your test account as in WeChat.

subscribe

Prueba mediante WeChatTest Through WeChat

Todo esta listo, puede probarlo en el cliente de WeChat.Everything is done, you can try it in your WeChat client. Puede probar el bot de ejemplo en la carpeta de pruebas.You can try our sample bot under tests folder. Este bot de ejemplo incluye el adaptador de WeChat y se integra con el bot de eco y el bot de tarjetas.This sample bot includes wechat adapter and integrated with echo bot and Cards bot.

chat