44

Slack の chat.postMessage API 呼び出しを使用してメッセージを送信しようとしています。HTTP GET 内でテスト メッセージをエンコードするのに問題はありませんが、HTTP POST 要求で JSON を使用して同じ結果を達成しようとしています。

curlPostmanの両方でテストしてきましたが、Slack は私のリクエスト本文をまったく認識していないようです。

{
  "ok": false,
  "error": "not_authed"
}

ではcurl、リクエストは次のようにエンコードされます。

curl -H "Content-type: application/json" -X POST -d '{"token":"my-token-here","channel":"#channel-name-or-id","text":"Text here.","username":"otherusername"}'

Postman では、これは生の本文です。

{
    "token":"my-token-here",
    "channel":"#channel-name-or-id",
    "text":"Text here.",
    "username":"otherusername"
}

私はこれまでにこのようなことをしたことがないので、何かを見逃しているかどうかはわかりません。ありがとう!

4

11 に答える 11

4

Slack が更新され、これが機能するようになりました。この例を試してください:

curl -X POST -H 'Content-type: application/json' --data '{"text":"This is a line of text.\nAnd this is another one."}' https://hooks.slack.com/services/AAAAAA/BBBBBB/CCCCCC

ドキュメントについては、 https://api.slack.com/incoming-webhooksを参照してください。

于 2016-12-28T19:00:52.003 に答える
3

次のように、各プロパティを独自の -d パラメータに入れてみてください。

curl https://slack.com/api/chat.postMessage -X POST -d "channel=#tehchannel" -d "text=teh text" -d "username=teh user" -d "token=teh-token-you-got-from-teh-page-that-machinehead115-linked-to" -d "icon_emoji=:simple_smile:"
于 2015-10-06T10:01:44.360 に答える
0

私はこれをpowershellで行いましたが、それは魅力のように機能します。

$url="https://slack.com/api/chat.postMessage"
    $messageContent= # your message here
    $token = # your token here
    $channel = # channel name
    $opt_username= # optional user name

    $body = @{token=$token;channel=$channel;username=$opt_username;text=$messageContent;pretty=1}

    try
    {
        Invoke-WebRequest -Uri $url -Method POST -Body $body
    }
    catch
    {
        Write-Host "StatusCode:" $_.Exception.Response.StatusCode.value__ 
        Write-Host "StatusDescription:" $_.Exception.Response.StatusDescription        
    }
于 2017-02-02T16:39:19.943 に答える