Conexión de un bot a SlackConnect a bot to Slack

se aplica a: SDK V4APPLIES TO: SDK v4

En este artículo se muestra cómo agregar un canal de Slack a un bot.This article shows how to add a Slack channel to a bot. Seleccione una de las siguientes maneras de configurar la aplicación de Slack:Select one of the following ways to configure the Slack app:

Creación de una aplicación de Slack mediante el Azure PortalCreate a Slack application using the Azure portal

  1. En el explorador, inicie sesión en Slack.In your browser, sign in Slack.

  2. Vaya al panel Aplicaciones.Navigate to Your Apps panel.

    Configurar el bot

  3. Haga clic en Crear nueva aplicación.Click Create New App.

  4. En el cuadro Nombre de la aplicación, escriba el nombre de la aplicación de Slack.In the App Name box, enter the name of your Slack application.

  5. En el cuadro Equipo de Slack de desarrollo, escriba el nombre del equipo de desarrollo.In the Development Slack Team box, enter the name of your development team. Si aún no es miembro de un equipo de desarrollo de Slack, cree uno o únase a uno.If you are not already a member of a Development Slack Team, create or join one.

    Creación de una aplicación

  6. Haga clic en Create app (Crear aplicación).Click Create App.

Agregar una nueva dirección URL de redireccionamientoAdd a new redirect URL

  1. En el panel izquierdo, seleccione el elemento de menú Permisos & OAuth.In the left panel, select the OAuth & Permissions menu item.

  2. En el panel derecho, haga clic en Agregar una nueva dirección URL de redireccionamiento.In the right panel, click Add a new Redirect URL.

  3. En el cuadro, escriba https://slack.botframework.com/ .In the box, enter https://slack.botframework.com/.

  4. Haga clic en Agregar.Click Add.

  5. Haga clic en Save URLs (Guardar direcciones URL).Click Save URLs.

    Agregar dirección URL de redireccionamiento

Suscribirse a eventos de botSubscribe to Bot Events

Siga estos pasos para suscribirse a seis eventos determinados de bot.Follow these steps to subscribe to six particular bot events. Si se suscribe a eventos de bot, se notificará a la aplicación acerca de las actividades de los usuarios en la dirección URL que especifique.By subscribing to bot events, your app will be notified of user activities at the URL you specify.

Sugerencia

El identificador de bot es el nombre del bot.Your bot handle is the name of your bot. Para buscar el identificador de un bot, visite https://dev.botframework.com/bots , elija un bot y registre el nombre del bot.To find a bot's handle, visit https://dev.botframework.com/bots, choose a bot, and record the name of the bot.

  1. En el panel izquierdo, seleccione el elemento Suscripciones de eventos.In the left panel, select the Event Subscriptions item.

  2. En el panel derecho, establezca Habilitar eventos en En.In the right panel, set Enable Events to On.

  3. En URL de solicitud, escriba https://slack.botframework.com/api/Events/{YourBotHandle}, donde {YourBotHandle} es el identificador del bot, sin las llaves.In Request URL, enter https://slack.botframework.com/api/Events/{YourBotHandle}, where {YourBotHandle} is your bot handle, without the braces.

    suscribir eventos

  4. En Subscribe to Bot Events (suscribirse a eventos de Bot), haga clic en Add Bot User Event (Agregar evento de usuario de bot).In Subscribe to Bot Events, click Add Bot User Event.

  5. En la lista de eventos, seleccione estos seis tipos de evento:In the list of events, select these six event types:

    • member_joined_channel
    • member_left_channel
    • message.channels
    • message.groups
    • message.im
    • message.mpim

    lista de eventos suscritos

  6. En la parte inferior de la pantalla, haga clic en Guardar cambios.At the bottom of the screen, click Save Changes.

A medida que agrega eventos en Slack, se enumeran los ámbitos que necesita solicitar.As you add events in Slack, it lists the scopes you need to request. Los ámbitos que necesite dependerán de los eventos a los que se suscriba y de cómo piensa responder a ellos.The scopes you need will depend on the events you subscribe to and how you intend to respond to them. Para ver los ámbitos compatibles con Slack, consulte Ámbitos y permisos.For Slack supported scopes, refer to Scopes and permissions. Consulte también Descripción de los ámbitos de OAuth para bots.See also Understanding OAuth scopes for Bots.

