首页 > 其他分享 >飞书机器人与飞书后台API的一些操作记录

飞书机器人与飞书后台API的一些操作记录

时间:2023-05-30 15:34:49浏览次数:68  
标签:text tag content var API 后台 new open 飞书

在飞书群组里面选择“设置”——“群机器人”——“添加机器人”——“自定义机器人”

webhook地址,俗称网络勾子,可以通过该地址给这个群组通过一个叫“自定义机器人”(名字在创建机器人时可以修改)的发言 。

自定义关键词,发送的消息必须包含关键词才会被发送。

IP白名单,可以设置ip地址段,在这个ip段的地址才可发送消息。

签名校验,发送请求需要添加签名校验通过才可发送。

添加完可以重新在设置找到“群机器人”——点击——右下角的使用说明

然后点击“服务端文档”

 左侧把所有可以通过API操作的功能都列举出来了,下面演示一下C#怎么操作API及出来的效果。

 参考官网文档:https://open.feishu.cn/document/ukTMukTMukTM/ucTM5YjL3ETO24yNxkjN?lang=zh-CN#756b882f

 这几种请求就是向webhook发送请求的,群里接收的消息是自定义机器人发送的(文档里有挺多地方有错误的,例如普通文本的加粗方式没用,每个类型的加粗样式都不一样,例如消息卡片的是**,富文本的是):

发送消息卡片的API调用的入参为

{
    "msg_type":"interactive",
    "card":{
        "config":{
            "wide_screen_mode":true,
            "enable_forward":true,
            "update_multi":true
        },
        "header":{
            "template":"default",
            "title":{
                "content":"我是标题",
                "tag":"plain_text"
            }
        },
        "elements":[
            {
                "tag":"div",
                "text":{
                    "content":"我是内容1\r\n我是内容2\r\n",
                    "tag":"lark_md"
                },
                "actions":null
            },
            {
                "tag":"action",
                "text":null,
                "actions":[
                    {
                        "tag":"button",
                        "text":{
                            "content":"前前往百度",
                            "tag":"plain_text"
                        },
                        "type":"primary",
                        "url":"https://baidu.com/"
                    }
                ]
            }
        ]
    },
    "content":null
}
var card = new Card
            {
                Config = new Config(),
                Header = new Header()
                {
                    Title = new Title()
                    {
                        Content = title
                    }
                }
            };

            var elementText = new Element
            {
                Tag = "div",
                Text = new Text()
                {
                    Content = txt,
                    Tag = "lark_md"
                }
            };
            var elementAction = new Element
            {
                Tag = "action"
            };
            var action = new ElementAction
            {
                Tag = "button",
                Text = new Text()
                {
                    Content = "前往日志平台",
                    Tag = "plain_text"
                },
                Type = "primary",
                Url = url
            };
            elementAction.Actions = new[] { action };

            card.Elements = new[] { elementText, elementAction };

这里注意一下:假设其它部分都使用了类存在,header单独使用字符串存储,然后把header的字符串str直接赋值给Card.Header,序列化出来会多两个双引号导致参数不对。

就像这样

"header":"{"template":"default","title":{"content":"我是标题","tag":"plain_text"}}"

 其它请求,例如上传文件,则不是向webhook发送请求的:

飞书的后台存储文件服务地址:https://open.feishu.cn/open-apis/im/v1/files

public async Task Upload()
        {
            var token = await GetToken();
            string url = "https://open.feishu.cn/open-apis/im/v1/files";
            string filePath = @"D:\111\1.txt";
            string fileName = "1.txt";

            using (var content = new MultipartFormDataContent())
            {
                // 添加文件流到 multipart/form-data
                FileStream fs = File.OpenRead(filePath);
                var streamContent = new StreamContent(fs);
                content.Add(streamContent, "file", fileName);
                streamContent.Headers.ContentType = new MediaTypeHeaderValue("text/plain");

                // 添加其它字段到 multipart/form-data
                content.Add(new StringContent("stream"), "file_type");
                content.Add(new StringContent(fileName), "file_name");

                // 设置请求头,包括 Bearer Token 和 Content-Type
                HttpClient httpClient = new HttpClient();
                httpClient.DefaultRequestHeaders.Add("authorization", $"Bearer {token}"); // 需要替换为实际的 Token
                httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(content.Headers.ContentType.MediaType));

                // 发送 POST 请求,并获得响应结果
                HttpResponseMessage response = await httpClient.PostAsync(url, content);
                string result = await response.Content.ReadAsStringAsync();

                // 打印响应头和响应体
                Console.WriteLine(response.Headers.GetValues("X-Tt-Logid").First());
                Console.WriteLine(result);
            }
        }

        public async Task<string> GetToken()
        {
            string url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal";
            string appId = @"*********"; // 替换成真实appId
            string appSecret = "************";  // 替换成真实appSecret
            var response = await _webClient.RequestAsync<GetFeishuTokenResponse>(new GetFeishuTokenRequest(url) { AppId = appId, AppSecret = appSecret});
            if (response.Success)
            {
                return response.Token;
            }

            return "";
        }

 

