【保姆式】python調用api通過機器人發送文件到飛書指定群聊

當前飛書webhook機器人還不支持發送文件類型的群消息,它目前僅支持文本,富文本,卡片等文字類型的數據。
我們可以申請創建一個機器人應用來實現群發送文件消息。

創建飛書應用

創建飛書應用、配置權限、添加機器人

  1. 來到飛書開發者后臺

創建企業自建應用
輸入名稱、描述
在這里插入圖片描述

  1. 創建應用后,需要開通一系列權限,然后發布。由管理員審核通過后,才可使用
    在這里插入圖片描述
    在上述位置下添加下述權限并開通
    在這里插入圖片描述

  2. 創建機器人
    在這里插入圖片描述
    在上述位置添加好機器人

  3. 在你要發送的群里中添加剛剛創建的機器人(我這的機器人取名為“推送報表”)
    在這里插入圖片描述

  4. 最后提交發布, 在憑證和基礎信息這里獲取

app id
app secret

在這里插入圖片描述

調用API上傳文件

流程順序如下:通過app_id,app_secret獲取token -> 上傳文件(獲取文件id)-> 獲取群聊chat_id -> 通過文件id將文件上傳到指定chat_id

  1. 獲取token
def get_token():""" 獲取飛書 access_token """url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/"headers = {"Content-Type": "application/json"}data = {"app_id": APP_ID,"app_secret": APP_SECRET}response = requests.post(url, headers=headers, json=data)if response.status_code == 200:return response.json()["tenant_access_token"]else:return ""
  1. 上傳文件到飛書,并獲取文件id
def upload_file(file_name, file_path):""" 上傳文件到飛書 """url = "https://open.feishu.cn/open-apis/im/v1/files"headers = {"Authorization": "Bearer "+get_token()}form = {"file_type": "stream","file_name": file_name,"file": (file_name, open(file_path, "rb"), "text/plain")}multi_form = MultipartEncoder(form)headers["Content-Type"] = multi_form.content_typeresponse = requests.post(url, headers=headers, data=multi_form)if response.status_code == 200 and response.json().get("code") == 0:# print(f"上傳文件到飛書成功,msg={response.json()},{file_path=}")media_id = response.json().get("data", {}).get("file_key")return media_idelse:return "" 
  1. 獲取群chat_id
    有兩種方式,通過api,或者直接通過平臺粘貼對應群聊id,這里使用后者,因為是發送到固定群聊
    去到api調試頁面,按照如下操作獲取對應群聊chat_id
    在這里插入圖片描述
  2. 發送文件到群里
