2017-02-17 11 views
2

Ich bin in der Lage Text Mattermost Kanal durch incoming webhooksWie kann ich eine Datei über den Matternmost-Webhook senden?

import requests, json 
URL = 'http://chat.something.com/hooks/1pgrmsj88qf5jfjb4eotmgfh5e' 
payload = {"channel": "general", "text": "some text"} 
r = requests.post(URL, data=json.dumps(payload)) 

diesen Code simplly veröffentlichen Text zu senden. Ich konnte keine Möglichkeit finden, eine Datei in einen Kanal zu stellen. Angenommen, ich möchte die Datei unter /home/alok/Downloads/Screenshot_20170217_221447.png veröffentlichen. Wenn jemand weiß, bitte teilen.

Antwort

2

Sie können derzeit keine Dateien mit der Incoming Webhooks-API anhängen. Sie müssten Mattermost Client API verwenden, um einen Post mit angehängten Dateien zu erstellen.

Hier ist ein Beispiel dafür, wie Sie diese (mit Mattermost API v3 für Mattermost> = 3,5) erreichen könnte

SERVER_URL = "http://chat.example.com/" 
TEAM_ID = "team_id_goes_here" 
CHANNEL_ID = "channel_id_goes_here" 
USER_EMAIL = "[email protected]" 
USER_PASS = "password123" 
FILE_PATH = '/home/user/thing_to_upload.png' 

import requests, json, os 

# Login 
s = requests.Session() # So that the auth cookie gets saved. 
s.headers.update({"X-Requested-With": "XMLHttpRequest"}) # To stop Mattermost rejecting our requests as CSRF. 

l = s.post(SERVER_URL + 'api/v3/users/login', data = json.dumps({'login_id': USER_EMAIL, 'password': USER_PASS})) 

USER_ID = l.json()["id"] 

# Upload the File. 
form_data = { 
     "channel_id": ('', CHANNEL_ID), 
     "client_ids": ('', "id_for_the_file"), 
     "files": (os.path.basename(FILE_PATH), open(FILE_PATH, 'rb')), 
} 
r = s.post(SERVER_URL + 'api/v3/teams/' + TEAM_ID + '/files/upload', files=form_data) 

FILE_ID = r.json()["file_infos"][0]["id"] 

# Create a post and attach the uploaded file to it. 
p = s.post(SERVER_URL + 'api/v3/teams/' + TEAM_ID + '/channels/' + CHANNEL_ID + '/posts/create', data = json.dumps({ 
    'user_id': USER_ID, 
    'channel_id': CHANNEL_ID, 
    'message': 'Post message goes here', 
    'file_ids': [FILE_ID,], 
    'create_at': 0, 
    'pending_post_id': 'randomstuffogeshere', 
})) 
Verwandte Themen