How to access Slack's Interactive Message request payload parameter?

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.