Skip to main content

Listening & responding to select menu options

The options() method listens for incoming option request payloads from Slack. Similar to the action() method, an action_id or constraints object is required.

While it's recommended to use action_id for external_select menus, dialogs do not yet support Block Kit so you'll have to use the constraints object to filter on a callback_id.

To respond to options requests, you'll need to ack() with valid options. Both external select response examples and dialog response examples can be found on our API site.

// Example of responding to an external_select options request
app.options('external_action', async ({ options, ack }) => {
// Get information specific to a team or channel
const results = await db.get(options.team.id);

if (results) {
let options = [];
// Collect information in options array to send in Slack ack response
for (const result of results) {
options.push({
text: {
type: "plain_text",
text: result.label
},
value: result.value
});
}

await ack({
options: options
});
} else {
await ack();
}
});