首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >飞书开放平台-查询已读消息示例

飞书开放平台-查询已读消息示例

作者头像
加多
发布于 2023-01-15 01:17:09
发布于 2023-01-15 01:17:09
1.1K00
代码可运行
举报
文章被收录于专栏:Java编程技术Java编程技术
运行总次数:0
代码可运行

前言

本文我们基于飞书开放平台提供的服务端SDK,展示下如何查询一个消息有哪些人已读了。

代码示例

本文我们基于飞书开平提供的go-sdk进行展示,go-sdk的github地址为: https://github.com/larksuite/oapi-sdk-go

代码示例如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package main
import (
    "context"
    "errors"
    "fmt"
    "github.com/larksuite/oapi-sdk-go/v3"
    "github.com/larksuite/oapi-sdk-go/v3/core"
    "github.com/larksuite/oapi-sdk-go/v3/service/im/v1"
    "os"
)

// GET /open-apis/im/v1/messages/:message_id/read_users

func SendTextMsg2(client *lark.Client) (string, error) {
    content := larkim.NewTextMsgBuilder().
        Text("hello,world").
        Build()

    resp, err := client.Im.Message.Create(context.Background(), larkim.NewCreateMessageReqBuilder().
        ReceiveIdType(larkim.ReceiveIdTypeChatId).
        Body(larkim.NewCreateMessageReqBodyBuilder().
            MsgType(larkim.MsgTypeText).
            ReceiveId("oc_ccd2e318ba972a9d5d282e4da2a3d160").
            Content(content).
            Build()).
        Build())

    if err != nil {
        return "", err
    }

    if !resp.Success() {
        return "", errors.New(fmt.Sprintf("%d,%s,%s", resp.Code, resp.Msg, resp.RequestId()))
    }

    fmt.Println(resp.Data.MessageId)
    fmt.Println(larkcore.Prettify(resp))
    fmt.Println(resp.RequestId())
    return *resp.Data.MessageId, nil
}

func ReadUsersMsg(client *lark.Client, msgID string) {
    // 创建请求对象
    req := larkim.NewReadUsersMessageReqBuilder().
        MessageId(msgID).
        UserIdType(larkim.UserIdTypeOpenId).
        PageSize(5).
        Build()

    // 循环查询
    for {
        // 发起请求
        resp, err := client.Im.Message.ReadUsers(context.Background(), req)

        // 处理错误
        if err != nil {
            fmt.Println(err)
            return
        }

        // 服务端错误处理
        if !resp.Success() {
            fmt.Println(resp.Code, resp.Msg, resp.RequestId())
            return
        }

        // 业务处理
        fmt.Println(larkcore.Prettify(resp))

        // 是否还有分页数据,没有则直接返回
        if *resp.Data.HasMore == false {
            return
        }

        // 构造下一次请求体
        req = larkim.NewReadUsersMessageReqBuilder().
            MessageId("om_d40652dbee7f23b01cba4348102dedd1").
            UserIdType(larkim.UserIdTypeOpenId).
            PageSize(5).
            PageToken(*resp.Data.PageToken). // 下一次查询
            Build()
    }
}

func main() {
    // 创建 Client
    var appID, appSecret = os.Getenv("APP_ID"), os.Getenv("APP_SECRET")
    client := lark.NewClient(appID, appSecret)

    // 发送消息
    msgID, err := SendTextMsg2(client)
    if err != nil {
        fmt.Println(err)
        return
    }

    // 读取已读信息
    ReadUsersMsg(client, msgID)

    // 读取已读信息
    ReadUsersMsg(client, msgID)

}

debug运行,然后再ReadUsersMsg处断点,然后再飞书上读消息后,继续运行结果如下:

image.png

配套讲解视频

