C# 发送飞书webhook消息

VS2026中NUGET安装 FeishuNotice,

这是项目说明:https://github.com/Ye1105/FeishuNotice

目前博主解锁了2个功能,一个是发webhook文本消息,一个是发webhook图片消息。

一、发webhook文本消息

cs 复制代码
 Feishu.RobotNoticeSync(webhook url, "hello");

二、发图片消息

1、先拿到 tenant_access_token。

2、放图片给飞书,拿到 image_key。

3、发送webhook图片消息。

cs 复制代码
        private  async void  button1_ClickAsync(object sender, EventArgs e)
        {

            // 1.拿到tenant_access_token
            string message = "{\"app_id\":\"cli_XXXXXXXXXX\",\"app_secret\":\"XXXXXXXXXXXXXX\"}";
            string rt = Post1("https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal", message);

            // 飞书返回 {"code":0,"expire":6203,"msg":"ok","tenant_access_token":"t-g104XXXXXXXXXXXXXXXXXXXXCE2EWTP"}
            var obj = JsonConvert.DeserializeObject<dynamic>((string)rt);
            string tmp = "Bearer " + obj.tenant_access_token.ToString(); //"Bearer t-g1043XXXXXXXXXXXXXXXXLIXH3"


            // 2.有了token,就可以上传图片了,上传图片后会返回一个image_key,这个image_key就可以在消息中使用了

            var options = new RestClientOptions("https://open.feishu.cn/open-apis/im/v1/images");           
            var client = new RestClient(options);
            var request = new RestRequest();
            request.Method = Method.Post;
            request.AddHeader("Authorization", tmp); 
            request.AddHeader("Content-Type", "multipart/form-data");
            request.AddParameter("image_type", "message");
            request.AddFile("image", "C:\\Users\\XXXXX\\Pictures\\kpi.png");

            var response = await client.ExecuteAsync(request);
            textBox1.Text =response.Content;

            // 飞书返回 {"code":0,"data":{"image_key":"img_v3_02vp_XXXXXXXXXXXXXXXXXXXXXX"},"msg":"success"}


            // 3.有了image_key,就可以在消息中发图片了
            //  await Feishu.RobotImgNotice(webhook, "img_v3_02vp_XXXXXXXXXXXXX");
        }


        //Post请求
        public static string Post1(string url, string obj)
        {
            string param = (obj);//参数
            byte[] bs = Encoding.UTF8.GetBytes(param);

            //创建一个新的HttpWebRequest对象。
            HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);

            // 将方法属性设置为"POST"以将数据发布到URI。
            req.Method = "POST";

            //设置contentType属性。
            req.ContentType = "application/json";

            req.ContentLength = bs.Length;
            using (Stream reqStream = req.GetRequestStream())
            {
                reqStream.Write(bs, 0, bs.Length);
                reqStream.Close();
                HttpWebResponse response2 = (HttpWebResponse)req.GetResponse();
                StreamReader sr2 = new StreamReader(response2.GetResponseStream(), Encoding.UTF8);
                string str = sr2.ReadToEnd();
                return str;
            }

        }
相关推荐
上位机妹子2 小时前
EF Core 两种继承映射:每层次一张表(TPH)与每类型一张表(TPT)
数据库·c#·.netcore·ef core
小羊没烦恼!4 小时前
jQuery1.5的改进细节
java·服务器·开发语言·前端·c#
下页、再停留5 小时前
【C#桌面客户端系列学习-8】批量导出数据为csv格式
开发语言·c#·visual studio
波力海苔夹心脆6756 小时前
C# 视觉检测实战:PLC 按钮触发 VisionPro 检测,OK 亮灯 / NG 灭灯(西门子 PLC,含界面显示与图片存档)
开发语言·经验分享·c#·自动化·视觉检测·.net
kim7 小时前
一个人 + AI,用 WinForms 搓了个 376KB 的 Windows 便签:便签 / 截图 / 标注 / OCR / 待办全塞进去了
c#
hez20108 小时前
一行代码在 .NET 项目里启用 Satori GC
c#·.net·.net core·gc·clr
宇卿.8 小时前
C#语句:
开发语言·c#
咕白m6258 小时前
使用 C# 将 TIFF 转换为 PDF
前端·c#
JQLvopkk9 小时前
HslCommunication,一个工具测遍所有 PLC
开发语言·人工智能·c#·交互
下页、再停留9 小时前
【C#桌面客户端系列学习-7】数据查询展示
开发语言·c#·visual studio