zoukankan      html  css  js  c++  java
  • 企业微信如何实现会话消息本地存档

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

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

     

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

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

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

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

    Secret:用于获取接口调用token

     

    点击API文档可以查看调用步骤以及下载官方sdk

    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);
            }
    }

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

  • 相关阅读:
    ntopng网络流量实时监控
    LVS初始使用步骤
    Pycharm快捷方式
    Python之路,Day9, 进程、线程、协程篇
    Python之路,Day7
    Python 之路 Day5
    Python之路,Day6
    Python之路,Day3
    Python之路,Day2
    Python之路,Day1
  • 原文地址:https://www.cnblogs.com/acsoft/p/12713223.html
Copyright © 2011-2022 走看看