2016-07-31 17 views
0

私はHTTPotionを使用して余分なAPIに投稿しようとしています。私はそれについてthis質問に出くわし、それが正しい方向に私を指摘したが、私はエラーを取得保管:Slack API Elixirへの投稿

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

です

すべてのヘルプは素晴らしいことだ

ではなく、O単一引用符を使用すると、あなたの bodyが有効なJSONではないためだ

答えて

3

fを二重引用符で囲み、textの値を適切にエスケープしません。このためにはpoisonのような適切なJSONエンコーダを使用する必要があります。依存関係としてpoisonを追加した後、次の操作を実行できます。

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