Публикация в Slack API Elixir

Я пытаюсь отправить сообщение в API-интерфейс Slack с помощью HTTPotion. Я столкнулся с этим вопросом об этом, и он указал мне на право направление, но я продолжал получать ошибку:

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"]]

Я не совсем уверен, что не так с моей полезной нагрузкой

Любая помощь была бы замечательной


person Nick Rucci    schedule 31.07.2016    source источник


Ответы (1)


Это потому, что ваш body недействителен JSON, поскольку он использует одинарные кавычки вместо двойных кавычек, а также не экранирует значение text должным образом. Для этого вам следует использовать подходящий кодировщик JSON, например poison. После добавления poison в качестве зависимости вы можете:

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