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;
            }

        }
相关推荐
geovindu1 分钟前
CSharp: Command Pattern
开发语言·后端·c#·.net·.netcore·命令模式·行为模式
格林威3 小时前
C# 相机图像阴影校正:使用OpenCvSharp实现工业相机阴影平场校正功能
人工智能·数码相机·opencv·计算机视觉·c#·机器视觉·工业相机
俊昭喜喜里3 小时前
c#中的构造函数
开发语言·数据库·c#
hahaha60164 小时前
HLS高层次综合设计--axi之burst纠偏
开发语言·算法·fpga开发·c#
点心的游戏开发世界12 小时前
Unity C# 脚本学习笔记:命名空间与 using
学习·unity·c#
淡海水14 小时前
07-04-并发-ConcurrentBag-T-工作窃取WorkStealing算法
开发语言·算法·c#·bag·concurrent·workstealing
点心的游戏开发世界14 小时前
Unity C# 脚本学习笔记:泛型
学习·unity·c#
公子小六18 小时前
基于.NET的Windows窗体编程之WinForms滑块与上下控件
windows·microsoft·c#·.net·winforms
曹牧19 小时前
C#:文本文件读取
服务器·前端·c#
2601_9673387119 小时前
C#上位机开发零基础入门到精通全套视频
开发语言·c#