首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C# 实现腾讯云 IM 常用 REST API 之会话管理

C# 实现腾讯云 IM 常用 REST API 之会话管理

作者头像
初九之潜龙勿用
发布于 2024-06-20 05:31:58
发布于 2024-06-20 05:31:58
35500
代码可运行
举报
文章被收录于专栏:技术文章技术文章
运行总次数:0
代码可运行

关于腾讯 IM REST API

REST API 是腾讯即时通信 IM 提供给服务端的一组 HTTP 后台管理接口,如消息管理、群组管理、用户管理、会话管理等等。REST API 接口较为原始,管理能力强大。另外,为了安全性,REST API 仅提供 HTTPS 接口,本文将主要介绍常用的会话管理API。

开发前准备

(1)开发前需要申请 SDK 开发者 ID 及密钥,如何获取请参照如下链接:

腾讯IM即时通信控制台

(2)调用 REST API 之前,需要生成 UserSig ,UserSig 是用户登录即时通信 IM 的密码,其本质是对 UserID 等信息加密后得到的密文,如何生成 UserSig 请参照我的文章《C# 生成腾讯云 IM 之 TLSSigAPIv2 UserSig》,通过 TLSSigAPIv2 类进行创建,请参考如下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
string SDKAppId="申请的SDKAppID";  
string SDKAppIdSecret="申请的SDKAppIdSecret";  
string AppAdminId="IM平台超级管理员UserID";

TLSSigAPIv2 sig = new TLSSigAPIv2(int.Parse(SDKAppId),SDKAppIdSecret);
string _sig = sig.GenSig(AppAdminId);

(3)SDKAppID 及 SDKAppIdSecret 的获取在后续范例中均封装为 TCAcount 类,创建及访问示例如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
TCAcount tca = new TCAcount();
string SDKAppId=tca.SDKAppId;
string SDKAppIdSecret=tca.SDKAppIdSecret;

(4) 用到两个时间戳函数,代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public string getTimestamp(int seconds)
{
        TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
        return Convert.ToInt64(ts.TotalSeconds + seconds).ToString();
}
public string GetTimeStamp(DateTime dtime)
{
        TimeSpan tspan = dtime.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0, 0);
        return Convert.ToInt64(tspan.TotalSeconds).ToString();
}

(5) WebService 类实现访问 REST API URL 地址并 POST 数据,以获取返回结果 Json 的功能。具体实现请参照我的文章《C# 实现访问 Web API Url 提交数据并获取处理结果》

范例运行环境

操作系统: Windows Server 2019 DataCenter

.net版本: .netFramework4.0 或以上

开发工具:VS2019 C#

常用会话管理API

查询账号会话总未读数

GetC2C_UnreadMsgNum方法可以在 IM 应用系统内查询特定账号的单聊总未读数(包含所有的单聊会话)或者单个单聊会话的未读数。其关键属性方法说明如下:

序号

参数

类型

说明

1

To_Account

string

要查询的用户 UserID

2

Peer_Account

string[]

要查询的单聊会话对端的用户 UserId 若要查询单个会话的未读数,该字段必填 该数组最大大小为10 注:如果传递null,则表示管理员查询未读的单聊消息的总数。只填 To_Account 即可。

现代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public string GetC2C_UnreadMsgNum(string To_Account, string[] Peer_Account)
{
                    ArrayList data = new ArrayList();
                    TCAcount tca = new TCAcount();
                    //请求地址
                    string settingUrl = "https://console.tim.qq.com/v4/openim/get_c2c_unread_msg_num?sdkappid={0}&identifier={1}&usersig={2}&random={3}&contenttype=json";
                    string AppAdminId = "administrator";
                    Random rnd = new Random();
                    string random = rnd.Next(0, 429496729).ToString();
                    TLSSigAPIv2 sig = new TLSSigAPIv2(int.Parse(tca.SDKAppId), tca.SDKAppIdSecret);
                    string _sig = sig.GenSig(AppAdminId);
                    string peer = "";
                    if (Peer_Account!=null)
                    {
                        foreach(string peeraccount in Peer_Account)
                        {
                            peer += "\"" + peeraccount + "\",";
                        }
                        if (peer != "")
                        {
                            peer = ",\"Peer_Account\":[" +peer.Substring(0, peer.Length - 1)+"]";
                        }
                    }
                    string content = "{\"To_Account\":\"" + To_Account+"\"" + peer + "}";
                    settingUrl = string.Format(settingUrl, tca.SDKAppId, AppAdminId, _sig, random);
                    WebService ws = new WebService();

                    string resultStr = ws.GetResponseResult(settingUrl, Encoding.UTF8, "POST", content);
                    return resultStr;
                }
