2016-09-02 10 views
2

言語:Python 2.7変数が行から引き出されたときにPythonスクリプトがスラックWebフックにデータを送信するのはなぜですか?

こんにちは。ここで本当に役に立つスクリプトを見つけました。Python to Slack Web Hook

スラックウェブフックにメッセージを送信する方法を示しています。

import json 
import requests 

# Set the webhook_url to the one provided by Slack when you create the webhook at https://my.slack.com/services/new/incoming-webhook/ 
webhook_url = 'https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX' 
slack_data = {"text": "<https://alert-system.com/alerts/1234|Click here> for details!"} 

response = requests.post(
    webhook_url, data=json.dumps(slack_data), 
    headers={'Content-Type': 'application/json'} 
) 
if response.status_code != 200: 
    raise ValueError(
     'Request to slack returned an error %s, the response is:\n%s' 
     % (response.status_code, response.text) 
    ) 

.pyファイルを実行すると完璧に動作します。

今、スラックに送信したいメッセージがたくさんあるファイルがあります。

:私は..だからそれはちょうどそれをつかんでslack_data = LINE1などのようにそれを渡すの問題です。..

をそのファイルにすでに正しくフォーマットしていない、何のスペースなど、私はこのようなものを使用してファイルを変更します

with open('export.txt', 'r') as e: 
    for line in e: 

     slack_data = line 

私はその直後にprint slack_dataを実行すると、正確に情報が画面に表示されるので、良いと思っています。私はそれがまだ最初の行で動作していないので、まだ各行のために働くようになっていません。

実行時に無効なペイロード400が発生します。

EDIT:スラックサポートは、何らかの理由でエスケープ文字が挿入されていると言っていました。

"{\"text\": \"<https://alert-system.com/alerts/1234|Click here> for details!"}\n"

任意の方向または支援が理解されます。

ありがとうございます!

答えて

1

私はすでにデータをJSON形式でファイルに書いていましたので、コードからjson.dumpsを削除するだけでした。

OLD:

#response = requests.post(webhook_url, data=json.dumps(slack_data), headers={'Content-Type': 'application/json'}) 

NEW:私はすべてが魔法のように働いていた、ということでしたら

response = requests.post(webhook_url, data=slack_data, headers={'Content-Type': 'application/json'}) 

0

あなたはこれまでのコードに変更した場合:

with open('export.txt', 'r') as e: 
    slack_data = e.read() 

をあなたはまだ400を得るのですか?

+0

で無効なペイロードにエラーを投げるまま:繰り返しを混合し、方法を読んでいましたデータを失う "エラー –

+0

私はそれをwith/forステートメントに入れました。それを取り出して試してみましょう –

+0

まだinvalid_payloadを取得しています –

0

誰かを助けるかもしれないように投稿するだけです。私にとっては、以下のスニペットは、働いていた:@Geoたちは「テキスト」が、そうでなければ失敗するキーワードを持つべき送信しようとしている最後のペイロードを指摘

data = json.dumps(slack_data) 
    response = requests.post(
     URL, json={"text": data}, 
     headers={'Content-Type': 'application/json'} 
    ) 

通り。

はまた、私はデータを交換する必要がPOSTメソッドで=他JSON =は、それは私が「とValueErrorを取得400

関連する問題