发布到Slack API Elixir

时间:2016-07-31 06:12:42

标签: elixir slack-api

我正在尝试使用HTTPotion发布到slack api。我遇到了this关于它的问题,它指出了我正确的方向,但我一直收到错误:

HTTPotion.Response{body: "invalid_payload",
...

我的代码是

HTTPotion.post "https://hooks.slack.com/services/T00000000/B0000000/xxxxxxxxxxxxx", [body: "{'channel': '#elixir', 'username': 'elixir stuff', 'text': '#{text}'", headers: ["Content-Type": "application/json"]]

我不确定我的有效载荷有什么问题

任何帮助都会很棒

1 个答案:

答案 0 :(得分:4)

那是因为你的body不是有效的JSON,因为它使用单引号而不是双引号,并且也没有正确地转义text的值。您应该使用适当的JSON编码器,例如poison。将poison作为依赖项添加后,您可以执行以下操作:

body: Poison.encode!(%{channel: "#elixir", username: "elixir stuff", text: text}), ...