2016-09-02 17 views
2

語言:Python 2.7當變量從一行中拉出時,爲什麼Python腳本將數據發送到Slack Web鉤子不起作用?

大家好。我在這裏找到了一個非常有用的腳本:Python to Slack Web Hook

顯示如何將消息發送到Slack Web鉤子。

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的消息行。

:我有它在文件中正確格式化已經,沒有空格等。這樣也好,我修改了文件,像這樣的東西只是一個抓住它,它傳遞這樣slack_data =一號線等事..

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

     slack_data = line 

現在,如果我在此之後做了print slack_data,那麼信息將在屏幕上完全返回,所以我認爲它很好。我還沒有開始爲每條線路都工作,因爲它甚至不在第一線上工作。

當我運行它時,我得到一個無效負載400。

編輯:鬆弛支持說,他們正在接受有轉義字符插入到某些原因。

"{\"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'}) 

新:

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

我得到「ValueError異常:混合迭代和閱讀的方法將丟失數據「錯誤 –

+0

掛起,我得到了與/爲聲明..讓我拿出來,並嘗試它 –

+0

仍然越來越invalid_payload –

0

只是發佈,因爲它可能有助於某人。對我來說,下面的代碼片段工作:

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

由於@Geo指出,我們要派應該有關鍵字「文本」,否則將無法通過最終的有效載荷。

而且,在POST方法我有JSON更換數據= =否則保持拋出錯誤無效的有效載荷400

相關問題