Turns out: What happened to slash command responses, #12702 happens to interactive message buttons too :/
So here we go again...
When replying ephemeral_text as a result of an interactive message button, the slack-compatibility-layer will break the result as same as slash command responses did: #12702
1: create a message with a button.
{"attachments":[{"actions": [{ "name":"text", "integration": {"url": self.URL+"/interactive", "context": {"action": "show_spoiler", "spoiler":" a < a | b > a "}} }] }]}
(full code: https://git.somenet.org/pub/jan/mattermost.git/blob/HEAD:/somebot/modules/CommandSpoiler.py)
2: click on the message button
3: let integration resturn the content of spoiler
4: get displayed a broken response
Getting a < a | b > a as response.
Got broken response, see screenshot.

add: "skip_slack_parsing" to PostActionIntegrationResponse and skip slack parsing if true.
I can look into it in the next few days and open a PR...
Thanks for your interest in submitting a PR for this! I also opened a ticket for our dev team for tracking: https://mattermost.atlassian.net/browse/MM-22825.
There you go :)
Most helpful comment
There you go :)