-
Notifications
You must be signed in to change notification settings - Fork 29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[QUERY] Scheduled Trigger, which sends a message with a button, which triggers an OpenForm, only allows button to be pressed by one user? #363
Comments
Hey @jpaulgale! 👋 This is a nice way to be using scheduled triggers and neat examples to reference! 👀 Update: I had missed notes from a recent release! With new workflows, message that have interactive buttons will default to multi-click! Adding the following step with your own shortcut link will hopefully work, but let me know if it doesn't... You might have to remove and re-add the workflow from your manifest if nothing changes with the button 😳 SampleWorkflow.addStep(
Schema.slack.functions.SendMessage,
{
channel_id: SampleWorkflow.inputs.channel_id,
message: "greetings",
interactive_blocks: [{
type: "actions",
elements: [
{
type: "button",
url:
"https://slack.com/shortcuts/Ft0123456789/485b0252927b166cd8a3b3c0bdb1b708",
text: { type: "plain_text", text: "Submit" },
style: "primary",
value: "submit",
action_id: "submit_button",
},
],
}],
},
); I think the |
Hi @zimeg -- thanks for your quick reply. The link you shared is to the no code workflow interface? Want to make sure I'm understanding correctly that it's not directly relevant to my deno slack app, but a new feature for the no code apps. when adding this suggested code here in the first step import { DefineWorkflow, Schema } from "deno-slack-sdk/mod.ts";
import { StoreKudosFunction } from "../functions/store_kudos.ts";
export const SubmitKudosWorkflow = DefineWorkflow({
callback_id: "submit_kudos_workflow",
title: "Submit Kudos",
description: "Submit kudos for team members",
input_parameters: {
properties: {
channel: {
type: Schema.slack.types.channel_id,
},
},
required: ["channel"],
},
});
// Add a step to send a message with a button
const sendMessage = SubmitKudosWorkflow.addStep(
Schema.slack.functions.SendMessage,
{
channel_id: SubmitKudosWorkflow.inputs.channel,
message: "Submit kudos here, to recognize any of your teammates who went above and beyond this week :slightly_smiling_face:",
interactive_blocks: [{
type: "actions",
elements: [
{
type: "button",
+ url: "https://slack.com/shortcuts/Ft07P32XV59R/631f7edf86081179a12af8a5938b4f29", // This is your actual shortcut URL
text: { type: "plain_text", text: "Submit" },
+ style: "primary",
+ value: "Submit",
- action_id: "submit_kudos_button",
+ action_id: "submit_button",
},
],
}],
},
);
const kudoForm = SubmitKudosWorkflow.addStep(
Schema.slack.functions.OpenForm,
{
title: "Submit Kudos",
interactivity: sendMessage.outputs.interactivity,
submit_label: "Submit",
fields: {
elements: [{
name: "kudo_recipients",
title: "Who deserves kudos?",
type: Schema.types.array,
items: {
type: Schema.slack.types.user_id,
},
}, {
name: "kudo_reason",
title: "What did they do to deserve kudos?",
type: Schema.types.string,
}],
required: ["kudo_recipients", "kudo_reason"],
},
},
);
SubmitKudosWorkflow.addStep(StoreKudosFunction, {
kudo_recipients: kudoForm.outputs.fields.kudo_recipients,
kudo_reason: kudoForm.outputs.fields.kudo_reason,
submitted_by: kudoForm.outputs.interactivity.interactor.id,
});
export default SubmitKudosWorkflow; after having run I am continuing to receive this error 🚫 The provided manifest file does not validate against schema. Consult the additional errors field to locate specific issues (invalid_manifest)
Interactivity at step 2 needs to be mapped to an interactivity in step 1's output (invalid_interactivity_pointer)
Source: /workflows/submit_kudos_workflow/steps/1 the trigger only has channel as an input, and does not have interactivity. I've tried to do my homework and google to see other people's issues with this, but coming up short on an answer. Does the message with the new shortcut url button, as you see it, conclude that workflow, and the clicking of the button is its own trigger, which begins the openmodal + then store results workflow? |
@jpaulgale Thanks for sharing what you tried once again, it's so helpful 🙏 You're correct to call out that link referencing no-code, but similar features should be available in coded workflows, and the concerns of compatibility make total sense. I think with some change we can mimic these behaviors though! I dove into this a bit more and the With that change, I believe a separate
I'm thinking of the original button as a "gate" to the workflow, where pressing it continues to the next step with Let me know if the example I shared makes sense as a starting place for the repeated button clicks! More change are needed to store kudos, but I'm wondering if this covers the starting case alright. And a bit of nuance is scattered throughout, but this |
Question
First step of workflow is SendMessage with button in an interactive block. After a user submits the two fields in the form, it is stored using a datastore.
Issue is that the button in the SendMessage (in the channel for all users to see) disappears after one user submits a form, leaving unhelpful messages in the place of the button like
<@message interactor user_id> submitted
or<@message interactor user_id> action is not available
.For my app to work as intended, I'd like for all users to be able to submit a form response many times as they'd like, as opposed to the message disappearing after just one user's successful submission.
It seemed as though https://github.com/seratch/slack-next-generation-platform-tutorials/tree/main/12_Button_Interactions was of some relevance, but I have not been able to successfully integrate some of @seratch 's concepts.
I know that I could do this by sending out the /shortcuts/ link, but I'd really prefer for UI reasons to have it be a clean, simple, and customized message.
Context
Weekly Kudos sends a message -- say, CallForSubmissions -- on Friday 10am, asking users in a channel to click a "Submit" button, which triggers an OpenForm. The form's completed submissions get sent to a slack datastore.
On Friday at 2pm, all kudos submitted since the last friday at 2pm are collated and sent out in that same channel, tagging each user that was recognized for their kudos-worthy act. Let's call that CollatedListofSubmittedKudosSinceLastWeek.
I have previously attempted to build this in the no-code workflow builder (which did allow for a persistent submit button) on the scheduled message, but the only way to store data using that system appeared to be via google sheets, which would return only one row instead of all rows submitted since last week. I even attempted to make a second table in the sheet which would collate all of the rows, but that wasn't even doing the trick.
Environment
The text was updated successfully, but these errors were encountered: