Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
cmeeting
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
翟斌
cmeeting
Commits
fb47d3e3
提交
fb47d3e3
authored
7月 07, 2025
作者:
duanxincheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
企微配置抽离
父级
59ea2b51
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
19 行增加
和
241 行删除
+19
-241
src/main/java/com/cmeeting/job/CmeetingJob.java
+0
-16
src/main/java/com/cmeeting/service/impl/TencentMeetingServiceImpl.java
+4
-219
src/main/java/com/cmeeting/service/impl/WeComServiceImpl.java
+4
-5
src/main/resources/application.yml
+11
-1
没有找到文件。
src/main/java/com/cmeeting/job/CmeetingJob.java
浏览文件 @
fb47d3e3
...
@@ -99,22 +99,6 @@ public class CmeetingJob {
...
@@ -99,22 +99,6 @@ public class CmeetingJob {
@Scheduled
(
fixedRate
=
20
*
60
*
1000
,
initialDelay
=
2
*
60
*
1000
)
@Scheduled
(
fixedRate
=
20
*
60
*
1000
,
initialDelay
=
2
*
60
*
1000
)
// @Scheduled(fixedRate = 20 * 60 * 1000)
// @Scheduled(fixedRate = 20 * 60 * 1000)
public
void
execute
()
{
public
void
execute
()
{
// 定义时间格式化器
DateTimeFormatter
formatter
=
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
);
// 获取当前时间
LocalDateTime
now
=
LocalDateTime
.
now
();
// 往之前推两天
LocalDateTime
beforeDay
=
now
.
minusDays
(
2
);
// 转换为 Unix 时间戳(秒)并转为字符串
Long
nowTimestamp
=
now
.
atZone
(
ZoneId
.
systemDefault
()).
toEpochSecond
();
Long
beforeDayTimestamp
=
beforeDay
.
atZone
(
ZoneId
.
systemDefault
()).
toEpochSecond
();
//日志记录
log
.
info
(
"起始时间: "
+
beforeDay
.
format
(
formatter
)
+
" | Unix 时间戳: "
+
beforeDayTimestamp
);
log
.
info
(
"结束时间: "
+
now
.
format
(
formatter
)
+
" | Unix 时间戳: "
+
nowTimestamp
);
log
.
info
(
"----------------------------------"
);
//查出企微id和腾会id的关联关系
//查出企微id和腾会id的关联关系
List
<
UserId
>
userIdRelations
=
userIdMapper
.
selectList
(
null
);
List
<
UserId
>
userIdRelations
=
userIdMapper
.
selectList
(
null
);
Map
<
String
,
String
>
widTidRelations
=
userIdRelations
.
stream
().
collect
(
Collectors
.
toMap
(
UserId:
:
getWid
,
UserId:
:
getTid
));
Map
<
String
,
String
>
widTidRelations
=
userIdRelations
.
stream
().
collect
(
Collectors
.
toMap
(
UserId:
:
getWid
,
UserId:
:
getTid
));
...
...
src/main/java/com/cmeeting/service/impl/TencentMeetingServiceImpl.java
浏览文件 @
fb47d3e3
...
@@ -65,6 +65,8 @@ public class TencentMeetingServiceImpl extends ServiceImpl<TecentMeetingMapper,T
...
@@ -65,6 +65,8 @@ public class TencentMeetingServiceImpl extends ServiceImpl<TecentMeetingMapper,T
private
static
final
String
HMAC_ALGORITHM
=
"HmacSHA256"
;
private
static
final
String
HMAC_ALGORITHM
=
"HmacSHA256"
;
private
static
final
char
[]
HEX_CHAR
=
{
'0'
,
'1'
,
'2'
,
'3'
,
'4'
,
'5'
,
'6'
,
'7'
,
'8'
,
'9'
,
'a'
,
'b'
,
'c'
,
'd'
,
'e'
,
'f'
};
private
static
final
char
[]
HEX_CHAR
=
{
'0'
,
'1'
,
'2'
,
'3'
,
'4'
,
'5'
,
'6'
,
'7'
,
'8'
,
'9'
,
'a'
,
'b'
,
'c'
,
'd'
,
'e'
,
'f'
};
@Value
(
value
=
"${tencent.search-scope}"
)
private
Integer
searchDays
;
@Value
(
value
=
"${tencent.appId}"
)
@Value
(
value
=
"${tencent.appId}"
)
private
String
tencentAppId
;
private
String
tencentAppId
;
@Value
(
value
=
"${tencent.sdkId}"
)
@Value
(
value
=
"${tencent.sdkId}"
)
...
@@ -101,223 +103,6 @@ public class TencentMeetingServiceImpl extends ServiceImpl<TecentMeetingMapper,T
...
@@ -101,223 +103,6 @@ public class TencentMeetingServiceImpl extends ServiceImpl<TecentMeetingMapper,T
}
}
// @Override
// public List<TencentMeetingVO.RecordFile> getMeetingFiles(List<UserDTO> accessUserIds) {
// Client client = new Client.Builder()
// .withAppId(tencentAppId).withSdkId(tencentSdkId)
// .withSecret(tencentSecretId,tencentSecretKey)
// .build();
//
// List<TencentMeetingVO.RecordFile> recordFileUrlList = new ArrayList<>();
// List<MeetingInfo> meetingSaveList = new ArrayList<>();
// // 查询近两天的会议录制列表
// try {
// ZonedDateTime now = ZonedDateTime.now();
// String startTime = String.valueOf(now.minusDays(2).toEpochSecond());
// String endTime = String.valueOf(now.toEpochSecond());
// AtomicInteger currentPage = new AtomicInteger(1);
// Long totalPage = 1L;
//
// //目前已存储的会议id
// List<String> meetingIds = meetingInfoMapper.getAllMeetingIds();
// while (currentPage.intValue() <= totalPage.intValue()){
// RecordsApi.ApiV1RecordsGetRequest request =
// new RecordsApi.ApiV1RecordsGetRequest.Builder()
// .operatorId(tencentAdminUserId)
// .operatorIdType("1")
// .startTime(startTime)
// .endTime(endTime)
// .pageSize("20")
// .page(String.valueOf(currentPage.getAndIncrement()))
// .mediaSetType("0")
// .build();
// RecordsApi.ApiV1RecordsGetResponse response =
// client.records().v1RecordsGet(request, new JWTAuthenticator.Builder()
// .nonce(BigInteger.valueOf(Math.abs((new SecureRandom()).nextInt())))
// .timestamp(String.valueOf(System.currentTimeMillis() / 1000L)));
// V1RecordsGet200Response data = response.getData();
// //设置总页数
// totalPage = data.getTotalPage();
// if (data != null && data.getRecordMeetings() != null && !data.getRecordMeetings().isEmpty()) {
// List<V1RecordsGet200ResponseRecordMeetingsInner> meetings = data.getRecordMeetings();
//
// //录制状态:
// //1:录制中
// //2:转码中
// //3:转码完成
// if(meetings.stream().allMatch(item->item.getState() != 3)){
// return null;
// }
// for (V1RecordsGet200ResponseRecordMeetingsInner meeting : meetings) {
// //会议没结束,跳过
// if(meeting.getState() != 3){
// processLogService.log(meeting.getMeetingId(),null,"会议未结束,跳过生成");
// continue;
// }
//
//
// log.info("【会议检索】转录文件的meetingId->{},recordFileId->{}",meeting.getMeetingId(),meeting.getMeetingRecordId());
//
// //查询会议详情
// String meetingId = meeting.getMeetingId();
// String subMeetingId = null;
// MeetingsApi.ApiV1MeetingsMeetingIdGetRequest meetingRequest =
// new MeetingsApi.ApiV1MeetingsMeetingIdGetRequest.Builder(meetingId)
// .operatorId(tencentAdminUserId)
// .operatorIdType("1")
// .instanceid("0")
// .build();
// try {
// MeetingsApi.ApiV1MeetingsMeetingIdGetResponse meetingResponse =
// client.meetings().v1MeetingsMeetingIdGet(meetingRequest, new JWTAuthenticator.Builder()
// .nonce(BigInteger.valueOf(Math.abs((new SecureRandom()).nextInt())))
// .timestamp(String.valueOf(System.currentTimeMillis() / 1000L)));
// V1MeetingsMeetingIdGet200Response meetingResponseData = meetingResponse.getData();
// List<V1MeetingsMeetingIdGet200ResponseMeetingInfoListInner> meetingInfoList = meetingResponseData.getMeetingInfoList();
// //尝试获取会议详情
// if(meetingInfoList != null && meetingInfoList.size() > 0){
// V1MeetingsMeetingIdGet200ResponseMeetingInfoListInner meetingInfo = meetingInfoList.get(0);
// //会议类型
// //0:一次性会议
// //1:周期性会议
// Long meetingType = meetingInfo.getMeetingType();
// if(meetingType.intValue() == 1){
// //如果是周期会议,获取子会议的ID,用于查询参会人员
// List<V1MeetingsMeetingIdGet200ResponseMeetingInfoListInnerSubMeetingsInner> subMeetings = meetingInfo.getSubMeetings();
// //如果主持人突然取消了后续的所有周期会议,subMeetings列表会返回null
// if(!CollectionUtils.isEmpty(subMeetings)){
// LocalDate meetingStartDate = Instant.ofEpochMilli(meeting.getMediaStartTime()).atZone(ZoneId.systemDefault()).toLocalDate();
// Optional<V1MeetingsMeetingIdGet200ResponseMeetingInfoListInnerSubMeetingsInner> subMeeting = subMeetings.stream().filter(item ->
// Instant.ofEpochSecond(Long.valueOf(item.getStartTime())).atZone(ZoneId.systemDefault()).toLocalDate().equals(meetingStartDate))
// .findFirst();
// if(!subMeeting.isPresent()){
// log.error("周期会议"+meetingId+"未知子会议ID");
// processLogService.log(meeting.getMeetingId(),subMeetingId,"周期会议"+meetingId+"未知子会议ID");
// continue;
// }
// subMeetingId = subMeeting.get().getSubMeetingId();
// }else{
// subMeetingId = meetingInfo.getCurrentSubMeetingId();
// log.info("周期会议"+meetingId+"的子会议列表为空,获取当前子会议号");
// processLogService.log(meeting.getMeetingId(),subMeetingId,"周期会议"+meetingId+"的子会议列表为空,获取当前子会议号");
// }
// }
// //如果数据库中已有相同会议id的记录,跳过同步
// if(!meetingIds.contains(meetingId)){
// log.info("【会议检索】新的会议meetingId->{},开始持久化",meeting.getMeetingId());
// List<V1RecordsGet200ResponseRecordMeetingsInnerRecordFilesInner> recordFiles = meeting.getRecordFiles();
// //按转录文件时间升序,便于后续的内容拼接
// List<String> recordFileIdList = recordFiles.stream().sorted(Comparator.comparingLong(V1RecordsGet200ResponseRecordMeetingsInnerRecordFilesInner::getRecordStartTime))
// .map(V1RecordsGet200ResponseRecordMeetingsInnerRecordFilesInner::getRecordFileId).collect(Collectors.toList());
// TencentMeetingVO.RecordFile recordFileItem = TencentMeetingVO.RecordFile.builder()
// .recordFileIdList(recordFileIdList).meetingId(meetingId).subMeetingId(subMeetingId).build();
//
// // 获取参会成员明细
// MeetingsApi.ApiV1MeetingsMeetingIdParticipantsGetRequest participantsRequest =
// new MeetingsApi.ApiV1MeetingsMeetingIdParticipantsGetRequest
// .Builder(meetingId).subMeetingId(subMeetingId).operatorId(tencentAdminUserId).operatorIdType("1").build();
// AuthenticatorBuilder<JWTAuthenticator> participantsAuthenticatorBuilder =
// new JWTAuthenticator.Builder()
// .nonce(BigInteger.valueOf(Math.abs((new SecureRandom()).nextInt())))
// .timestamp(String.valueOf(System.currentTimeMillis() / 1000L));
// //主持人角色,以下角色都可以表示主持人
// //用户角色:
// //0:普通成员角色
// //1:创建者角色
// //2:主持人
// //3:创建者+主持人
// //4:游客
// //5:游客+主持人
// //6:联席主持人
// //7:创建者+联席主持人
// List<Long> hostRoleList = Arrays.asList(2L,3L,5L,6L,7L);
// MeetingsApi.ApiV1MeetingsMeetingIdParticipantsGetResponse participantsResponse =
// client.meetings().v1MeetingsMeetingIdParticipantsGet(participantsRequest, participantsAuthenticatorBuilder);
// V1MeetingsMeetingIdParticipantsGet200Response participantsData = participantsResponse.getData();
// List<V1MeetingsMeetingIdParticipantsGet200ResponseParticipantsInner> participants = participantsData.getParticipants();
// Optional<V1MeetingsMeetingIdParticipantsGet200ResponseParticipantsInner> host = participants.stream().filter(item -> hostRoleList.contains(item.getUserRole())).findFirst();
// String email;
// String hostId;
// String hostName;
// //判断主持人是否存在,如果主持人未参会,是查不到主持人的
// //如果主持人未参会,使用会议详情中的创建人作为主持人
// if(host.isPresent()) {
// hostId = host.get().getUserid();
// hostName = new String(Base64.getDecoder().decode(host.get().getUserName()));
// }else{
// //未找到主持人,读取会议详情中的创建人作为主持人
// List<V1MeetingsGet200ResponseMeetingInfoListInnerCurrentCoHostsInner> currentHosts = meetingInfo.getCurrentHosts();
// if(CollectionUtils.isEmpty(currentHosts)){
// log.error("未找到主持人,默认没有生成纪要权限");
// processLogService.log(meeting.getMeetingId(),subMeetingId,"未找到主持人,默认没有生成纪要权限");
// continue;
// }
// hostId = currentHosts.get(0).getUserid();
// hostName = tecentMeetingMapper.getUsernameByUserId(hostId);
// log.info("主持人会中缺席,默认会议创建人为主持人");
// processLogService.log(meeting.getMeetingId(),subMeetingId,"未找到主持人,默认会议创建人为主持人");
// }
// //判断是否有权限生成纪要
// boolean generateAccess = accessUserIds.stream().anyMatch(item -> item.getTid().equals(hostId));
// if(!generateAccess){
// log.error("【权限校验】主持人{}没有生成纪要权限,跳过生成",hostId);
// processLogService.log(meeting.getMeetingId(),subMeetingId,"【权限校验】主持人"+hostId+"没有生成纪要权限,跳过生成");
// continue;
// }
// log.info("【权限校验】主持人{}允许生成纪要",hostId);
// processLogService.log(meeting.getMeetingId(),subMeetingId,"【权限校验】主持人"+hostId+"允许生成纪要");
// UserDTO userDTO = accessUserIds.stream().filter(item -> item.getTid().equals(hostId)).findFirst().get();
// email = userDTO.getEmail();
//
// //会议基本信息保存
// MeetingInfo meetingItem = MeetingInfo.builder().meetingId(meetingId).meetingCode(meetingInfo.getMeetingCode())
// .subject(meetingInfo.getSubject())
// .startTime(LocalDateTime.ofInstant(Instant.ofEpochSecond(Long.valueOf(meetingInfo.getStartTime())), ZoneId.systemDefault()))
// .endTime(LocalDateTime.ofInstant(Instant.ofEpochSecond(Long.valueOf(meetingInfo.getEndTime())), ZoneId.systemDefault()))
// .isGenerated(Boolean.FALSE).emailPushAccess(Boolean.TRUE).isPushed(Boolean.FALSE).syncTime(LocalDateTime.now())
// .subMeetingId(subMeetingId).generateRetry(Boolean.FALSE).pushRetry(Boolean.FALSE)
// .host(hostName)
// .hostUid(hostId)
// .participantUsers(participants.stream()
// .map(item->new String(Base64.getDecoder().decode(item.getUserName()))).distinct().collect(Collectors.joining("、")))
// .recordFileId(recordFileIdList.stream().collect(Collectors.joining(",")))
// .email(email)
// .build();
// recordFileUrlList.add(recordFileItem);
// meetingSaveList.add(meetingItem);
// }
// }
// } catch (ClientException e) {
// throw new RuntimeException(e);
// } catch (ServiceException e) {
// throw new RuntimeException(e);
// }
// }
// }
// }
// if(meetingSaveList.size() > 0){
// Map<String, List<MeetingInfo>> meetingSaveMap = meetingSaveList.stream().collect(Collectors.groupingBy(
// item -> item.getMeetingId() + "_" +
// (item.getSubMeetingId() != null ? item.getSubMeetingId() : "null")));
// List<MeetingInfo> finalSaveList = new ArrayList<>();
// for (Map.Entry<String, List<MeetingInfo>> entry : meetingSaveMap.entrySet()) {
// MeetingInfo meetingInfo = entry.getValue().get(0);
// meetingInfo.setRecordFileId(entry.getValue().stream().map(MeetingInfo::getRecordFileId).collect(Collectors.joining(",")));
// finalSaveList.add(meetingInfo);
// }
// meetingInfoMapper.batchInsert(finalSaveList);
// }
// } catch (Exception e) {
// log.error(e.getMessage());
// StringWriter sw = new StringWriter();
// PrintWriter pw = new PrintWriter(sw);
// e.printStackTrace(pw);
// processLogService.log(null,null,sw.toString());
// throw new RuntimeException(e.getMessage());
// }
// return recordFileUrlList;
// }
@Override
@Override
public
List
<
TencentMeetingVO
.
RecordFile
>
getMeetingFiles
(
List
<
UserDTO
>
accessUserIds
)
{
public
List
<
TencentMeetingVO
.
RecordFile
>
getMeetingFiles
(
List
<
UserDTO
>
accessUserIds
)
{
Client
client
=
new
Client
.
Builder
()
Client
client
=
new
Client
.
Builder
()
...
@@ -328,10 +113,10 @@ public class TencentMeetingServiceImpl extends ServiceImpl<TecentMeetingMapper,T
...
@@ -328,10 +113,10 @@ public class TencentMeetingServiceImpl extends ServiceImpl<TecentMeetingMapper,T
List
<
TencentMeetingVO
.
RecordFile
>
meetingFiles
=
new
ArrayList
<>();
List
<
TencentMeetingVO
.
RecordFile
>
meetingFiles
=
new
ArrayList
<>();
List
<
TencentMeetingVO
.
RecordFile
>
recordFileUrlList
=
new
ArrayList
<>();
List
<
TencentMeetingVO
.
RecordFile
>
recordFileUrlList
=
new
ArrayList
<>();
List
<
MeetingInfo
>
meetingSaveList
=
new
ArrayList
<>();
List
<
MeetingInfo
>
meetingSaveList
=
new
ArrayList
<>();
// 查询近
两
天的会议录制列表
// 查询近
searchDays
天的会议录制列表
try
{
try
{
ZonedDateTime
now
=
ZonedDateTime
.
now
();
ZonedDateTime
now
=
ZonedDateTime
.
now
();
long
startTime
=
now
.
minusDays
(
2
).
toEpochSecond
();
long
startTime
=
now
.
minusDays
(
searchDays
).
toEpochSecond
();
long
endTime
=
now
.
toEpochSecond
();
long
endTime
=
now
.
toEpochSecond
();
AtomicInteger
currentPage
=
new
AtomicInteger
(
1
);
AtomicInteger
currentPage
=
new
AtomicInteger
(
1
);
...
...
src/main/java/com/cmeeting/service/impl/WeComServiceImpl.java
浏览文件 @
fb47d3e3
...
@@ -39,8 +39,10 @@ import java.util.stream.Collectors;
...
@@ -39,8 +39,10 @@ import java.util.stream.Collectors;
@Slf4j
@Slf4j
public
class
WeComServiceImpl
extends
ServiceImpl
<
WeComUserMapper
,
WeComUser
>
implements
WeComService
{
public
class
WeComServiceImpl
extends
ServiceImpl
<
WeComUserMapper
,
WeComUser
>
implements
WeComService
{
private
static
final
String
CORP_ID
=
"wx34544d057db97ffd"
;
@Value
(
value
=
"${wechat.corp_id}"
)
private
static
final
String
CORP_SECRET
=
"7YLePWG7rJqkQFnAB4FeylqAXpmu7q5qv_NOeSGNbm0"
;
private
String
CORP_ID
;
@Value
(
value
=
"${wechat.corp_secret}"
)
private
String
CORP_SECRET
;
private
static
final
String
TOKEN_KEY
=
"ZHONGJI_WECOM_KEY"
;
private
static
final
String
TOKEN_KEY
=
"ZHONGJI_WECOM_KEY"
;
@Resource
@Resource
...
@@ -67,8 +69,6 @@ public class WeComServiceImpl extends ServiceImpl<WeComUserMapper, WeComUser> i
...
@@ -67,8 +69,6 @@ public class WeComServiceImpl extends ServiceImpl<WeComUserMapper, WeComUser> i
JSONArray
departmentList
=
getDepartmentList
();
JSONArray
departmentList
=
getDepartmentList
();
Iterator
<
Object
>
iterator
=
departmentList
.
iterator
();
Iterator
<
Object
>
iterator
=
departmentList
.
iterator
();
List
<
WeComUser
>
users
=
new
ArrayList
<>();
List
<
WeComUser
>
users
=
new
ArrayList
<>();
// List<UserDTO> userEmailList = sysUserSyncMapper.getUserEmail(permissionTenantId);
// CollectionUtils.isEmpty(userEmailList) ? new HashMap<>() : userEmailList.
while
(
iterator
.
hasNext
()){
while
(
iterator
.
hasNext
()){
JSONObject
department
=
(
JSONObject
)
iterator
.
next
();
JSONObject
department
=
(
JSONObject
)
iterator
.
next
();
String
departmentId
=
String
.
valueOf
(
department
.
get
(
"id"
));
String
departmentId
=
String
.
valueOf
(
department
.
get
(
"id"
));
...
@@ -98,7 +98,6 @@ public class WeComServiceImpl extends ServiceImpl<WeComUserMapper, WeComUser> i
...
@@ -98,7 +98,6 @@ public class WeComServiceImpl extends ServiceImpl<WeComUserMapper, WeComUser> i
return
String
.
valueOf
(
redisUtils
.
get
(
TOKEN_KEY
));
return
String
.
valueOf
(
redisUtils
.
get
(
TOKEN_KEY
));
}
}
//获取token
//获取token
// String url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ww1fd8778458e9f1e8&corpsecret=uFRq9Xi8-dVY90LydXYBhjc91JnnfkPUR6lHDdeJ_fo";
String
url
=
"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid="
+
CORP_ID
+
"&corpsecret="
+
CORP_SECRET
;
String
url
=
"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid="
+
CORP_ID
+
"&corpsecret="
+
CORP_SECRET
;
String
accessToken
;
String
accessToken
;
OkHttpClient
client
=
new
OkHttpClient
();
OkHttpClient
client
=
new
OkHttpClient
();
...
...
src/main/resources/application.yml
浏览文件 @
fb47d3e3
...
@@ -32,6 +32,11 @@ TENCENT_SECRETID: 0ks7u8cgQ8DGVtlYZeRA9TxZCjvUT3oL
...
@@ -32,6 +32,11 @@ TENCENT_SECRETID: 0ks7u8cgQ8DGVtlYZeRA9TxZCjvUT3oL
TENCENT_SECRETKEY
:
gQU09rkJjiQfiGcUYdhiKq5Ol6LebXg4w7F7Ol0rwvvdv3Xy
TENCENT_SECRETKEY
:
gQU09rkJjiQfiGcUYdhiKq5Ol6LebXg4w7F7Ol0rwvvdv3Xy
TENCENT_ADMIN_USERID
:
woaJARCQAAftcvU6GGoOn66rdSZ4IrOA
TENCENT_ADMIN_USERID
:
woaJARCQAAftcvU6GGoOn66rdSZ4IrOA
############################################################## wechat
# prod
CORP_ID
:
wx34544d057db97ffd
CORP_SECRET
:
7YLePWG7rJqkQFnAB4FeylqAXpmu7q5qv_NOeSGNbm0
############################################################## email
############################################################## email
EMAIL_SENDER
:
cmeeting_assistant@cimc.com
EMAIL_SENDER
:
cmeeting_assistant@cimc.com
EMAIL_SENDER_PWD
:
scyou@xih45g6@xih4
EMAIL_SENDER_PWD
:
scyou@xih45g6@xih4
...
@@ -96,6 +101,10 @@ minio.accessKey: ${MINIO_USERNAME}
...
@@ -96,6 +101,10 @@ minio.accessKey: ${MINIO_USERNAME}
#访问的秘钥
#访问的秘钥
minio.secretKey
:
${MINIO_PASSWORD}
minio.secretKey
:
${MINIO_PASSWORD}
wechat
:
corp_id
:
${CORP_ID}
corp_secret
:
${CORP_SECRET}
tencent
:
tencent
:
appId
:
${TENCENT_APPID}
appId
:
${TENCENT_APPID}
sdkId
:
${TENCENT_SDKID}
sdkId
:
${TENCENT_SDKID}
...
@@ -105,7 +114,8 @@ tencent:
...
@@ -105,7 +114,8 @@ tencent:
meeting
:
meeting
:
token
:
QQZNb7xWQB47MpZF4C2DFAkv8
token
:
QQZNb7xWQB47MpZF4C2DFAkv8
aesKey
:
agy6ALUePp34lljWz1uIQWa7yQq3dgxxQNmfaN9GROm
aesKey
:
agy6ALUePp34lljWz1uIQWa7yQq3dgxxQNmfaN9GROm
base-save-path
:
E:/save/
base-save-path
:
E:/save/
#会议纪要临时文件存储路径
search-scope
:
2
#腾会转录文件拉取时间范围,查询过去n天的记录
email
:
email
:
sender
:
${EMAIL_SENDER}
sender
:
${EMAIL_SENDER}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论