Is there any way in the Slack API to have the submission button of a dialog open a new dialog or edit the current one?
Not directly. You can use the response_url attached to the dialog submission sent to your server to then post a follow up ephemeral message to the user, containing a button to continue to the next dialog. Once clicked, you'll receive another trigger_id which you can send to dialog.open and start another dialog.
More information on triggers and where to find them can be found here.
Related
I am new to Slack's API, so bear with me. I have a slack button that contains a simple webhook link which, when clicked, updates a record somewhere on my site. However, I need to determine which user clicked the button and send this info back to my site in order to fill out an updated_by field with the user's name. The only way I see to do this is to somehow update the post request body with a variable containing the user's name?
You need to handle interaction with the buttton.
https://api.slack.com/reference/interaction-payloads/block-actions
The payload received contains the SlackId of the user who clicked the button.
I would like customers to be able to click a button to send themselves a transcript at any point in the conversation. This button should essentially send a message to the bot which would initiate an “email transcript" dialog to prompt for their email and send the transcript. I was able to add a button to the directline webchat client (in my title bar) but I can't figure out how to have it create an activity for the bot. I have a custom store that sends an "inactive" activity but I wasn't able to use this same method to make the button send an activity. Can this be achieved? Or is there another way for customers to get a copy of their transcript?
I have achieved the actual transcript retrieval and emailing in code, initiates by a LUIS intent, I just want to provide an intuitive "always there" option to do this.
The WebChat offers a simple sample that shows you how to send activities programmatically to the bot. In this sample they are creating a separate button with an Event Listener, which will sent your message as a message activity.
If you would like to sent it as an event in the background, you could have a look at this sample, which you could combine with the event listener of the first example.
How to send a message programmatically
How to send welcome event
Note: you need to use the JavaScript WebChat, it is not possible to add this functionality to the iFrame version of the Bot Service.
I want my bot to post a message to a user which has a "delete" link to a particular message posted by that user. For e.g.
"Hi #someuser , you have posted an inappropriate message. Click >>here<< to delete it."
When the user clicks on "here" it will open up the slack delete message UI?
I have the message ts and channel ID.
I know i can do this via chat.delete api call (have the link point to my backend and then issue the chat.delete api call).
But i was wondering if there is a way to point user to the "delete message" window via a direct link in the message itself.
You can not add to or change the existing message of another user. Only delete a message (with admin rights).
What you can do though is send the guy a direct message from your app including the link (or button) to delete the message. Just send a message to the user ID of the user via chat.postMessage.
Or you can send the guy an ephemeral message into the channel, that only he will be able to see with chat.postEphermal.
To create a user experience similar to Slack's delete pop-up for messages I would suggest the following:
Include a "Delete" button in your message to the user with the
danger style, so it is shown in red color.
Include a confirmation pop-up with a copy of the message text.
My Slack app is started with a slash command, which then posts an ephemeral menu message to the user. That menu has some information and three message buttons.
Example:
First button allows the user to close the menu
Second button allows the user to start an action
Third button allows the user to open a dialog for changing
options.
After the user submits the dialog I want to update the menu message to reflect the changes made in the dialog.
However, after the user submits the dialog I can no longer to update the message menu by responding to a Slack response as before.
How can I update the menu message with the changes?
In order to keep the connection with the initial slash command one needs to store the response_url of the last interactive action before opening the dialog.
In this example it will be in the interactive action request initiated after pressing the "Options" button. That response_url allows one to seamlessly continue the conversation that was started with the initial slash command.
The easiest approach for storing the response_url is to put it into the state property of the dialog, which will automatically be echoed back to the app with the dialog submission request.
One needs to be careful not to confuse the response_url from the interactive action with the response_url from the dialog.
Also, the dialog cancel case is automatically handled, since in that case the user can continue working with the initial menu message.
I have an Outlook Addin that creates a contact on a webpage by making an API call to that webpage. When the Addin runs (via the click of a button), the API call is made and the user is taken to that webpage to fill in the contact information. After the user has filled in the information and clicks on submit, I would like to catch that event in Outlook and get the user back to Outlook to carry out further actions. Any possible ways of getting this done? I've been looking online but haven't found any solution as such.
Try to display the web page in a modal dialog in your own form. When the form is closed, you can take whatever action is necessary.
You may find the ItemSend event of the Application class helpful. It is fired whenever an Microsoft Outlook item is sent, either by the user through an Inspector (before the inspector is closed, but after the user clicks the Send button) or when the Send method for an Outlook item, such as MailItem, is used in a program.
Also you may consider repurposing ribbon controls. See Temporarily Repurpose Commands on the Office Fluent Ribbon for more information.