I would like to access the payload parameter sent by Slack to Interactive Message Request Url when a user clicks on a button in one of these messages.
How do I do this?
On your server side, check your request url route is allowed to receive POST. As said in theirs docs ( https://api.slack.com/docs/message-buttons ) :
Your Action URL will receive a HTTP POST request, including a payload body parameter, itself containing an application/x-www-form-urlencoded JSON string.
You first have to decode the x-www-form-urlencoded format of the request, then json decode it.
In python, I end up with this line of code :
payload = json.loads(urlparse.parse_qs(request.get_data())['payload'][0])
Hope it helps someone else one day !
If you are using AWS lamdba as backend, use following. (python3)
import json
from urllib.parse import parse_qs
payload = json.loads(parse_qs(event['body'])['payload'][0])
I managed getting the info this way:
data = request.form.to_dict()
payload = json.loads(data['payload'])
print(payload["actions"][0]["name"])
Hope it helps someone in the future.
The first line converts the ImmutableDict to a mutable dictionary.
The second line is necessary because the payload is still JSON.
The third line is simply accessing the payload action details as seen in the Block Link Builder , often most people will only have one relevant action to process.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.