Conectar un bot con Direct LineConnect a bot to Direct Line

En este artículo se describe cómo conectar un bot al canal Direct Line .This article describes how to connect a bot to the Direct Line channel. Use este canal para permitir que la aplicación cliente se comunique con un bot.Use this channel to allow your client application to communicate with a bot.

Nota

El Direct Line es un canal estándar a través del protocolo HTTPS para permitir la comunicación entre una aplicación cliente y un bot.The Direct Line is a standard channel over HTTPS protocol to allow communication between a client application and a bot. Si en su lugar necesita aislamiento de red, use la extensión Direct Line App Service a través del protocolo WebSocket.If you require network isolation instead, use the Direct Line App Service Extension over WebSocket protocol.

Agregar el canal de Direct LineAdd the Direct Line channel

Lo primero que debe hacer es agregar el canal Direct Line al bot.The first thing you must do is to add the Direct Line channel to the bot.

  1. En el explorador, vaya a Azure Portal.In your browser, navigate to the Azure Portal.

  2. En el panel izquierdo, haga clic en el elemento Canales.In the left panel, click the Channels item.

  3. En el panel derecho, en Agregar un canal destacado, haga clic en el icono Direct Line (marcado en rojo en la imagen siguiente). In the right panel, under Add a featured channel, click the Direct Line icon (marked in red in the picture below).

    Agregar el canal de Direct LineAdd Direct Line channel

  4. Se muestra la Direct Line configuración.The Configure Direct Line page is displayed. Haga clic en el botón Listo en la parte inferior de la página.Click the Done button at the bottom of the page. Esto agrega el canal Direct Line al bot, como se muestra en la imagen siguiente.This adds the Direct Line channel to the bot, as shown in the picture below.

    Se ha agregado Direct Line canalAdded Direct Line channel

Agregar un nuevo sitioAdd new site

  1. En Conectar a canales, haga clic en el vínculo Editar del Direct Line.In Connect to channels, click the Edit link by the Direct Line.

  2. En Configurar Direct Line, haga clic en Agregar nuevo sitio y escriba un nombre para el sitio.In Configure Direct Line, click Add new site and enter a name for your site. Representa la aplicación cliente que desea conectar al bot.This represents the client application that you want to connect to the bot.

    Agregar un sitio de Direct Line

  3. Haga clic en Done(Listo).Click Done.

Administrar claves secretasManage secret keys

Al agregar el canal directo, el Bot Framework genera claves secretas.When you add the Direct Channel, the Bot Framework generates secret keys. La aplicación cliente usa estas claves para autenticar las Direct Line API que emite para comunicarse con un bot.Your client application uses these keys to authenticate the Direct Line API requests that it issues to communicate with a bot. Para más información, consulte Autenticación.For more information, see Authentication.

  1. En Configurar Direct Line, para ver una clave en texto sin formato, haga clic en Mostrar para la clave correspondiente.In Configure Direct Line, to view a key in plain text, click Show for the corresponding key.

    Mostrar la clave de Direct LineShow Direct Line key

  2. Copie y almacene la clave de forma segura.Copy and securely store the key. Use la clave para autenticar las Direct Line API que la aplicación cliente emite para comunicarse con un bot.Use the key to authenticate the Direct Line API requests that your client application issues to communicate with a bot.

    Copiar la clave de Direct LineCopy Direct Line key

    Nota

    Los secretos no deben exponerse ni incrustarse en las aplicaciones cliente.Secrets should not be exposed or embedded in client applications. Consulte el paso siguiente.See next step.

  3. El procedimiento recomendado es usar el Direct Line API para intercambiar la clave por un token.The best practice is to use the Direct Line API to exchange the key for a token. A continuación, la aplicación cliente usará el token para autenticar sus solicitudes dentro del ámbito de una sola conversación.The client application then will use the token to authenticate its requests within the scope of a single conversation.

Definición de configuraciónConfigure settings

  1. Seleccione la Direct Line de protocolo que usará la aplicación cliente para comunicarse con un bot.Select the Direct Line protocol version that your client application will use to communicate with a bot.

    Sugerencia

    Si va a crear una conexión entre la aplicación cliente y un bot, use Direct Line API 3.0.If you are creating a new connection between your client application and bot, use Direct Line API 3.0.

  2. Cuando termine, haga clic en Listo para guardar la configuración del sitio.When finished, click Done to save the site configuration. Puede repetir este proceso desde el paso Agregar un nuevo sitio para cada aplicación cliente que quiera conectar al bot.You can repeat this process, beginning with Add new site, for each client application that you want to connect to your bot.

