如何使用飞书自定义机器人通知消息

       大家有没有这样的需求,就是正在执行某个任务的时候希望任务完成之后给个通知,或者是软件运行报错的时候每天定期收集错误日志。

平时我们工作用的飞书,所有现在用飞书机器人把消息通知出来,非常简单 好用 的消息通知。

类似这样的消息通知还有企业微信也有。

  1. 飞书拉群的时候添加自定义机器

  2. 拿到飞书机器人的webhook ,根据飞书文档自定义机器人使用指南 - 开发指南 - 开发文档 - 飞书开放平台

C#实现如下,这个webhook真实可用,大家可以拿了玩玩,消息会发到我这里

private static readonly HttpClient client = new HttpClient();
 private static async Task SendMassageFeishu(string content)
 {
     //自定义机器人webhook地址
     string webhookUrl = "https://open.feishu.cn/open-apis/bot/v2/hook/475b444e-d0e4-4b69-9cba-e2382a69bea8";
     var message = new
     {
         msg_type = "text",
         content = new
         {
             text = content
         }
     };
     var json = JsonConvert.SerializeObject(message);
     var data = new StringContent(json, Encoding.UTF8, "application/json");

     var response = await client.PostAsync(webhookUrl, data);
     var result = await response.Content.ReadAsStringAsync();
 }

效果这样

   

3. 发送通过自定义机器人发送图片,需要先创建应用,并且开通图片上传权限

    1. 发送图片
需要先创建应用,开通图片文件上传的权限。
获取开通应用的appId和appSecret,获取Token
   public async Task<string> GetTokenAsync()
   {
       string appId = @"cli_a7a4cdbd480b";
       string appSecret = "qDIqT7EIr98cV8Q3ofKqRSnQqDjA";
       using var client = new HttpClient();
       var requestBody = new
       {
           app_id = appId,
           app_secret = appSecret
       };

       var content = new StringContent(JsonConvert.SerializeObject(requestBody), Encoding.UTF8,
           "application/json");

       var response =
           await client.PostAsync("https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/",
               content);
       string responseContent = await response.Content.ReadAsStringAsync();

       if (response.IsSuccessStatusCode)
       {
           var jsonResponse = JObject.Parse(responseContent);
           string tenantAccessToken = jsonResponse["tenant_access_token"].ToString();
           return tenantAccessToken;
       }

       return "";

   }

拿到Token之后调用上传图片的方法,拿到图片的image_key
 private static async Task<string> UploadImage(string accessToken, string imagePath)
 {
     using HttpClient client = new HttpClient();
     client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);

     using var formData = new MultipartFormDataContent();
     using var fileStream = File.OpenRead(imagePath);
     var fileContent = new StreamContent(fileStream);
     var mimeType = GetMimeType(imagePath);
     fileContent.Headers.ContentType = new MediaTypeHeaderValue(mimeType);

     formData.Add(fileContent, "image", Path.GetFileName(imagePath));
     formData.Add(new StringContent("message"), "image_type"); // 使用"message"作为默认image_type

     var response = await client.PostAsync("https://open.feishu.cn/open-apis/image/v4/put/", formData);
     string responseBody = await response.Content.ReadAsStringAsync();

     if (response.IsSuccessStatusCode)
     {
         var jsonResponse = JObject.Parse(responseBody);
         var imageKey = jsonResponse["data"]["image_key"]?.ToString();
           
         return imageKey;
     }
     else
     {
                
     }

     return null;
 }

拿到Image_key之后就可以,通过自定义机器人的Webhook地址发送图片
  public async Task<bool> SendImageFeishuAsync(string imagePath)
  {
      var token = await GetTokenAsync();
      var imageKey = await UploadImage(token, imagePath);
      // 替换为你自己的飞书机器人Webhook地址
      string webhookUrl = "https://open.feishu.cn/open-apis/bot/v2/hook/05546c09-f7e7-466c-8660-18aa";
      // 将图片转换为Base64编码字符串

      var message = new
      {
          msg_type = "image",
          content = new
          {
              image_key = imageKey
          }
      };
      var json = JsonConvert.SerializeObject(message);
      var data = new StringContent(json, Encoding.UTF8, "application/json");

      var response = await client.PostAsync(webhookUrl, data);
      var result = await response.Content.ReadAsStringAsync();
      return response.IsSuccessStatusCode;
  }

### 如何配置飞书机器人进行事件订阅并接收消息 #### 1. 创建自定义机器人 为了使飞书机器人能够接收到特定类型的事件,首先需要创建一个自定义机器人。进入飞书管理后台,在应用列表中找到“自定义机器人”,点击新建。 #### 2. 设置Webhook URL 在创建过程中,指定一个外部服务作为回调地址(Webhook),当满足设定条件的消息触发时,飞书会向这个URL发送HTTP POST请求。确保所填入的公网地址正确无误,并附带资源路径 `/webhook/card`[^3]。 #### 3. 订阅感兴趣的事件类型 对于想要监听的具体事件(比如群聊中的@提取消息),应当在机器人的高级设置里勾选相应的选项。“所有群中@我的消息”的选择意味着每当有成员在一个群里提到该机器人时,它就能感知到这一动作[^2]。 #### 4. 处理传入的数据包 一旦成功设置了上述参数,每当发生已订阅的事件时,服务器将会收到来自飞书通知数据包。这些JSON格式的信息包含了关于原消息的各种元数据以及正文内容。开发者可以根据实际需求解析这部分信息来执行后续操作,如转发给其他用户或处理业务逻辑。 ```javascript // 示例代码展示如何使用Node.js处理来自飞书的POST请求 const express = require('express'); const bodyParser = require('body-parser'); let app = express(); app.use(bodyParser.json()); app.post('/your-webhook-url', function(req, res){ console.log("Received message:", req.body); // 对于每条接收到的消息做进一步处理... }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拚忘vie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值