企业微信如何实现会话消息本地存档

摘要:
最近,微信开通了会话存档接口,可以将微信的所有聊天记录拉到本地服务器,用于一些需要留下数据痕迹的行业的消息备份和存档。测试调用成功后,首先记录过程。如果有客户需求,也可以咨询奥创软件研究院进行沟通和讨论。首先,打开“管理工具”下的“会话内容归档”界面,然后选择试用订阅。目前,审判可以持续30天。试用期结束后,您需要支付费用。打开后,需要为接口填写几个参数以调用受信任的IP地址:需要调用接口的服务器的公共IP消息

最近企业微信已经开放了会话存档的接口,可以针对一些需要进行数据留痕的行业将企业微信所有聊天记录拉取到本地服务器上,进行消息的备份存档。测试调用成功后,先记录下过程。如果有客户需要,也可以咨询奥创软件研究院交流探讨。

首先在“管理工具”下打开“会话内容存档”接口

 企业微信如何实现会话消息本地存档第1张

选择试用开通,目前可以试用30天,试用期结束后需要付费使用。

开通后需要填写几个参数用于接口调用

可信IP地址:需要调用接口的服务器公网IP

消息加密公钥:自己生成RSA公钥和私钥,公钥用于加密,私钥用于解密

Secret:用于获取接口调用token

 企业微信如何实现会话消息本地存档第2张

点击API文档可以查看调用步骤以及下载官方sdk
企业微信如何实现会话消息本地存档第3张

SDK中有源代码可以测试

package com.tencent.wework;
 
import java.io.File;
import java.io.FileOutputStream;
 
public class FinanceTestDemo {
    