https://www.bilibili.com/video/BV1JY41197rp/?spm_id_from=333.999.0.0&vd_source=7ccc270970b6d95e716350d3f0ebff69

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-01-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
android采用videoView播放视频(包装)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/117001.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/06
4930
Android VideoView 视频播放完成例子(进度条,播放时间,暂停,拖动)
中国广东省深圳市望海路半岛城邦三期 518067 +86 13113668890 <netkiller@msn.com>
netkiller
2018/11/09
15K0
Android 圆形图片
**绝对布局:通过直接给定控件起始坐标 ( x , y ) 和 ( w , l ) ,来生成控件。 圆形头像:CircleImageView的使用 **
圆号本昊
2021/09/24
1.2K0
Android 圆形图片
android使用Activity
第一个例子,显示网址 首先创建工程 按照提示填入 我使用的是2.3版本,所以Min SDK Version填10 修改/res/layout/下main.xml文件 加入按钮 对应的程序文件如下:
cloudskyme
2018/03/20
1.2K0
android使用Activity
SharePreferences用法
开发应用需要保存一些配置参数,对于Android应用来说,我们最适合采用SharedPreferences保存数据,它是一个轻量级的存储类,特别适合用于保存软件配置参数。 ---- 如何使用SharePreferences保存数据 使用SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data//shared_prefs目录下。例如: SharedPreferences sharedPreferences =getSharedPrefere
Carson.Ho
2019/02/22
3580
Carson带你学Android:数据存储SharePreferences学习指南
除了SharedPreferences,Android常见的数据存储方式主要包括:
Carson.Ho
2022/03/24
4930
Carson带你学Android:数据存储SharePreferences学习指南
Android入门教程(三)
FrameLayout 布局的使用效果,就是所有布局里的控件都会自动往左上角放置。所有的元素都会依次覆盖上一次的元素。那么我们现在写代码试试看:
达达前端
2022/04/28
7430
android之动画popowindows
废话不多说,先看效果图: 这是主Activity代码: public class RollActivity extends Activity {   private View view;  
xiangzhihong
2018/01/29
6090
Android任务管理器的设计实现
项目结构如图,MyToast类是自定义的Toast类,MainActivity是主要Activity类
SmileNicky
2019/01/17
1.9K0
Android系统五大布局详解Layout
我们知道Android系统应用程序一般是由多个Activity组成,而这些Activity以视图的形式展现在我们面前,视图都是由一个一个的组件构成的。组件就是我们常见的Button、TextEdit等等。那么我们平时看到的Android手机中那些漂亮的界面是怎么显示出来的呢?这就要用到Android的布局管理器了,网上有人比喻的很好:布局好比是建筑里的框架,组件按照布局的要求依次排列,就组成了用于看见的漂亮界面了。
全栈程序员站长
2022/08/31
3.1K0
Android入门教程(三)-安卓UI文档教程
对Android五大布局的描述,分别是 FrameLayout (框架布局),LinearLayout (线性布局),AbsoluteLayout (绝对布局),RelativeLayout (相对布局),TableLayout (表格布局)。
达达前端
2022/04/28
7280
android之WIFI小车编程详述
有了前几篇wifi模块eps8266的使用,单片机设置eps8266程序,android TCP客户端,现在就做一个wifi小车 先上图 小车是四个轮子的,每个轮子上都有电机驱动,前进后退的时候四个轮
杨奉武
2018/04/12
1.6K0
android之WIFI小车编程详述
Android弹幕功能实现,模仿斗鱼直播的弹幕效果
本文介绍了弹幕功能的实现思路,并分析了在直播场景下,如何利用DanmakuFlameMaster库实现弹幕功能。首先,文章介绍了弹幕功能的基本实现原理,然后详细阐述了DanmakuFlameMaster库的使用方法,最后通过一个具体的实例展示了弹幕功能的实现过程。
用户1158055
2018/01/08
4.6K0
Android弹幕功能实现,模仿斗鱼直播的弹幕效果
【Android从零单排系列三十二】《Android布局介绍——AbsoluteLayout》
小伙伴们,在上文中我们介绍了Android布局TableLayout,本文我们继续盘点介绍Android开发中另一个常见的布局,绝对布局AbsoluteLayout。
再见孙悟空_
2023/07/17
3120
RadioButton、CheckBox与ToggleButton
1.RadioButton RadioButton被称作为单选框,通常都是以组的形式出现,可以在一组控件中选择一个。 RadioButton的使用首先需要加入<RadioGroup/>,在这个组中,我们进行单选按钮的声明。 1 <RadioGroup 2 android:id="@+id/radioGroup" 3 android:layout_width="wrap_content" 4 android:layout_height="wrap_c
水击三千
2018/02/27
1.1K0
android多线程下载2
在上一集中,我们简单介绍了如何创建多任务下载,但那种还不能拿来实用,这一集我们重点通过代码为大家展示如何创建多线程断点续传下载,这在实际项目中很常用. main.xml: <?xml version=
xiangzhihong
2018/01/26
8850
多媒体开发
纵观移动市场上的手机,特别是智能手机,大家一定会发现现在的手机已经不仅仅限接听电话、收发短信、浏览网页之类的简单功能了。手机已经发展成一个集照相机、音乐播放器、视频播放器、网页浏览器等功能于一体的智能设备。因此为手机提供音、视频的录制、播放以及照相等功能已经成为软件开发中必不可少的内容。Android原生提供了对MP3、WAV 、MP4和3GP等音频、视频格式支持的组件API,通过这些API和组件我们可以非常容易地实现强大的音频和视频功能。在本章节中我们就结合具体的案例针对Android中的多媒体开发相关的内容进行深入讲解,这部分内容包括音乐的播放、音效的播放、视频的播放、音频的录制以及拍照等功能的实现。
张哥编程
2024/12/17
5080
多媒体开发
相关推荐
android采用videoView播放视频(包装)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档