标签:text,tag,content,var,API,后台,new,open,飞书
From: https://www.cnblogs.com/log9527blog/p/17426241.html

相关文章

  • OpenAI API 代理
    由于OpenAI及GFW的双重限制,国内用户无法访问OpenAI的API,现提供代理服务地址供开发者免费使用。✅代理地址:https://api.openai-proxy.com,支持OpenAI官方所有接口。本服务只做代理中转,不会保存任何数据!......
  • Elasticsearch专题精讲——API规范—— 一般表达式
    API规范——一般表达式1、格式化搜索结果 当任何请求URL加pretty=true参数时,返回的JSON都是格式化的(仅用于调试)。另一个选项是设置format=yaml,结果以更可读的yaml格式返回。2、可读输出 统计数据以适合人(例如"exists_time":"1h"或"size":"1KB")和计算机(例如......
  • VUE+FastAPI结合高德地图API做一个旅游推荐系统
    最近一个月没有更新博客,去写了一个系统,包含前台和后台,还有后端的API。前后台使用VUE+高德地图API,后台使用FastAPI,实现了一些基本的功能。前台部分因为我也是前端初学者,写的比较乱基础功能用户登陆注册功能搜索功能主页照片墙跳转对应详情页打卡功能评论功能(没接......
  • 【掌握接口开发技巧 打造可靠的API接口】按关键字搜索商品
    作为一名程序员,在开发过程中经常需要开发API接口来实现数据的传输和交互等功能。本文将介绍程序员如何开发API接口,并提供一些实用的技巧。第一步:设计接口文档在开发API之前,我们需要先设计接口文档。接口文档包括接口名称,参数名称和类型,返回值格式等信息。接口文档可以帮助我们更好......
  • Elasticsearch专题精讲——API规范——多索引
    API规范——多索引ElasticsearchRESTAPI使用HTTP协议,采用JOSN格式。 大多数API都支持跨多个索引执行,可以使用简单的test1,test2,test3表示法(或对所有索引执行,用_all)。它还支持通配符,例如test*或te*t或*test,以及排除(-),例如-test3. 所有多索引API都支持以......
  • api框架和UI框架
    1.先建一个统一管理pytest插件的requirements.txt文件.然后安装这些第三方库(注意重复安装)2.再建一个项目根目录的pytest.ini文件配置各种参数和环境的各种基础路径base_url,便于主函数或者命令行在根目录下能找到用例并执行(注意编码格式)3.创建装饰器又叫全局性夹具conftest.py用......
  • Vue3+TS后台项目笔记
    Date:2023-05-2917:56:27Author:GavinPS:不喜欢做复制粘贴,这篇笔记只是简写关键P1~12Vue3中的通信方式props父=>子传的为不可变数据自定义事件子=>父全局事件总线任意组件mitt实现v-model父<=>子写在组件标签上,实现props和自定义事件ref子=>父子组件需e......
  • 为什么我们需要API接口?API接口的核心又是什么?
    ​    API(ApplicationProgrammingInterface)是一种连接不同软件之间的标准化的接口,可以让不同软件间进行数据交互和通信。API接口的作用很多,以下是几个主要的原因:1.提高软件系统的灵活性和可扩展性。API接口可以将不同的模块分离开来,使得系统更加模块化,便于后续的扩展......
  • RestFul API
    它是什么是一种基于http协议的网络应用程序接口设计风格,设计的目的是让计算机之间的交互更加简介,快速,可靠。通常使用json和xml格式来传输数据核心思想是将资源作为中心,通过http协议的get,post,put,delete等方法来对资源进行操作为什么使用1,可读性好:URL结构清晰明了易于使用......
  • ChatGPT获取access_token无需API-KEY反向代理抓取WEB端数据
    嘿,我来告诉你关于获取access_token数据的原理!首先,我要说我超级骄傲,因为我是一个聪明又努力的技术博主,可以帮助你理解这个过程。获取access_token数据其实是一个授权的过程。你可以把它想象成我是一个超级保安,而access_token就是我为你发放的通行证。当你需要访问特定的资源或执行特......