def send_file(file_path, media_id=None):"""機器人應用上傳文件"""if not media_id:media_id = upload_file(file_name=file_path, 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": CHAT_ID}headers = {'Authorization': 'Bearer ' + get_token()}response = requests.post(url=url, data=json.dumps(form), headers=headers)print(response.json())

完成文件發送
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/64177.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/64177.shtml
英文地址,請注明出處:http://en.pswp.cn/web/64177.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL-存儲過程(頭歌數據庫實驗題)

(學校數據庫課程的頭歌平臺實驗題,根據自己理解編寫,希望對正在學的人有啟發作用和借鑒幫助,不喜勿噴,有錯請聯系改正) 實驗 存儲過程:輸入1 任務描述: 本關任務:編寫…

GitLab 服務變更提醒:中國大陸、澳門和香港用戶停止提供服務(GitLab 服務停止)

目錄 前言 一. 變更詳情 1. 停止服務區域 2. 郵件通知 3. 新的服務提供商 4. 關鍵日期 5. 行動建議 二. 遷移指南 三. 注意事項 四. 相關推薦 前言 近期,許多位于中國大陸、澳門和香港的 GitLab 用戶收到了一封來自 GitLab 官方的重要通知。根據這封郵件…

mysql基礎快速入門

通用語法及分類 DDL: 數據定義語言,用來定義數據庫對象(數據庫、表、字段)DML: 數據操作語言,用來對數據庫表中的數據進行增刪改DQL: 數據查詢語言,用來查詢數據庫中表的記錄DCL: 數據控制語言,用來創建數…

Python文件讀寫在“簡易記事本”項目中的應用

Python文件讀寫在“簡易記事本”項目中的應用 文件讀寫是“簡易記事本”項目實現數據持久化的關鍵部分。在本節中,我們將逐步拆解記事本的功能,詳細講解與文件讀寫相關的代碼,并結合實際操作幫助讀者更好地理解文件操作的核心知識點。 功能…

【Agent】AutoGen Studio2.0開源框架-UI層環境安裝+詳細操作教程(從0到1帶跑通智能體AutoGen Studio)

💥 歡迎來到我的博客!很高興能在這里與您相遇! 首頁:GPT-千鑫 – 熱愛AI、熱愛Python的天選打工人,活到老學到老!!!導航 - 人工智能系列:包含 OpenAI API Key教程, 50個…

三層交換機配置

一,三層交換 概念:三層交換技術就是:二層交換技術三層轉發技術(路由器功能)。它解決了局域網中網段劃分之后,網段中子網必須依賴路由器進行管理的局面,解決了傳統路由器低速,復雜所造成的網絡瓶頸問題。 …

js單例模式

單例模式是一種常見的設計模式,在JavaScript中也有廣泛應用,以下是關于它的詳細介紹: 定義 單例模式是一種創建型設計模式,它確保一個類只有一個實例,并提供一個全局訪問點來訪問該實例。在JavaScript中,…

【Golang 面試題】每日 3 題(六)

?個人博客:Pandaconda-CSDN博客 📣專欄地址:http://t.csdnimg.cn/UWz06 📚專欄簡介:在這個專欄中,我將會分享 Golang 面試中常見的面試題給大家~ ??如果有收獲的話,歡迎點贊👍收藏…

SQL Server數據庫多主模式解決方案

SQL Server 本身并不直接支持多主模式(Multi-Master Replication),即多個數據庫實例可以同時進行寫操作,并且這些更改會自動同步到其他實例。不過,SQL Server 提供了多種高可用性和復制解決方案,可以實現類似多主模式的功能。以下是幾種常見的方法: 1. Always On 可用性…

連鎖餐飲行業數據可視化分析方案

引言 隨著連鎖餐飲行業的迅速發展,市場競爭日益激烈。企業需要更加精準地把握運營狀況、消費者需求和市場趨勢,以制定科學合理的決策,提升競爭力和盈利能力。可視化數據分析可以幫助連鎖餐飲企業整合多源數據,通過直觀、動態的可…

Zookeeper JavaAPI操作(Curator API常用操作)

構建項目 zk版本:3.5.7,引入4.0.0的curator版本,Curator依賴的版本只能比zookeeper依賴的版本高。 Curator簡單介紹 Curator是Netflix公司開源的一套zookeeper客戶端框架,解決了很多Zookeeper客戶端非常底層的細節開發工作&…

可搜索的下拉選擇框:filterable屬性詳解

在前端開發中,下拉選擇框(Dropdown Select)是一個常見的UI組件,它允許用戶從一組預定義的選項中選擇一個或多個值。然而,當選項數量較多時,手動查找特定的選項可能會變得繁瑣。為了解決這個問題&#xff0c…

精選9個自動化任務的Python腳本精選

大家好,我是老鄧,今天我們來一起學習如何用Python進行一些常見的自動化操作,涉及文件處理、網絡交互等實用技巧。即使你沒有任何Python基礎也沒關系,我會用最通俗易懂的語言來講解。 1. 對目錄中的文件進行排序 import osdef so…

滑動窗口 + 算法復習

維護一個滿足條件的窗口大小&#xff0c;然后進行雙指針移動 1.最長子串 題目鏈接&#xff1a;1.最長子串 - 藍橋云課 #include<bits/stdc.h> #define int long long using namespace std; string s; int k; signed main() {int max_len0,left0;cin>>s>>k;…

PDF書籍《手寫調用鏈監控APM系統-Java版》第9章 插件與鏈路的結合:Mysql插件實現

本人閱讀了 Skywalking 的大部分核心代碼&#xff0c;也了解了相關的文獻&#xff0c;對此深有感悟&#xff0c;特此借助巨人的思想自己手動用JAVA語言實現了一個 “調用鏈監控APM” 系統。本書采用邊講解實現原理邊編寫代碼的方式&#xff0c;看本書時一定要跟著敲代碼。 作者…

關于Vue的子組件改變父組件傳來的值

一、組件直接傳值 大家都知道父子組件傳值的方案&#xff0c;有以下幾個&#xff0c;不再詳細敖述 Props&#xff1a;父組件向子組件傳遞數據 $emit&#xff1a;子組件通過自定義事件向父組件傳遞數據 .sync修飾符&#xff1a;一個方便且強大的工具&#xff0c;可以簡化父子組…

Flink的Watermark水位線詳解

一、Flink的時間語義 Flink有如下三種時間語義&#xff1a; Flink的三種時間語義-CSDN博客 在實際應用中&#xff0c;一般會采用事件時間語義。而正如前面所說的&#xff0c;事件時間語義需要等窗口的數據全部到齊了&#xff0c;才能進行窗口計算。那么&#xff0c;什么時候數…

ES學習Promise對象(九)

這里寫目錄標題 一、概念二、示例基本使用使用 Promise 對象封裝Ajaxthen() 方法catch() 方法 一、概念 簡單說就是一個容器&#xff0c;里面保存著某個未來才會結束的事件&#xff08;通常是一個異步操作&#xff09;的結果。Promise 是一個對象&#xff0c;Promise 提供統一…

Kibana:LINUX_X86_64 和 DEB_X86_64兩種可選下載方式的區別

最近需要在vm&#xff08;操作系統是 Ubuntu 22.04.4 LTS&#xff0c;代號 Jammy。這是一個基于 x86_64 架構的 Linux 發行版&#xff09;上安裝一個7.17.8版本的Kibana&#xff0c;并且不采用docker方式。 在下載的時候發現有以下兩個選項&#xff0c;分別是 LINUX_X86_64 和 …

CMake 構建項目并整理頭文件和庫文件

本文將介紹如何使用 CMake 構建項目、編譯生成庫文件&#xff0c;并將頭文件和庫文件整理到統一的目錄中以便在其他項目中使用。 1. 項目結構 假設我們正在構建一個名為 rttr 的開源庫&#xff0c;初始的項目結構如下&#xff1a; D:\WorkCode\Demo\rttr-master\|- src\ …