Nota

A partir de junio de 2020, el canal de Slack admite ámbitos de permisos de Slack V2 que permiten al bot especificar sus funcionalidades y permisos de una manera más pormenorización.As of June 2020 Slack channel supports Slack V2 permission scopes which allow the bot to specify its capabilities and permissions in a more granular way. Todos los canales de Slack recién configurados usarán los ámbitos V2.All newly configured Slack channels will use the V2 scopes. Para cambiar el bot a los ámbitos V2, elimine y vuelva a crear la configuración del canal de Slack en la Azure Portal canales.To switch your bot to the V2 scopes, delete and recreate the Slack channel configuration in the Azure portal Channels blade.

Adición y configuración de mensajes interactivos (opcional)Add and Configure Interactive Messages (optional)

Si el bot usará funcionalidades específicas de Slack, como botones, siga estos pasos:If your bot will use Slack-specific functionality such as buttons, follow these steps:

  1. Seleccione la pestaña Interactivity & Shortcuts (Interactividad) y habilite Interactivity (Interactividad).Select the Interactivity & Shortcuts tab and enable Interactivity.

  2. Escriba https://slack.botframework.com/api/Actions como Dirección URL de la solicitud.Enter https://slack.botframework.com/api/Actions as the Request URL.

  3. Haga clic en el botón Save changes (Guardar cambios).Click the Save changes button.

    Habilitar mensajes

Adición del canal de Slack al botAdd the Slack channel to the bot

  1. En el panel izquierdo, seleccione el elemento Información básica.In the left panel, select the Basic Information item.

  2. En el panel derecho, desplácese hasta la sección Credenciales de la aplicación.In the right panel, scroll to the App Credentials section. Se muestran los identificadores de cliente, secreto de cliente y secreto de firma necesarios para configurar el canal del bot de Slack. The Client ID, Client Secret, and Signing Secret required for configuring your Slack bot channel are displayed. Copie y almacene estas credenciales en un lugar seguro.Copy and store these credentials in safe place.

    Obtener las credenciales

  3. Abra el bot en el Azure Portal.Open your bot in the Azure portal.

  4. En el panel izquierdo, seleccione Canales,In the left panel, select Channels,

  5. En el panel derecho, seleccione el icono de Slack.In the right panel, select the Slack icon.

  6. Pegue las credenciales de aplicación de Slack que guardó en los pasos anteriores en los campos adecuados.Paste the Slack app credentials you saved in the previous steps into the appropriate fields.

  7. La Landing Page URL (Dirección URL de la página de aterrizaje) es opcional.The Landing Page URL is optional. Puede omitirla o cambiarla.You may omit or change it.

    Enviar las credenciales

  8. Haga clic en Save(Guardar).Click Save. Siga las instrucciones para autorizar el acceso de la aplicación Slack a su equipo de desarrollo de Slack.Follow the instructions to authorize your Slack app's access to your Development Slack Team.

  9. En la página Configurar Slack, confirme que el control deslizante del botón Guardar está establecido en Habilitado.On the Configure Slack page, confirm that the slider by the Save button is set to Enabled. El bot ahora está configurado para comunicarse con los usuarios de Slack.Your bot is now configured to communicate with the users in Slack.

Creación de un botón Agregar a SlackCreate an Add to Slack button

