html5笑話網(wǎng)站源碼上海seo網(wǎng)絡(luò)優(yōu)化
當前飛書webhook機器人還不支持發(fā)送文件類型的群消息,可以申請創(chuàng)建一個機器人應(yīng)用來實現(xiàn)群發(fā)送文件消息。
創(chuàng)建機器人后,需要開通一系列權(quán)限,然后發(fā)布。由管理員審核通過后,才可使用。
包括如下的權(quán)限,可以獲取群的chat_id。
開通權(quán)限發(fā)布應(yīng)用后,可以取到兩個重要的參數(shù):
app_id
app_secret
使用兩個參數(shù)可以生成密鑰tenant_access_token,
headers = {‘Authorization’: f’Bearer {get_token()}', ## 獲取tenant_access_token, 需要替換為實際的token
def get_token():# 獲取tenant_access_token,供上傳圖片接口使用url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal"headers = {"Content-Type": "application/json; charset=utf-8",}payload_data = {"app_id": "cli_xxx","app_secret": "xxx",}response = requests.post(url=url, data=json.dumps(payload_data), headers=headers).json()print(response)token = response['tenant_access_token']return token```
上傳文件
def upload_file(file_path):try:file_name = file_path.split(',')[0]url = "https://open.feishu.cn/open-apis/im/v1/files"form = {'file_type': 'stream','file_name': file_name,'file': (file_name, open(file_path, 'rb'),'text/plain')} # 需要替換具體的path 具體的格式參考 https://www.w3school.com.cn/media/media_mimeref.aspmulti_form = MultipartEncoder(form)headers = {'Authorization': f'Bearer {get_token()}', ## 獲取tenant_access_token, 需要替換為實際的token}headers['Content-Type'] = multi_form.content_typer = requests.request("POST", url, headers=headers, data=multi_form)print(r.json())# print(response.headers['X-Tt-Logid']) # for debug or oncall# print(response.content) # Print Responseif r.json().get("code") == 0 and r.json().get("msg") == "success":logger.info(f"上傳文件到飛書成功,msg={r.json()},{file_path=}")media_id = r.json().get('data').get('file_key')return media_idelse:logger.warning(f"上傳文件到飛書異常,{r.json()=},{file_path=}")# Press the green button in the gutter to run the script.except Exception as e:# logger.warning("上傳文件到企業(yè)微信失敗")print("上傳文件到飛書失敗")print(e)# logger.warning(e)pass
發(fā)送文件到群
def send_file(file_path=None, media_id=""):"""機器人應(yīng)用上傳文件"""if not media_id:media_id = upload_file(file_path=file_path)time.sleep(1)url = 'https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=chat_id'msgContent = {"file_key": media_id}form = {"content": json.dumps(msgContent),"msg_type": "file","receive_id": "oc_xxx"}headers = {'Authorization': 'Bearer ' + get_token()}response = requests.post(url=url, data=json.dumps(form), headers=headers)print(response.json())
獲取群的chat_id
def get_qun_list():url = 'https://open.feishu.cn/open-apis/im/v1/chats'headers = {'Authorization': 'Bearer ' + get_token()}response = requests.get(url=url, headers=headers)print(response.json())return response.json()['data']['items']def get_ _by_name(qun_name):items = get_qun_list()for i in items:if i.get('name') == str(qun_name):print(i.get('chat_id'))return i.get('chat_id')
發(fā)送成功