Configuración de la autenticación mejoradaConfigure enhanced authentication

Al habilitar la autenticación mejorada, se le pide que seleccione una lista de direcciones URL de origen de confianza, también conocidas como orígenes de confianza o dominios de confianza, para la generación del token de autenticación.When you enable enhanced authentication, you are asked to select a list of trusted origin URLs, also known as trusted origins or trusted domains, for the generation of the authentication token. Si habilita la autenticación mejorada, debe especificar al menos un origen de confianza.If you enable the enhanced authentication, you must specify at least one trusted origin.

Adición de orígenes de confianzaAdd trusted origins

Un dominio de confianza es un dominio en el que el sistema confía para autenticar a los usuarios.A trusted domain is a domain that the system trusts to authenticate users. En nuestro caso, es un dominio en el Direct Line puede confiar en la generación de un token.In our case, is a domain that Direct Line can trust for the generation of a token.

  • Si configura orígenes de confianza como parte de la página de la interfaz de usuario de configuración, siempre se usarán como el único conjunto para la generación de un token.If you configure trusted origins as part of the configuration UI page, then these will always be used as the only set for the generation of a token. Al enviar ninguno o orígenes de confianza adicionales al generar un token o iniciar una conversación, se omitirán (es decir, no se anexan a la lista ni se validan cruzadamente).Sending none or additional trusted origins when generating a token or starting a conversation, they will be ignored (i.e. they are not appended to the list or cross validated).

  • Si no ha habilitado la autenticación mejorada, se usará cualquier dirección URL de origen que envíe como parte de las llamadas API.If you did not enable enhanced authentication, any origin URL you send as part of the API calls will be used.

La autenticación mejorada permite mitigar los riesgos de seguridad al conectarse a un bot (por ejemplo, mediante Chat en web control).Enhanced authentication allows you to mitigate security risks when connecting to a bot (using the Web Chat control, for example). Para obtener más información, vea Direct Line autenticación mejorada.For more information, see Direct Line enhanced authentication.

EjemploExample

Puede descargar un ejemplo de .NET desde esta ubicación: Direct Line ejemplo de bot.You can download a .NET example from this location: Direct Line Bot Sample.

El ejemplo contiene dos proyectos:The example contains two projects:

  • DirectLineBot.DirectLineBot. Crea un bot para conectarse a través de Direct Line canal.It creates a bot to connect via a Direct Line channel.
  • DirectLineClient.DirectLineClient. Se trata de una aplicación de consola que se pone en contacto con el bot anterior a través Direct Line canal.This is a console application that talks to the previous bot via Direct Line channel.

Direct Line APIDirect Line API

  • Las credenciales del Direct Line API deben obtenerse del registro del bot de Azure y solo permitirán al autor de la llamada conectarse al bot para el que se generaron.Credentials for the Direct Line API must be obtained from the Azure Bot registration, and will only allow the caller to connect to the bot for which they were generated. En el proyecto de bot, actualice el appsettings.json archivo con estos valores.In the bot project, update the appsettings.json file with these values.

    {
    "MicrosoftAppId": "",
    "MicrosoftAppPassword": ""
    }
    
  • En la Azure Portal, habilite Direct Line en la lista de canales y, a continuación, configure el Direct Line secreto.In the Azure portal, enable Direct Line in the channels list and then, configure the Direct Line secret. Asegúrese de que la casilla de la versión 3.0 está activada.Make sure that the checkbox for version 3.0 is checked. En el proyecto de cliente de consola, actualice el archivo con Direct Line App.config clave secreta y el identificador del bot (identificador de bot).In the console client project update the App.config file with the Direct Line secret key and the bot handle (Bot Id).

    <appSettings>
        <add key="DirectLineSecret" value="YourBotDirectLineSecret" />
        <add key="BotId" value="YourBotHandle" />
    </appSettings>
    

Los mensajes de usuario se envían al bot mediante el Direct Line Conversations.PostActivityAsync Client mediante el generado ConversationId anteriormente.User messages are sent to the bot using the Direct Line Client Conversations.PostActivityAsync method using the ConversationId generated previously.

while (true)
{
    string input = Console.ReadLine().Trim();

    if (input.ToLower() == "exit")
    {
        break;
    }
    else
    {
        if (input.Length > 0)
        {
            Activity userMessage = new Activity
            {
                From = new ChannelAccount(fromUser),
                Text = input,
                Type = ActivityTypes.Message
            };

            await client.Conversations.PostActivityAsync(conversation.ConversationId, userMessage);
        }
    }
}