Slack proporciona el código HTML que se puede usar para ayudar a los usuarios de Slack a encontrar su bot en la sección Add the Slack button (Agregar el botón de Slack) de esta página.Slack provides HTML you can use to help Slack users find your bot in the Add the Slack button section of this page. Para usar este código HTML con el bot, reemplace el valor de href (comienza con https://) por la dirección URL que se encuentra en configuración del canal de Slack del bot.To use this HTML with your bot, replace the href value (begins with https://) with the URL found in your bot's Slack channel settings. Siga estos pasos para obtener la dirección URL de reemplazo.Follow these steps to get the replacement URL.

  1. En https://dev.botframework.com/bots , haga clic en el bot.On https://dev.botframework.com/bots, click your bot.
  2. Haga clic en Channels (Canales), haga clic con el botón derecho en la entrada denominada Slack y haga clic en Copy link (Copiar vínculo).Click Channels, right-click the entry named Slack, and click Copy link. Esta dirección URL ahora está en el Portapapeles.This URL is now in your clipboard.
  3. Pegue esta dirección URL desde el Portapapeles en el código HTML proporcionado para el botón de Slack.Paste this URL from your clipboard into the HTML provided for the Slack button. Esta dirección URL reemplaza el valor de href proporcionado por Slack para este bot.This URL replaces the href value provided by Slack for this bot.

Los usuarios autorizados pueden hacer clic en el botón Agregar a Slack proporcionado por este código HTML modificado para comunicarse con el bot en Slack.Authorized users can click the Add to Slack button provided by this modified HTML to reach your bot on Slack.

Nota

El vínculo que ha pegado en el valor href del código HTML contiene ámbitos que se pueden refinar según sea necesario.The link you pasted into the href value of the HTML contains scopes that can be refined as needed. Consulte Ámbitos y permisos para obtener la lista completa de ámbitos disponibles.See Scopes and permissions for the full list of available scopes.

Creación de una aplicación de Slack mediante el adaptador de SlackCreate a Slack application using the Slack adapter

Además del canal disponible en Azure Bot Service para conectar el bot a Slack, también puede usar el adaptador de Slack.As well as the channel available in the Azure Bot Service to connect your bot with Slack, you can also use the Slack adapter. En este artículo, aprenderá a conectar un bot a Slack mediante el adaptador.In this article you will learn how to connect a bot to Slack using the adapter. Este artículo le guiará en la modificación del ejemplo de bot de eco para conectarlo a una aplicación de Slack.This article will walk you through modifying the EchoBot sample to connect it to a Slack app.

Nota

Las instrucciones siguientes tratan sobre la implementación en C# del adaptador de Slack.The instructions below cover the C# implementation of the Slack adapter. Para obtener instrucciones sobre el uso del adaptador de JS, parte de las bibliotecas de BotKit, consulte la documentación de Slack sobre BotKit.For instructions on using the JS adapter, part of the BotKit libraries, see the BotKit Slack documentation.

PrerrequisitosPrerequisites

Creación de una aplicación y asignación de un equipo de desarrollo de SlackCreate an app and assign a development Slack team

Inicie sesión en Slack y vaya al canal de creación de una aplicación de Slack.Log into Slack and then go to create a Slack application channel.

Configuración del adaptador de bot

Haga clic en el botón "Create new app" (Crear nueva aplicación).Click the 'Create new app' button. Escriba un valor para App Name (Nombre de la aplicación) y seleccione un Área de trabajo de desarrollo de Slack.Enter an App Name and select a Development Slack Workspace. Si aún no es miembro de un equipo de desarrollo de Slack, cree uno o únase a uno.If you are not already a member of a development Slack team, create or join one.

Creación de una aplicación

Haga clic en Create app (Crear aplicación).Click Create App. Slack creará la aplicación y generará un identificador de cliente y un secreto de cliente.Slack will create your app and generate a client ID and client secret.

Recopile los valores de configuración necesarios para el bot.Gather required configuration settings for your bot

Una vez creada la aplicación, recopile la información siguiente.Once your app is created, collect the following information. La necesitará para conectar el bot a Slack.You will need this to connect your bot to Slack.

  1. Anote los valores de Verification Token (Token de comprobación) y Signing Secret (Secreto de firma) de la pestaña Basic Information (Información básica) y guárdelos para configurar más adelante las opciones del bot.Note the Verification Token and the Signing Secret from the Basic Information tab and keep them for later to configure your bot settings.

Tokens de Slack

  1. Vaya a la página Install App (Instalar aplicación) en el menú Settings (Configuración) y siga las instrucciones para instalar la aplicación en un equipo de Slack.Navigate to the Install App page under the Settings menu and follow the instructions to install your app into a Slack team. Una vez instalado, copie el valor de Bot User OAuth Access Token (Token de acceso de OAuth del usuario del bot) y, de nuevo, guárdelo para configurar más adelante las opciones del bot.Once installed, copy the Bot User OAuth Access Token and, again, keep this for later to configure your bot settings.

Conexión del adaptador de Slack en el botWiring up the Slack adapter in your bot

Instalación del paquete de NuGet del adaptador de SlackInstall the Slack adapter NuGet package

Agregue el paquete de NuGet Microsoft.Bot.Builder.Adapters.Slack.Add the Microsoft.Bot.Builder.Adapters.Slack NuGet package. Para más información sobre el uso de NuGet, consulte Instalación y administración de paquetes en Visual Studio.For more information on using NuGet, see Install and manage packages in Visual Studio

Creación de una clase del adaptador de SlackCreate a Slack adapter class

Cree una nueva clase que herede de la clase *SlackAdapter _.Create a new class that inherits from the *SlackAdapter _ class. Esta clase actuará como nuestro adaptador para el canal de Slack e incluirá funcionalidades de control de errores (similares a la clase _ BotFrameworkAdapterWithErrorHandler* ya en el ejemplo, que se usa para controlar otras solicitudes de Azure Bot Service).This class will act as our adapter for the Slack 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 SlackAdapterWithErrorHandler : SlackAdapter
{
    public SlackAdapterWithErrorHandler(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");
        };
    }
}

