es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo utilizar los eventos de Bolt con las manifestaciones más recientes de la API de Slack?

Estoy construyendo una aplicación de Slack utilizando Bolt y he logrado que los conceptos básicos funcionen usando el Modo de Socket. Los documentos dicen que las aplicaciones de Modo de Socket no están permitidas en el directorio público, donde quiero que mi aplicación esté cuando esté lista. Ahora he desactivado el Modo de Socket y he logrado que ngrok funcione como se describe aquí. Slack pudo validar la URL de todos modos.

Pero lo que no funciona es un comando de barra. El editor del manifiesto dice que se requiere la URL para un comando de barra, pero ¿cómo se hace eso con Bolt? ¿Hay mejores documentos para el modo sin socket en algún lugar? Parece que cada ejemplo de uso de Bolt dice “usemos el modo de socket, es fácil”.

Porción del manifiesto:

slash_commands:
  - command: /sb
   url: https://[mi url].ngrok.io/slack/command

Código de ejemplo:

const { App } = require('@slack/bolt');
const express = require('express');

const app = express();

const boltApp = new App({
    signingSecret: config.slackApp.signingSecret,
    token: config.slackApp.token,
    endpoints = '/'
});

app.use('/slack/events', boltApp.receiver.router);

Bolt

Manifestos de Aplicaciones de Slack

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema es que el comando de barra inclinada no funciona después de desactivar el modo de socket y usar ngrok. El editor de manifiestos requiere una URL para un comando de barra inclinada, pero no está claro cómo se relaciona eso con Bolt. Si bien muchos ejemplos de uso de Bolt recomiendan el uso del modo de socket, no es la única opción.

    Para usar un comando de barra inclinada con Bolt sin el modo de socket, puedes agregar un nuevo punto de conexión a tu aplicación Express que maneje el comando de barra inclinada. Por ejemplo:

    app.post('/slack/command', async (req, res) => {
      try {
        const result = await boltApp.process(req.body);
        res.json(result);
      } catch (error) {
        console.log(error);
        res.status(500).send(error.message);
      }
    });
    

    En el código anterior, definimos un nuevo punto de conexión para el comando de barra inclinada en /slack/command y usamos boltApp.process para manejar la solicitud entrante. Luego, el resultado se envía de vuelta como una respuesta JSON.

    También puedes actualizar tu archivo de manifiesto para incluir el nuevo punto de conexión:

    slash_commands:
      - command: /sb
        url: https://[mi url].ngrok.io/slack/command
    

    Ten en cuenta que deberás usar la URL de ngrok que generaste al iniciar ngrok y actualizarla cada vez que reinicies ngrok.

    Estos recursos pueden ser útiles para obtener más orientación sobre el uso de Bolt sin el modo de socket:

Comments are closed.