Как объединить команды слеша, кнопки и диалоги для меню?

Мое приложение Slack запускается с помощью команды косой черты, которая затем отправляет пользователю эфемерное сообщение меню. Это меню имеет некоторую информацию и три кнопки сообщений.

Пример:

  • Первая кнопка позволяет пользователю закрыть меню
  • Вторая кнопка позволяет пользователю начать действие
  • Третья кнопка позволяет пользователю открыть диалог для изменения параметров.

После того, как пользователь отправляет диалог, я хочу обновить сообщение меню, чтобы отразить изменения, сделанные в диалоге.

Однако после того, как пользователь отправил диалог, я больше не могу обновлять меню сообщений, отвечая на ответ Slack, как и раньше.

Как я могу обновить сообщение меню с изменениями?

1 ответ

Решение

Чтобы сохранить соединение с исходной командой слэша, необходимо сохранить response_url последнего интерактивного действия перед открытием диалога.

В этом примере это будет запрос интерактивного действия, инициированный после нажатия кнопки "Опции". Тот response_url позволяет без проблем продолжить разговор, начатый с начальной команды косой черты.

Самый простой подход для хранения response_url это положить его в state свойство диалога, которое будет автоматически возвращаться в приложение с запросом отправки диалога.

Нужно быть осторожным, чтобы не спутать response_url из интерактивного действия с response_url из диалога.

Кроме того, случай отмены диалога обрабатывается автоматически, так как в этом случае пользователь может продолжить работу с начальным сообщением меню.

Другие вопросы по тегам