Creación de un nuevo controlador para controlar las solicitudes de SlackCreate a new controller for handling Slack requests

Creamos un nuevo controlador que controlará las solicitudes de la aplicación de Slack en un nuevo punto de conexión en lugar del valor predeterminado que se usa para las solicitudes de api/slack api/messages Azure Bot Service Channels.We create a new controller which will handle requests from your slack app, on a new endpoint api/slack instead of the default api/messages used for requests from Azure Bot Service Channels. Al agregar un punto de conexión adicional al bot, puede aceptar solicitudes de canales de Bot Service, así como de Slack, con el mismo bot.By adding an additional endpoint to your bot, you can accept requests from Bot Service channels, as well as from Slack, using the same bot.

[Route("api/slack")]
[ApiController]
public class SlackController : ControllerBase
{
    private readonly SlackAdapter _adapter;
    private readonly IBot _bot;

    public SlackController(SlackAdapter 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);
    }
}

Adición de la configuración de aplicación de Slack al archivo de configuración del botAdd Slack app settings to your bot's configuration file

Agregue las 3 opciones de configuración que se muestran a continuación al archivo appSettings.json en el proyecto del bot y rellene cada una de ellas con los valores recopilados anteriormente al crear la aplicación de Slack.Add the 3 settings shown below to your appSettings.json file in your bot project, populating each one with the values gathered earlier when creating your Slack app.

  "SlackVerificationToken": "",
  "SlackBotToken": "",
  "SlackClientSigningSecret": ""

Inserción del adaptador de Slack en el archivo startup.cs del botInject the Slack adapter In your bot startup.cs

Agregue la siguiente línea al método ConfigureServices en el archivo startup.cs.Add the following line to the ConfigureServices method within your startup.cs file. Esto registrará el adaptador de Slack y lo pondrá a disposición de la nueva clase de controlador.This will register your Slack adapter and make it available for your new controller class. El adaptador usará automáticamente las opciones de configuración que agregó en el paso anterior.The configuration settings you added in the previous step will be automatically used by the adapter.

services.AddSingleton<SlackAdapter, SlackAdapterWithErrorHandler>();

Una vez agregado, el método ConfigureServices debe tener este aspecto.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 Slack Adapter
    services.AddSingleton<SlackAdapter, SlackAdapterWithErrorHandler>();

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

Configuración completa de la aplicación de SlackComplete configuration of your Slack app

Obtención de una dirección URL para el botObtain a URL for your bot

