Closed mambuganarayana closed 7 months ago
Hi @mambuganarayana thanks for writing in 💯
If I understand correctly your application has a workflow with a step that posts a message with a button to kicks off another workflow. An alternative could be to use an interactive message that contains a button scoped to a single step/function. This way you will have access to the entire context of the message.
Let me know if this answered your question
Thank you, @WilliamBergamin. Let me explain my use case.
I have two applications.
The InternalApp sends an interactive message containing components (like text fields, radio buttons, etc.), including a button. To send the message, it uses a bot token of the 'SlackApp' and calls the HTTPS endpoint chat.postMessage.
The message appears in the 'Messages' tab of the SlackApp for the end user.
The user provides information (enters data into the text field, selects radio button options), and clicks on Submit button.
At this point, I want to trigger a workflow function associated with the SlackApp and pass all the information the user provided. Is this possible? If so, how?
The function then uses the information and inserts it into a data store.
Since the bot token provided by your workflow Slack app is not permanent / static, your non-Slack app cannot utilize the token for sending a message.
The InternalApp sends an interactive message containing components (like text fields, radio buttons, etc.), including a button. To send the message, it uses a bot token of the 'SlackApp' and calls the HTTPS endpoint chat.postMessage.
If your "internal" app needs the ability to send a message at a certain timing, here are two possible options:
With the option 1., the workflow triggered by the button click first opens a modal dialog to collect user inputs and relay the data to the next step. Here is an example code: https://github.com/slack-samples/deno-code-snippets/tree/main/Block_Kit_Modals
If you go with option 2., you can do everything within a single Bolt app: https://slack.dev/bolt-js
Thank you very much.
If your "internal" app needs the ability to send a message at a certain timing,
Yes, the flow starts from our internal app.
I will try out option#1.
Regarding option#2, I am assuming we need to expose a request URL that is accessible publicly OR make use of WebSockets. Is this correct?
For security reasons, we are not allowed to expose a public URL. I have tried WebSockets for development using Bolt SDKs. It works very well. Does Slack recommend it for production as well?
Yeah, you can go with either Request URL (publicly accessible URL) or Socket Mode (WebSocket protocol).
Does Slack recommend it for production as well?
Yes, we do. You can use Socket Mode for production use cases too. When your app needs more scalibility, you can run up to 10 instances for an app.
It seems that everything is clear now. Would you mind closing this issue?
Yes, Thanks again.!
Question How can I access the details entered by the user in my workflow?
Context I have an external application that sends a message to a next-generation Slack App using the chat.PostMessage API. The message contains interactive components (like text fields, radio buttons, etc.), including a button.
When the user enters information and clicks the button, I would like to save the details provided by the end-user into a Datastore.
I set the button with type equal to workflow as detailed here. However, the document says this button will not send 'block_actions' events as it is launching a new workflow.
My question is, how can I access the details entered by the user in my workflow?
Environment
"deno-slack-sdk/": "https://deno.land/x/deno_slack_sdk@2.6.0/",
"deno-slack-api/": "https://deno.land/x/deno_slack_api@2.2.0/",
deno 1.41.0 (release, aarch64-apple-darwin)
v8 12.1.285.27
typescript 5.3.3
ProductName: macOS
ProductVersion: 14.3.1
BuildVersion: 23D60
Darwin Kernel Version 23.3.0: Wed Dec 20 21:30:44 PST 2023; root:xnu-10002.81.5~7/RELEASE_ARM64_T6000
Requirements