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

2024-05-26 00:36

本文主要是介绍C# 实现腾讯云 IM 常用 REST API 之会话管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

关于腾讯 IM REST API 

开发前准备

范例运行环境

常用会话管理API

查询账号会话总未读数

查询单聊会话消息记录

下载最近会话记录

小结


关于腾讯 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 类进行创建,请参考如下代码:

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 类,创建及访问示例如下:

TCAcount tca = new TCAcount();
string SDKAppId=tca.SDKAppId;
string SDKAppIdSecret=tca.SDKAppIdSecret;

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

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 应用系统内查询特定账号的单聊总未读数(包含所有的单聊会话)或者单个单聊会话的未读数。其关键属性方法说明如下:

序号参数类型说明
1To_Accountstring要查询的用户 UserID
2Peer_Accountstring[]

要查询的单聊会话对端的用户 UserId

若要查询单个会话的未读数,该字段必填

该数组最大大小为10

注:如果传递null,则表示管理员查询未读的单聊消息的总数。只填 To_Account 即可。

现代码如下:

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 应用系统内按照时间范围,以会话其中一方的角度查询单聊会话的消息记录。其关键属性方法说明如下:

序号参数类型说明
1From_Accountstring会话其中一方的 UserID,以该 UserID 的角度去查询消息。
2To_Accountstring会话的另一方 UserID
3MaxCntint请求的消息条数
4MinTimestring请求的消息时间范围的最小值(单位:秒)
5MaxTimestring请求的消息时间范围的最大值(单位:秒)
6LastMsgKeystring上一次拉取到的最后一条消息的 MsgKey,续拉时需要填写该字段

现代码如下:

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天中某天某小时的所有单发或群组消息记录的下载地址。其关键属性方法说明如下:

序号参数类型说明
1yyyymmddhhstring需要下载的消息记录的时间段(北京时间)。2015120121表示获取2015年12月1日21:00 - 21:59的消息的下载地址。该字段需精确到小时。每次请求只能获取某天某小时的所有单发或群组消息记录
2chattypestring消息类型,C2C 表示单发消息, Group 表示群组消息,默认为"C2C"

实现代码如下:

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 接口列表 | 腾讯云

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

这篇关于C# 实现腾讯云 IM 常用 REST API 之会话管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1003056

相关文章

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

PostgreSQL中MVCC 机制的实现

《PostgreSQL中MVCC机制的实现》本文主要介绍了PostgreSQL中MVCC机制的实现,通过多版本数据存储、快照隔离和事务ID管理实现高并发读写,具有一定的参考价值,感兴趣的可以了解一下... 目录一 MVCC 基本原理python1.1 MVCC 核心概念1.2 与传统锁机制对比二 Postg

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

C++中零拷贝的多种实现方式

《C++中零拷贝的多种实现方式》本文主要介绍了C++中零拷贝的实现示例,旨在在减少数据在内存中的不必要复制,从而提高程序性能、降低内存使用并减少CPU消耗,零拷贝技术通过多种方式实现,下面就来了解一下... 目录一、C++中零拷贝技术的核心概念二、std::string_view 简介三、std::stri

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

C++高效内存池实现减少动态分配开销的解决方案

《C++高效内存池实现减少动态分配开销的解决方案》C++动态内存分配存在系统调用开销、碎片化和锁竞争等性能问题,内存池通过预分配、分块管理和缓存复用解决这些问题,下面就来了解一下... 目录一、C++内存分配的性能挑战二、内存池技术的核心原理三、主流内存池实现:TCMalloc与Jemalloc1. TCM

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.