查询单聊会话消息记录

GetRoamMsg 方法使管理员可以在 IM 应用系统内按照时间范围,以会话其中一方的角度查询单聊会话的消息记录。其关键属性方法说明如下:

序号

参数

类型

说明

1

From_Account

string

会话其中一方的 UserID,以该 UserID 的角度去查询消息。

2

To_Account

string

会话的另一方 UserID

3

MaxCnt

int

请求的消息条数

4

MinTime

string

请求的消息时间范围的最小值(单位:秒)

5

MaxTime

string

请求的消息时间范围的最大值(单位:秒)

6

LastMsgKey

string

上一次拉取到的最后一条消息的 MsgKey,续拉时需要填写该字段

现代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public string GetRoamMsg(string From_Account,string To_Account,int MaxCnt,string MinTime,string MaxTime,string LastMsgKey)
{
                    ArrayList data = new ArrayList();
                    TCAcount tca = new TCAcount("turing");
                    //请求地址
                    string settingUrl = "https://console.tim.qq.com/v4/openim/admin_getroammsg?sdkappid={0}&identifier={1}&usersig={2}&random={3}&contenttype=json";
                    string AppAdminId = "administrator";
                    Random rnd = new Random();
                    string random = rnd.Next(0, 429496729).ToString();
                    TLSSigAPIv2 sig = new TLSSigAPIv2(int.Parse(tca.SDKAppId), tca.SDKAppIdSecret);
                    string _sig = sig.GenSig(AppAdminId);
                    string mintime = GetTimeStamp(DateTime.Parse(MinTime));
                    string maxtime = GetTimeStamp(DateTime.Parse(MaxTime));
                    if (LastMsgKey != "")
                    {
                        LastMsgKey = ",\"LastMsgKey\": \"" + LastMsgKey + "\"";
                    }
                    string content = "{\"From_Account\":\"" + From_Account + "\",\"To_Account\":\"" + To_Account + "\",\"MaxCnt\":" + MaxCnt.ToString() + ",\"MinTime\":"+mintime+",\"MaxTime\":"+maxtime+LastMsgKey+"}";
                    settingUrl = string.Format(settingUrl, tca.SDKAppId, AppAdminId, _sig, random);
                    WebService ws = new WebService();

                    string resultStr = ws.GetResponseResult(settingUrl, Encoding.UTF8, "POST", content);
                    return resultStr;
}
下载最近会话记录

get_history 方法可使管理员获取最近7天中某天某小时的所有单发或群组消息记录的下载地址。其关键属性方法说明如下:

序号

参数

类型

说明

1

yyyymmddhh

string

需要下载的消息记录的时间段(北京时间)。2015120121表示获取2015年12月1日21:00 - 21:59的消息的下载地址。该字段需精确到小时。每次请求只能获取某天某小时的所有单发或群组消息记录

2

chattype

string

消息类型,C2C 表示单发消息, Group 表示群组消息,默认为"C2C"

实现代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public string get_history(string yyyymmddhh,string chattype= "C2C")
{
                    ArrayList data = new ArrayList();
                    TCAcount tca = new TCAcount();
                    //请求地址
                    string settingUrl = "https://console.tim.qq.com/v4/open_msg_svc/get_history?sdkappid={0}&identifier={1}&usersig={2}&random={3}&contenttype=json";
                    string AppAdminId = "administrator";
                    Random rnd = new Random();
                    string random = rnd.Next(0, 429496729).ToString();
                    TLSSigAPIv2 sig = new TLSSigAPIv2(int.Parse(tca.SDKAppId), tca.SDKAppIdSecret);
                    string _sig = sig.GenSig(AppAdminId);
                    string content = "{\"ChatType\":\"" + chattype + "\",\"MsgTime\":\"" + yyyymmddhh + "\"}";

                    settingUrl = string.Format(settingUrl, tca.SDKAppId, AppAdminId, _sig, random);
                    WebService ws = new WebService();

                    string resultStr = ws.GetResponseResult(settingUrl, Encoding.UTF8, "POST", content);
                    return resultStr;
}

小结

