기본 코드는 아래 링크에서 출발합니다.
https://github.com/attzonko/mmpy_bot
내용중에 아래 내용도 있긴하지만, 잘 동작되지는 잘모르겠습니다.
File Support
from mmpy_bot.bot import respond_to
@respond_to('files')
def message_with_file(message):
# upload_file() can upload only one file at a time
# If you have several files to upload, you need call this function several times.
file = open('test.txt')
result = message.upload_file(file)
file.close()
if 'file_infos' not in result:
message.reply('upload file error')
file_id = result['file_infos'][0]['id']
# file_id need convert to array
message.reply('hello', [file_id])
아래는 직접 동작 확인된 코드 입니다.
upload를 하기위해서는 먼저 파일을 POST form multipart로 업로드를 하고 해당 id를 받아와서 다시 post 를 하는 방법입니다.
대략 아래와 같은 코드가 되고 특정 channel_id를 가진 방에 파일을 올리고 문구는 "file" 이라는 문구와 함께 올리게 됩니다.
def upload_file(self, file, channel_id): files = {'upload_file':open(file, 'rb')} response = json.loads(requests.post( self.url + '/files?channel_id='+channel_id, headers=self._get_headers(), files=files, verify=self.ssl_verify ).text) file_id=response['file_infos'][0]['id'] self.create_post(None,channel_id,"file",[file_id])
코드 설명을 하자면,
이 부분은 특정 채널에 파일을 POST로 업로하는 코드 입니다.
requests.post( self.url + '/files?channel_id='+channel_id, headers=self._get_headers(), files=files, verify=self.ssl_verify
여기에서 headers는 아래 링크에 있는 코드와 동일합니다.
https://github.com/attzonko/mmpy_bot/blob/master/mmpy_bot/mattermost.py
def _get_headers(self):
return {"Authorization": "Bearer " + self.token}
SSL 부분도 false로 해주면 됩니다.
self.ssl_verify = ssl_verify
create_post 부분도 동일합니다.
def create_post(self, user_id, channel_id, message, files=None, pid="", props=None): return self.post( '/posts', { 'channel_id': channel_id, 'message': message, 'file_ids': files or [], 'root_id': pid, 'props': props or {} })
댓글 없음:
댓글 쓰기