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 应用系统内查询特定账号的单聊总未读数(包含所有的单聊会话)或者单个单聊会话的未读数。其关键属性方法说明如下:
序号 | 参数 | 类型 | 说明 |
---|---|---|---|
1 | To_Account | string | 要查询的用户 UserID |
2 | Peer_Account | string[] | 要查询的单聊会话对端的用户 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 应用系统内按照时间范围,以会话其中一方的角度查询单聊会话的消息记录。其关键属性方法说明如下:
序号 | 参数 | 类型 | 说明 |
---|---|---|---|
1 | From_Account | string | 会话其中一方的 UserID,以该 UserID 的角度去查询消息。 |
2 | To_Account | string | 会话的另一方 UserID |
3 | MaxCnt | int | 请求的消息条数 |
4 | MinTime | string | 请求的消息时间范围的最小值(单位:秒) |
5 | MaxTime | string | 请求的消息时间范围的最大值(单位:秒) |
6 | LastMsgKey | string | 上一次拉取到的最后一条消息的 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天中某天某小时的所有单发或群组消息记录的下载地址。其关键属性方法说明如下:
序号 | 参数 | 类型 | 说明 |
---|---|---|---|
1 | yyyymmddhh | string | 需要下载的消息记录的时间段(北京时间)。2015120121表示获取2015年12月1日21:00 - 21:59的消息的下载地址。该字段需精确到小时。每次请求只能获取某天某小时的所有单发或群组消息记录 |
2 | chattype | string | 消息类型,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 之会话管理
目录 关于腾讯 IM REST API 开发前准备 范例运行环境 常用会话管理API 查询账号会话总未读数 查询单聊会话消息记录 下载最近会话记录 小结 关于腾讯 IM REST API REST API 是腾讯即时通信 IM 提供给服务端的一组 HTTP 后台管理接口,如消息管理、群组管理…...

MySQL之Schema与数据类型优化(三)
Schema与数据类型优化 BLOB和TEXT类型 BLOB和TEXT都是为存储很大的数据而设计的字符串数据类型,分别采用二进制和字符方式存储。 实际上它们分别属于两组不同的数据类型家族:字符类型是TINYTEXT,SMALLTEXT,TEXT,MEDIUMTEXT,LONG…...
大语言模型发展历史
大语言模型的发展历史可以追溯到自然语言处理(NLP)和机器学习早期的探索,但真正快速发展起来是在深度学习技术兴起之后。以下是大语言模型发展的一个简要历史概述: 早期阶段(20世纪50-90年代): …...

Nginx - 安全基线配置与操作指南
文章目录 概述中间件安全基线配置手册1. 概述1.1 目的1.2 适用范围 2. Nginx基线配置2.1 版本说明2.2 安装目录2.3 用户创建2.4 二进制文件权限2.5 关闭服务器标记2.6 设置 timeout2.7 设置 NGINX 缓冲区2.8 日志配置2.9 日志切割2.10 限制访问 IP2.11 限制仅允许域名访问2.12 …...
简述js的事件循环以及宏任务和微任务
前言 在JavaScript中,任务被分为同步任务和异步任务。 同步任务:这些任务在主线程上顺序执行,不会进入任务队列,而是直接在主线程上排队等待执行。每个同步任务都会阻塞后续任务的执行,直到它自身完成。常见的同步任…...
[力扣题解] 797. 所有可能的路径
题目:797. 所有可能的路径 思路 深度搜索 代码 // 图论哦!class Solution { private:vector<vector<int>> result;vector<int> path;// x : 当前节点void function(vector<vector<int>>& graph, int x){int i;// cout <&l…...

【QT八股文】系列之篇章3 | QT的多线程以及QThread与QObject
【QT八股文】系列之篇章3 | QT的多线程 前言4. 多线程为什么需要使用线程池线程池的基础知识python中创建线程池的方法使用threading库队列Queue来实现线程池使用threadpool模块,这是个python的第三方模块,支持python2和python3 QThread的定义QT多线程知…...
基于python flask的web服务
基本例子 from flask import Flask app Flask(__name__) app.route(/)#检查访问的网址,根路径走这里 def hello_world():return hello world#返回hello worldif __name__ __main__:# 绑定到指定的IP地址和端口app.run(host0.0.0.0, port1000, debugTrue)##绑定端…...
HTTP 响应分割漏洞
HTTP 响应分割漏洞 1.漏洞概述2.漏洞案例 1.漏洞概述 HTTP 响应拆分发生在以下情况: 数据通过不受信任的来源(最常见的是 HTTP 请求)进入 Web 应用程序。该数据包含在发送给 Web 用户的 HTTP 响应标头中,且未经过恶意字符验证。…...