腾讯云 IM REST API 提供了非常丰富与完善的管理功能列表,在这里我们仅是以满足自身应用需要而提取的常用帐户管理功能,更多详情请参照如下链接:

REST API 接口列表 | 腾讯云

本文代码仅供您参考使用,您可以参照官方文档开发出更加贴合自身需求的应用,感谢您的阅读,希望本文能够对您有所帮助。

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C# 实现腾讯云 IM 常用 REST API 之消息管理
REST API 是腾讯即时通信 IM 提供给服务端的一组 HTTP 后台管理接口,如消息管理、群组管理、用户管理、会话管理等等。REST API 接口较为原始,管理能力强大。另外,为了安全性,REST API 仅提供 HTTPS 接口,本文将主要介绍常用的消息管理API。
初九之潜龙勿用
2024/06/20
3780
C# 实现腾讯云 IM 常用 REST API 之帐户管理
REST API 是腾讯即时通信 IM 提供给服务端的一组 HTTP 后台管理接口,如消息管理、群组管理、用户管理、会话管理等等。REST API 接口较为原始,管理能力强大。另外,为了安全性,REST API 仅提供 HTTPS 接口。
初九之潜龙勿用
2024/06/20
3860
C# 实现腾讯云 IM 常用 REST API 之群组管理
REST API 是腾讯即时通信 IM 提供给服务端的一组 HTTP 后台管理接口,如消息管理、群组管理、用户管理、会话管理等等。REST API 接口较为原始,管理能力强大。另外,为了安全性,REST API 仅提供 HTTPS 接口,本文将主要介绍常用的群组管理API。
初九之潜龙勿用
2024/06/20
4400
C# 生成腾讯云 IM 之 TLSSigAPIv2 UserSig
腾讯微信已经成为当今绝大多数用户必不可少的聊天和通讯工具,腾讯也是国内最早也是最大的即时通信开发商 。腾讯云将高并发、高可靠的即时通信能力以 SDK 和 REST API的形式进行开放,推出即时通信 IM 产品,可以通过简易的方式将腾讯云提供的 IM SDK 集成进自有应用中,配合服务端 REST API 调用,即可轻松拥有微信一样强大的即时通信能力。
初九之潜龙勿用
2024/06/20
4370
云通信IM登录鉴权解密
云通信IM的前身是QQ,我们抽离QQ的核心模块,将其整合成适合各终端接入的 IM SDK以及后台服务。
linpeiyang@云通信专项团队
2020/11/22
4.1K0
最佳实践 | 即时通信IM接入AI服务,高效构建智能聊天能力
随着ChatGPT在全球范围的爆火,AI已成为当下开发者最为关注的焦点,国内各大厂商也纷纷跟进,推出了各自的大模型应用与产品。很多应用都在尝试与AI结合,寻找新的发力点。而新一代大语言模型的强大对话交流能力与各类即时通信场景天然契合,这为IM与AI结合带来了广阔的想象空间。
腾讯云音视频
2023/04/23
4.1K0
最佳实践 | 即时通信IM接入AI服务,高效构建智能聊天能力
体验腾讯云音视频
首次开通腾讯云音视频免费赠送10000分钟的免费试用套餐包,包含了视频通话、语音通话、视频互动直播、语音互动直播这些模块,另外说明一下腾讯云音视频是按照 1 : 2 : 4 : 9 : 16 : 36 分别抵扣语音、标清、高清、超高清、2K和4K时长,例如1分钟高清视频时长扣除4分钟免费套餐包时长。
就叫7620521吧
2022/11/25
8.5K0
C# 结合 JS 暴改腾讯 IM SDK Demo
腾讯云即时通信 IM SDK 提供了单聊、群聊、关系链、消息漫游、群组管理、资料管理、直播弹幕等功能,并提供完备的 App 接入及管理接口。目前的下载链接请参照如下:
初九之潜龙勿用
2024/06/20
2540
C# 结合 JS 暴改腾讯 IM SDK Demo
腾讯云即时通信 IM 服务端 SDK for PHP
使用本扩展前需要登录 即时通信 IM 控制台 创建应用,配置管理员、获取 app_id、Key 等关键信息
hedeqiang
2019/12/17
13.4K4
云通信IM - 第三方回调简单接收配置
为了更好的管理和控制App,IM提供了第三方回调功能,配置使用后,即时通信IM会向App后台服务器发送请求,App后台可以根据收到的回调处理业务逻辑、数据处理存储、功能控制干预,比如禁止该消息下发、用户登录状态的实时变更等。即时通信 IM 目前支持的回调请参见 回调命令列表
liyao
2021/02/21
2.2K0
即时通信IM-使用连接池降低IM后台API访问时延
腾讯云服务团队曾收到客户反馈:在使用SDK时,调用IM后台接口偶现超时的现象。在经过腾讯云客服人员排查后,发现部分用户请求并未到达IM后台。此时往往会引导从客户侧网络开始排查,其中有一项优化措施是建议客户端使用长连接+连接池的调用方式。本文会详细介绍连接池技术的原理和使用方式,并通过实验验证在调用REST API时的优化效果。
yiwei
2020/11/13
1.9K0
云通信-即时通信IM关系链使用指引
从控制台->功能配置->登录与消息 打开好友控制开关,打开开关后,非好友间发消息会失败,消息界面默认显示红色感叹号图标,SDK会收到20009的错误码
linpeiyang@云通信专项团队
2020/11/02
3.3K0
微信小程序即时通讯开发记录(结合通讯云IM)
安装完依赖以后在项目目录的utils目录下创建tencentIM目录,用于存放关于即时通讯IM相关的js文件。
IT工作者
2022/02/22
6.3K1
【腾讯云上实践】内容审核实践 | 即时通讯 IM 场景
一些用户使用即时通信 IM 产品开发实现自己的聊天业务,但对于聊天之间的消息无法很好的去管控内容是否违规。
TCS-F
2021/10/09
5K0
【腾讯云上实践】内容审核实践 | 即时通讯 IM 场景
内容审核实践 | 即时通讯 IM 场景
一、概述 一些用户使用即时通信 IM 产品开发实现自己的聊天业务,但对于聊天之间的消息无法很好的去管控内容是否违规。 基于数据万象 CI ,对象存储 COS 推出的内容审核功能,可以帮助用户实现IM消息的审核服务,在发送出来的消息是违规内容时,不允许发送(先审后发)。 整体流程可看下图: 内容审核的处理主要在步骤6、7、8。 步骤6:发送审核请求对消息内容进行审核。 步骤7:返回处理结果。 步骤8:根据结果判断是否发送消息或是否撤回、删除消息。 实际聊天效果如下图: 二、准备工作 (一)即
云存储
2021/09/28
1.2K0
C# 实现腾讯云点播之媒体管理常用接口
腾讯云点播(Video On Demand)服务基于多年技术积累与基础设施建设,为有音视频应用相关需求的客户提供包括音视频存储管理、音视频转码处理、音视频加速播放、音视频加密、音视频AI能力的一站式解决方案,可通过云平台进行上传后的媒资管理。
初九之潜龙勿用
2024/06/20
2090
C# 实现腾讯云点播之媒体上传常用接口
腾讯云点播(Video On Demand)服务基于多年技术积累与基础设施建设,为有音视频应用相关需求的客户提供包括音视频存储管理、音视频转码处理、音视频加速播放、音视频加密、音视频AI能力的一站式解决方案,可通过云平台进行上传后的媒资管理。
初九之潜龙勿用
2024/06/20
3290
腾讯云IM Flutter-原生混合开发方案接入实践
开始之前,您需要了解腾讯云IM Flutter SDK及TUIKit的用法;及Flutter-原生混合开发原理。
腾讯云音视频
2022/11/17
7.9K1
全网首家!腾讯云IM Web云端搜索“尝鲜”体验(全流程) | 技术创作特训营第三期
摘要:腾讯云即时通讯IM从更好地满足客户需求、更好地为客户服务的角度出发,经过一年的调研、立项、开发、内测等流程,正式上线Web 端消息搜索功能--云端搜索,也让腾讯云成为国内外首家提供此项能力的即时通信IM厂商!
三掌柜
2023/11/29
98810
全网首家!腾讯云IM Web云端搜索“尝鲜”体验(全流程) | 技术创作特训营第三期
小程序腾讯云短信接口服务
做个小程序需要发送验证码,短信接口是腾讯云的。了解官方的sdk和demo发现对于我这种浅层次的人来说太麻烦了,然后就从网上找了一版.
用户5907943
2019/07/26
38.9K1
推荐阅读
相关推荐
C# 实现腾讯云 IM 常用 REST API 之消息管理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验