Ahora que ha creado una aplicación de Slack y ha conectado el adaptador en el proyecto del bot, el paso final es apuntar la aplicación de Slack al punto de conexión correcto en el bot y suscribir la aplicación para asegurarse de que el bot recibe mensajes.Now that you have created a Slack app and wired up the adapter in your bot project, the final step is to point the Slack app to the correct endpoint on your bot and subscribe your app to ensure your bot receives messages. Para ello, el bot debe estar en ejecución, para que Slack pueda comprobar que la dirección URL del punto de conexión es válida.To do this your bot must be running, so that Slack can verify the URL to the endpoint is valid.

Para completar este paso, debe implementar el bot en Azure y anotar la dirección URL del bot implementado.To complete this step, deploy your bot to Azure and make a note of the URL to your deployed bot.

Nota

Si no está listo para implementar el bot en Azure o desea depurar el bot al usar el adaptador de Slack, puede usar una herramienta como ngrok (que probablemente ya tenga instalada si ha usado el Bot Framework Emulator anteriormente) para realizar un túnel al bot que se ejecuta localmente y proporcionarle una dirección URL accesible públicamente para ello.If you are not ready to deploy your bot to Azure, or wish to debug your bot when using the Slack 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.

Si desea crear un túnel de ngrok y obtener una dirección URL al bot, use el siguiente comando en una ventana de terminal (se supone que el bot local se ejecuta en el puerto 3978, modifique los números de puerto en el comando si no es así).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"

Actualización de la aplicación de SlackUpdate your Slack app

Vuelva al panel de la API de Slack y seleccione la aplicación.Navigate back to the Slack API dashboard and select your app. Ahora debe configurar 2 direcciones URL para la aplicación y suscribirse a los eventos correspondientes.You now need to configure 2 URLs for your app and subscribe to the appropriate events.

  1. En la pestaña OAuth & Permissions (OAuth y permisos), el campo Redirect URL (Dirección URL de redireccionamiento) debería ser la dirección URL del bot más el punto de conexión api/slack que especificó en el controlador recién creado.In the OAuth & Permissions tab, the Redirect URL should be your bot's URL, plus the api/slack endpoint you specified in your newly created controller. Por ejemplo, https://yourboturl.com/api/slack.For example, https://yourboturl.com/api/slack.

Dirección URL de redireccionamiento de Slack

  1. En la pestaña Event Subscriptions (Suscripciones a eventos), rellene el campo Request URL (Dirección URL de la solicitud) con la misma dirección URL que usó en el paso 1.In the Event Subscriptions tab, fill in the Request URL with the same URL you used in step 1.

  2. Habilite los eventos mediante el control de alternancia en la parte superior de la página.Enable events using the toggle at the top of the page.

  3. Expanda la sección Subscribe to bot events (Suscribirse a eventos del bot) y use el botón Add Bot User Event (Agregar evento de usuario de bot) para suscribirse a los eventos im_created y message.im.Expand the Subscribe to bot events section and use the Add Bot User Event button to subscribe to the im_created and message.im events.

Suscripciones a eventos de Slack

Prueba de la aplicación en SlackTest your application in Slack

  1. Inicie sesión en el espacio de trabajo de Slack donde instaló la aplicación ( http://<your work space>-group.slack.com/ ).Log in the Slack work space where you installed your app (http://<your work space>-group.slack.com/). Verá que aparece en la sección Aplicaciones del panel izquierdo.You will see it listed under the Apps section in the left panel.

  2. En el panel izquierdo, seleccione la aplicación.In the left panel, select your app.

  3. En el panel derecho, escriba un mensaje y envíelo a la aplicación.In the right panel, write e message and send it to the application. Si ha usado un bot de eco, la aplicación vuelve a enviar el mensaje como se muestra en la ilustración siguiente.If you used an echo bot, the application echoes back the message as shown in the figure below.

    pruebas de aplicaciones

También puede probar esta característica con el bot de ejemplo para el adaptador de Slack; para ello, rellene el archivo appSettings.json con los mismos valores descritos en los pasos anteriores.You can also test this feature using the sample bot for the Slack adapter by populating the appSettings.json file with the same values described in the steps above. En este ejemplo se describen pasos adicionales en el archivo para mostrar ejemplos de uso compartido de vínculos, recepción de datos adjuntos README y envío de mensajes interactivos.This sample has additional steps described in the README file to show examples of link sharing, receiving attachments, and sending interactive messages.