Last active
March 6, 2024 07:37
-
-
Save willdages/dcac226b8d482b9dc105e6044a677345 to your computer and use it in GitHub Desktop.
Slack's Interactive Messages endpoint reports a Content-Type of `application/x-www-form-urlencoded` but responds with something like looks like `payload=%7B%22actions%22%3A%5B%7B%22...`, which is encoded JSON inside the payload parameter, which takes the API Gateway VTL templates for a loop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## The `substring(8)` returns the input with everything after "payload=" which is the only parameter passed in, | |
## everything else is encoded JSON inside that parameter. | |
#set ($encodedJSON = $input.body.substring(8)) | |
$util.urlDecode(${encodedJSON}) |
Thanks a million for posting this. I'd also add for anyone else struggling that I had to delete and rebuild the API with this template for it to work.
EDIT: I was making a novice mistake and hadn't deployed the API changes.
I added this mapping template but am still receiving the same error. First time using API Gateway + Lambda, so if there are any gotchas I could be missing in the setup, like needing to publish changes to the API Gateway or something please let me know.
Thanks a million. I had a body mapping I got from another site that was working for slash commands but wasn't working for interactions. Slack should really just send json
You are my savior! Thanks!
Saved my day. Thanks.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks, dude... really useful. Do you know why is that? I'm thinking about the reasons for this kind of decision from Slack's team.