2017-02-17 20 views
2

Я могу отправить текст Mattermost канала через incoming webhooksКак отправить файл через Mattermost входящий webhook?

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

этот код simplly опубликовать текст. Я не мог найти способ отправить файл на канал. Предположим, я хочу разместить файл, расположенный по адресу /home/alok/Downloads/Screenshot_20170217_221447.png. Если кто-нибудь знает, пожалуйста, поделитесь.

ответ

2

В настоящее время вы не можете прикреплять файлы, используя API входящих Webhooks. Вам нужно будет использовать Mattermost Client API, чтобы опубликовать сообщение с прикрепленными к нему файлами.

Вот пример того, как можно достичь этого (используя Mattermost API v3 для Mattermost> = 3,5)

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', 
}))