Algoriddim djay Pro Ai for Mac:AI引领,混音新篇章
当AI遇上音乐,会碰撞出怎样的火花?Algoriddim djay Pro Ai for Mac给出了答案。这款专业的DJ混音软件,以AI为引擎,引领我们进入混音的新篇章。 djay Pro Ai for Mac的智能混音功能,让每一位DJ都能感受到前所未有的创作…...

常见算法(3)
1.Arrays 它是一个工具类,主要掌握的其中一个方法是srot(数组,排序规则)。 o1-o2是升序排列,o2-o1是降序排列。 package test02; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparat…...

集中抄表电表是什么?
1.集中抄表电表:简述 集中抄表电表,又称为远程抄表系统,是一种现代化电力计量技术,为提升电力行业的经营效率和客户服务质量。它通过自动化的形式,取代了传统人工抄水表,完成了数据信息实时、精确、高效率…...

第八届能源、环境与材料科学国际学术会议(EEMS 2024)
文章目录 一、重要信息二、大会简介三、委员会四、征稿主题五、论文出版六、会议议程七、出版信息八、征稿编辑 一、重要信息 会议官网:http://ic-eems.com主办方:常州大学大会时间:2024年06月7-9日大会地点:新加坡 Holiday Inn …...

09.自注意力机制
文章目录 输入输出运行如何运行解决关联性attention score额外的Q K V Multi-head self-attentionPositional EncodingTruncated Self-attention影像处理vs CNNvs RNN图上的应用 输入 输出 运行 链接(Attention Is All You Need) 如何运行 解决关联性 a…...
时政|杂粮产业
政策支持 《新一轮千亿斤粮食产能提升行动方案(2024—2030年)》明确,按照“巩固提升口粮、主攻玉米大豆、兼顾薯类杂粮”的思路,因地制宜发展马铃薯、杂粮杂豆等品种,根据市场需求优产稳供。 产地发展 河北省石家庄…...
docker 安装 私有云盘 nextcloud
拉取镜像 # 拉取镜像 sudo docker pull nextcloud运行nextcloud 容器 # 内存足够可以不进行内存 --memory512m --memory-swap6g # 桥接网络 --network suixinnet --network-alias nextcloud \ sudo docker run -itd --name nextcloud --restartalways \ -p 9999:80 \ -v /m…...

第十一届蓝桥杯物联网试题(国赛)
国赛题目看着简单其实还是挺复杂的,所以说不能掉以轻心,目前遇到的问日主要有以下几点: 本次题主要注重的是信息交互,与A板通信的有电脑主机和B板,所以处理好这里面的交互过程很重要 国赛中避免不了会收到其他选手的…...

算法金 | Dask,一个超强的 python 库
本文来源公众号“算法金”,仅用于学术分享,侵权删,干货满满。 原文链接:Dask,一个超强的 python 库 1 Dask 概览 在数据科学和大数据处理的领域,高效处理海量数据一直是一项挑战。 为了应对这一挑战&am…...
Java 说唱歌手
Yo yo yo,欢迎来到Java地带,技术的盛宴开启, 从JDK到JVM,我们构建的是数字世界的奇迹。 Spring Boot启动,微服务架构轻盈起舞, IoC解耦依赖,AOP切面如丝般顺滑。 Maven管理依赖,Gra…...

面试-软件工程与设计模式相关,Spring简介
面试-软件工程与设计模式相关,Spring简介 1.编程思想1.1 面向过程编程1.2 面向对象编程1.2.1 面向对象编程三大特征 1.3 面向切面编程1.3.1 原理1.3.2 大白话?1.3.3 名词解释1.3.4 实现 2. 耦合与内聚2.1 耦合性2.2 内聚性 3. 设计模式3.1 设计模型七大原…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...

Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...