     public static void main(String[] args){
            args =new String[6];
            args[0] = "2";
            args[1] = "0";
            args[2] = "20";
            args[3] = "";
            args[4] = "";
            args[5] = "3";
            
            
            long sdk = Finance.NewSdk();
            System.out.println(Finance.Init(sdk,  "wwd","zJ6kCTOTAfrew"));
            String priKey = 
                "-----BEGIN RSA PRIVATE KEY-----
" +
                "MIIEowIBAAKCAQEAjzJfnYgy8gI/UdR9OMzMh2/Svtz6ynPJdgqWX0qCm7361g04
" +
                "Sz/g+aJGtqu8jRJNg3rxQhezoy5mc+//QDyL6sM0auASS+eWx2igxVahLhJEWef3
" +
                "2woMrb+OHs6nJf2jBcfA494KvgkxSYXU84vl8UCHwUI839SLBSLWofb8ccFEmy9W
" +
                "VSWY7EIUVV8pO8sLZ9uVWK1IrHHSrcGkx4SF913RDIxCTExj7bLqxNRklzWZgi3m
" +
                "bYoIsTG6dmsGkmxagGPEtuVOI2UjpjQw1WyrN+6o+2+qpOIuoHKF5vGrPbQBL1jU
" +
                "nshGs3MnwTWdxVOe+bw8a+VAqxpD5DlfdKamgQIDAQABAoIBAGNRbe3mPGeMVXyd
" +
                "I6kUqrs5PPNyc2OdwVpk53z6QfJhZyu1iZjvmkuqWN9z59f0nNyXlePgapDAqwC4
" +
                "sdJM7EKM17tU5HvPCc4O7ItSlYJN2yh8cnVy1+5ekOUfMeFwtPRaYpfpNowt9ghn
" +
                "kZbGLlsRBddt6KjaUv3h9vnpQ5hlhU53slh+Zsdrsselpy0sTCF0ulVQgioZ6lzg
" +
                "/Y61xCGxRWqq71UT/7EOZwIoD3NmLRZLE6vxm8uBrFvZZ5/jw9Z//8S+vgtRUgGj
" +
                "/5v55ftTG+EOsaz2Zvt+jghkaEAchcyy5LyUv09Ir9eOYfjNAgeCk9dQv6E+2BiR
" +
                "SvcUJEECgYEA5CvcoSpV66qC1T99/JqmqyTjORZ4ZKBJY9vos4uxNYfCbbhNJLDY
" +
                "QAbCC234nBuKQ+3cVKkWtjBwfNp90mEmIoN6sYv+SdtVe2ofhJEqLMTiGyZPi2Iv
" +
                "+vvRpFmiAUfWXqFzBy+3HSoTkRqbCytUIT7NXZZ3YwKbbIhyzABTzSkCgYEAoKlf
" +
                "Gsn4rQEfmitAGJpuiSahih6KV3K+S9olnPbwd04YOw4u5UmouhyC7N0z2K8AO6zo
" +
                "IkzCQtWQS1B1uaPE/stG7I/iy0CI6q46nSly5pajBBGQc+Y5ixRf23hEjGgca556
" +
                "1pDyMs0Nb0J2AGDcr8olrbT1KwBvg8oWHOlA4ZkCgYAmC+pONXD+SwBl7qBjbqY8
" +
                "A3qgGk8Y+GFEdXbn+XMjKfARu5mhdJuakYXpwfyiizUS/qaut0NCPfGD4Cr62Zgy
" +
                "SRo8YMuWJSyr15ZJ1KrjrDDHtiutYkH959+dOBT7ga8NOH6lxB8Ujd+VYopX4nG0
" +
                "2XQFFwHxUI36GwaJXcSbgQKBgEe4VERZNTHF9p2UASD6j62aGTLXP1qaVmj2ESRo
" +
                "+B/KNPbn9fdVUoUChU/Hz4VDWg9JuLbXHUFIpQl5+ZPNj/tOM3MXKF8jh/t7m57d
" +
                "CfX1+P+v95RFihqUFdabcb5cG5PPQ3bVbclP0FeCi7rPgrTWwMsypN91alKivAxb
" +
                "9CLBAoGBALfb5SEupOoyIUetiWhOc1vlmP+71rJEXUEYwm0CMmfKZRW+I1A8qTE+
" +
                "DVT6iUMVt6jj8L/YiMzjUh8y8HLcp4mlldzdfyjssZg6v2hABJcnID6o3DcTXA8k
" +
                "8uMmaZZ0qY4oUzwgZa7bf/C//3mKlRUMoBYOT/LAksZlySIBXoST
" +
                "-----END RSA PRIVATE KEY-----
";
 
            long ret = 0;
 
            if (args[0].equals("1")) {
                int seq = Integer.parseInt(args[1]);
                int limit = Integer.parseInt(args[2]);
                long slice = Finance.NewSlice();
                ret = Finance.GetChatData(sdk, seq, limit, args[3], args[4], Integer.parseInt(args[5]), slice);
                if (ret != 0) {
                    System.out.println("getchatdata ret " + ret);
                    return;
                }
                System.out.println("getchatdata :" + Finance.GetContentFromSlice(slice));
                Finance.FreeSlice(slice);
            } else if (args[0].equals("2")) {
 
                String indexbuf = "";
                while(true){
                    long media_data = Finance.NewMediaData();
                    ret = Finance.GetMediaData(sdk, indexbuf, args[1], args[2], args[3], Integer.parseInt(args[4]), media_data);
                    System.out.println("getmediadata ret:" + ret);
                    if(ret!=0){
                        return;
                    }
                    System.out.printf("getmediadata outindex len:%d, data_len:%d, is_finis:%d
",Finance.GetIndexLen(media_data),Finance.GetDataLen(media_data), Finance.IsMediaDataFinish(media_data));
                    try {
                        FileOutputStream outputStream  =new FileOutputStream(new File("C:\Users\aochuang\Documents\media_data"));
                        outputStream.write(Finance.GetData(media_data));
                        outputStream.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
 
                    if(Finance.IsMediaDataFinish(media_data) == 1)
                    {
                        Finance.FreeMediaData(media_data);
                        break;
                    }
                    else
                    {
                        indexbuf = Finance.GetOutIndexBuf(media_data);
                        Finance.FreeMediaData(media_data);
                    }
                                                                                                                                                             }
            }else if (args[0].equals("3")) {
                // notice!
                // // use prikey to decrpyt get args[1]
                
                long msg = Finance.NewSlice();
                ret = Finance.DecryptData(sdk,args[1] ,args[2], msg);
                if (ret != 0) {
                     System.out.println("getchatdata ret " + ret);
                         return;
                }
                System.out.println("decrypt ret:" + ret + " msg:" + Finance.GetContentFromSlice(msg));
                Finance.FreeSlice(msg);
            }
            else {
                System.out.println("wrong args " + args[0]);
            }
            Finance.DestroySdk(sdk);
        }
}

如果有其他不明白的,欢迎一起探讨,目前企业微信会话存档是内侧阶段,需要申请才能开通,可以通过我们来申请,也有成熟的接口可以给大家提供,让大家不用进行开发就能直接实现企业微信的会话存档功能。

免责声明:文章转载自《企业微信如何实现会话消息本地存档》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C# WinForm窗体界面设置问题利用JDBC连接Oracle数据库(转)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Appium的环境搭建和配置

Appium的环境搭建和配置 一、安装Nodejs 下载nodejs安装包(https://nodejs.org/en/download/)安装 下载后,双击安装文件,按提示来安装。 测试安装是否成功:运行cmd,输入node –v 二、安装android的SDK 安装android的sdk包,(https://developer.android....

Mac下Android Studio配置adb

配置步骤: 1、打开Android Studio 启动终端 Terminal; 2、进入当前用户home目录 echo $HOME 3、创建.bash_profile文件 touch .bash_profile 4、打开.bash_profile文件 open -e .bash_profile 5、在打开的.bash_profile文件中编辑如下: exp...

常用快捷键大全

一、系统快捷键 F1 帮助F2 改名F3 搜索 F4 地址F5 刷新F6 切换F8 安全模式F10 菜单F11 全屏INS 插入模式PRTSCSYSRQ 截屏CAPSLOCK 大写字母锁定DELETE 删除ESC 退出HOME 到开始或主程序END 到结尾PAGEUP 向上翻页PAGEDOWN 向下翻页TAB 改变焦点 CTRL+C 复制CTRL+X...

RabbitMQ入门

abbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rabbit MQ 是建立在Erlang OTP平台上。 1.安装Erlang 所以在安装rabbitMQ之前,需要先安装Erlang 。 小编使用的是otp_wi...

分布式任务调度平台xxl-job

定时任务调度:在某个时间点触发执行操作(CURD)。 分布式任务调度平台的使用场景:数据同步、交易信息(对账)、清除过期用户信息、定期发送报表、消息推送。 传统的定时任务与分布式定时任务的区别? 传统的定时任务特征:单点系统(job没有集群) 思考:如果job在高并发的情况下,导致job服务器宕机之后,这时候应该如何处理? 1.定时任务和业务服务放在用一个...

Horizon Web管理界面

一、horizon 介绍: Horizon 为 Openstack 提供一个 WEB 前端的管理界面 (UI 服务 )通过 Horizone 所提供的 DashBoard 服务 , 管理员可以使用通过 WEB UI 对 Openstack 整体云环境进行管理 , 并可直观看到各种操作结果与运行状态。 DashBoard 与其他组件的关系 登陆 Dashb...