@yay2008/wework-chat-node-windows

1.0.1 • Public • Published

基于windows环境下的sdk打包,可在开发环境下使用,正式环境建议使用linux sdk原版

wework-chat-node

使用 node-addon-api 封装了企业微信会话存档金融版 SDK 接口,提供给 node.js 直接调用。

[企业微信获取会话内容文档链接]https://work.weixin.qq.com/api/doc/90000/90135/91774

Installation

npm install wework-chat-node

如果需要升级企业微信SDK,请更新 lib/libWeWorkFinanceSdk_C.so 以及 include/wework/WeWorkFinanceSdk_C.h,文件更新后再build。 本模块也会持续更新优化。

Compiling

由于企业微信提供的 sdk 仅支持 linux 与 windows,在 OS X 下可编译成功,但无法正常使用。

Example

const FileType = require('file-type');
const fs = require('fs');
var addon = require('wework-chat-node');

// 创建 sdk 对象
var wework = new addon.WeWorkChat({
  corpid: "corpid", // 企业id
  secret:"secret",
  private_key: "private key", // 私钥,用于消息解密
  seq: 880, // 数据拉取index,第一次从0开始
});

// 获取媒体文件 buffer 数据,不使用回调函数调用方式
const GetAndSaveImageFile = async (param,bufs)=>{
  if (!bufs){
   	bufs = [];
   }
  /*
   该方法提供了回调函数调用和直接返回值调用
  eg:
  {
      is_finished: true, // 文件数据是否获取完毕,如果没有,应该继续获取
      buf_index: "range:abc", // 当文件分片读取时,一次获取媒体文件的 index
      data: Buffer, // 文件buffer
  }
  */
  const data = wework.getMediaData(param)
  const bufVal = Buffer.from(data.data);
  bufs.push(bufVal);

  if (!data.is_finished){ // 分片读写,为了防止大文件 buffer 撑爆,建议使用 stream append 方式写文件
    param.index_buf = data.buf_index;
    GetAndSaveImageFile(param,bufs);
  }else {
    const bufVal = Buffer.concat(bufs);
    const fileProp = await FileType.fromBuffer(bufVal);
    fileName = `${Math.random().toString(36).substring(3)}.${fileProp.ext}`
    fs.createWriteStream(fileName).write(bufVal);
  }
}

// 使用回调函数方式获取媒体文件
const callSaveImage = async(err,data)=>{
  console.log(data);
  const bufVal = Buffer.from(data.data);
  const fileProp = await FileType.fromBuffer(bufVal);
  fileName = `${Math.random().toString(36).substring(3)}.${fileProp.ext}`
  fs.createWriteStream(fileName).write(bufVal);
}

const testGetMediaData = ()=>{
   let param = {
        sdk_fileid:"test_sdk_fileid",
        index_buf:"",
      };
      wework.getMediaData(param,callSaveImage);
}

testGetMediaData();


// 获取聊天数据回调函数
const callData = async (msg)=>{
  console.log("js msg:",msg);
  try {
    const msgObj = JSON.parse(msg);
    const msgType = msgObj.msgtype;
    if (msgType=="image") {
      let param = {
        sdk_fileid:msgObj.image.sdkfileid,
        index_buf:"",
      }
      //wework.getMediaData(param, callSaveImage)
     await GetAndSaveImageFile(param);
    }
  } catch (error) {
    console.log("parse data error:",error);
  }
}

void async function() {
      // 拉取聊天数据,参数为一个回调函数,聊天数据实时通过此回调函数返回,函数异步执行
    console.log(await wework.fetchData(callData));
}()

setTimeout(() => {
    console.log('I want to stop fetching data.');
    // 手动优雅结束拉取消息,并返回当前seq
    const seq = wework.stopFetch();
    console.log('end seq:', seq);
}, 60 *1000);

TO DO

  • 获取媒体文件支持 async(异步) 事件监听方式获取数据流。
  • 获取聊天数据支持事件监听方式获取。
  • 暴露单独获取获取会话记录数据、SDK解密接口,由调用者自己控制获取数据频率等流程。

Package Sidebar

Install

npm i @yay2008/wework-chat-node-windows

Weekly Downloads

1

Version

1.0.1

License

MIT

Unpacked Size

4.37 MB

Total Files

50

Last publish

Collaborators

  • yay2008