Estoy tratando de implementar un flujo de trabajo de creación de tareas usando modal de holgura. El flujo de trabajo de creación de tareas a veces tarda más de 3 segundos en ejecutarse y obtener el resultado. Entonces, según la documentación , llamé await ack() para reconocer al comienzo del flujo de trabajo, pero ack() no envía la respuesta de reconocimiento al comienzo del flujo de trabajo. En su lugar, está esperando que se complete el flujo de trabajo y luego envía la respuesta de reconocimiento.
Para probar esto, reemplacé el flujo de trabajo con una declaración de suspensión y llamé a la función ack() con una declaración de espera antes de la suspensión. Este código no se reconoce en 3 segundos. Entonces, la aplicación Slack muestra un mensaje de error, ingrese la descripción de la imagen aquí
// handle create task modal submission app.view('create-task', async ({ ack, ...options }) => { await ack() logger.debug(`Sleeping ${new Date().getTime()}`); await new Promise((r) => setTimeout(r, 5000)); logger.debug(`Woke up ${new Date().getTime()}`); });Por otro lado, si reduzco el intervalo de suspensión a 2 segundos, el código anterior funciona y no aparece ningún error. Esto indica que el reconocimiento se produce después de que se completa el flujo de trabajo (la función de devolución de llamada se ejecuta por completo). Entonces, ¿cómo puedo reconocer la solicitud antes de ingresar a la suspensión (flujo de trabajo de creación de tareas)?
¿Utiliza AwsLambdaReceiver o processBeforeResponse: true para ejecutar su código en FaaS? Si es así, este es un comportamiento intencional del marco bolt-js. Consulte https://github.com/slackapi/bolt-js/issues/1119 para conocer su contexto.
Como soluciones alternativas, sugeriría ir con cualquiera de los siguientes: