Как объединить команды слеша, кнопки и диалоги для меню?
Мое приложение Slack запускается с помощью команды косой черты, которая затем отправляет пользователю эфемерное сообщение меню. Это меню имеет некоторую информацию и три кнопки сообщений.
Пример:
- Первая кнопка позволяет пользователю закрыть меню
- Вторая кнопка позволяет пользователю начать действие
- Третья кнопка позволяет пользователю открыть диалог для изменения параметров.
После того, как пользователь отправляет диалог, я хочу обновить сообщение меню, чтобы отразить изменения, сделанные в диалоге.
Однако после того, как пользователь отправил диалог, я больше не могу обновлять меню сообщений, отвечая на ответ Slack, как и раньше.
Как я могу обновить сообщение меню с изменениями?
1 ответ
Чтобы сохранить соединение с исходной командой слэша, необходимо сохранить response_url
последнего интерактивного действия перед открытием диалога.
В этом примере это будет запрос интерактивного действия, инициированный после нажатия кнопки "Опции". Тот response_url
позволяет без проблем продолжить разговор, начатый с начальной команды косой черты.
Самый простой подход для хранения response_url
это положить его в state
свойство диалога, которое будет автоматически возвращаться в приложение с запросом отправки диалога.
Нужно быть осторожным, чтобы не спутать response_url
из интерактивного действия с response_url
из диалога.
Кроме того, случай отмены диалога обрабатывается автоматически, так как в этом случае пользователь может продолжить работу с начальным сообщением меню.