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