企業微信會話存檔接口中,如果消息含有檔案(圖檔、文檔之類),傳回的資訊會包含sdkfileid
通過官方提供的sdk,可以将對應檔案下載下傳到本地
long sdk = Finance.NewSdk();
Finance.Init(sdk, "corpid","secret");
long slice = Finance.NewSlice();
long ret = Finance.GetChatData(sdk, "消息開始的seq", "每次拉取的條數", "", "", 3, slice);
String content = Finance.GetContentFromSlice(slice);
Finance.FreeSlice(slice);
slice = Finance.NewSlice();
String de_privatekeyString = RSAEncrypt.decryptByRSA(RSAKEY.getPrivatekeyString(),
msgjaArray.getJSONObject(i).getString("encrypt_random_key"));
ret = Finance.DecryptData(sdk, de_privatekeyString,
msgjaArray.getJSONObject(i).getString("encrypt_chat_msg"), slice);
String rString = Finance.GetContentFromSlice(slice);
JSONObject rsJsonObject = JSONObject.fromObject(rString);
String indexbuf = "";
while (true) {
long media_data = Finance.NewMediaData();
ret = Finance.GetMediaData(sdk, indexbuf,
rsJsonObject.getJSONObject(typeString).getString("sdkfileid"), "", "", 3, media_data);
if (ret != 0) {
logger.error("getmediadata ret " + ret);
return;
}
if (typeString.equals("image")) {
FileOutputStream outputStream = new FileOutputStream(
new File("C:\\chat\\" + rsJsonObject.getString("msgid") + ".jpg"), true);
outputStream.write(Finance.GetData(media_data));
outputStream.close();
} else if (typeString.equals("voice")) {
FileOutputStream outputStream = new FileOutputStream(
new File("C:\\chat\\" + rsJsonObject.getString("msgid") + ".mp3"), true);
outputStream.write(Finance.GetData(media_data));
outputStream.close();
} else if (typeString.equals("video")) {
FileOutputStream outputStream = new FileOutputStream(
new File("C:\\chat\\" + rsJsonObject.getString("msgid") + ".mp4"), true);
outputStream.write(Finance.GetData(media_data));
outputStream.close();
} else if (typeString.equals("emotion")) {
String houzuhi = ".png";
if (rsJsonObject.getJSONObject(typeString).getInt("type") == 1) {
houzuhi = ".gif";
}
FileOutputStream outputStream = new FileOutputStream(
new File("C:\\chat\\" + rsJsonObject.getString("msgid") + houzuhi), true);
outputStream.write(Finance.GetData(media_data));
outputStream.close();
} else if (typeString.equals("file")) {
FileOutputStream outputStream = new FileOutputStream(
new File("C:\\chat\\" + rsJsonObject.getString("msgid") + "."
+ rsJsonObject.getJSONObject(typeString).getString("fileext")),
true);
outputStream.write(Finance.GetData(media_data));
outputStream.close();
}
if (Finance.IsMediaDataFinish(media_data) == 1) {
Finance.FreeMediaData(media_data);
break;
} else {
indexbuf = Finance.GetOutIndexBuf(media_data);
Finance.FreeMediaData(media_data);
}
}
複制