天天看點

企業微信會話存檔檔案

企業微信會話存檔接口中,如果消息含有檔案(圖檔、文檔之類),傳回的資訊會包含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);
								}
							}           

複制