对闹钟一些关键字,增加没有时间调用千问

This commit is contained in:
wulin 2023-11-22 09:59:40 +08:00
parent 106ddb6e50
commit 74fe812935
3 changed files with 47 additions and 6 deletions

View File

@ -60,7 +60,12 @@ public class AlarmClockActionCommand extends ActionCommand implements IActionCom
return Mono.just(false);
}
ActionTime actionTime = action.getTime();
if(actionTime == null){
log.info("闹钟关键字没有时间,调用千问");
return toTongYi(action, baseSession, AskTypeEnum.TTS.getCode(), actionSendMessage).flatMap(b -> {
return Mono.empty();
});
}
DeviceAlarmClockRecordRequest request;
Integer day = null;

View File

@ -35,6 +35,10 @@ public class AliYunXingChen {
*/
ChatApiSub api;
/**
* 时间戳超过一定时间且未更新的那么将被清理
*/
Long timestamp = System.currentTimeMillis();
List<Message> messages = new ArrayList<>(50);
@ -89,6 +93,7 @@ public class AliYunXingChen {
private Mono<Boolean> sendMsg(IQianWen<? super String> onNext,
QWenReplyResponse qwenReplyResponse){
timestamp = System.currentTimeMillis();//更新最后使用时间
chatReqParams.setMessages(messages);
qwenReplyResponse.setCode(200);
try {

View File

@ -18,13 +18,11 @@ import org.springframework.data.redis.core.ReactiveValueOperations;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import reactor.core.publisher.Mono;
import reactor.core.scheduler.Schedulers;
import javax.annotation.Resource;
import java.time.Duration;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
@ -37,6 +35,15 @@ public class TongYiXinChenService implements ITongYi{
protected static ConcurrentHashMap<String, AliYunXingChen> qianwenGroup = new ConcurrentHashMap<>();
/**
* 超过该时间还未发送消息的将被剔除
*/
static Long TIME_OUT = 60000L;
public TongYiXinChenService(){
//checkOutTime().subscribeOn(Schedulers.newSingle("tongyi-xinchen-clean")).subscribe();
}
@Override
public Mono<QWenReplyResponse> communication(TongYiCommunicationRest rest, IQianWen<? super String> onNext){
AliYunXingChen aliXingChen = null;
@ -53,7 +60,31 @@ public class TongYiXinChenService implements ITongYi{
return aliXingChen.sendMessage(rest.getText(), onNext, qWenReplyResponse/*, reactiveStringRedisTemplate*/).flatMap(b -> {
return Mono.just(qWenReplyResponse);
});
}
private Mono<Void> checkOutTime(){
log.info("开启清理内存数据任务");
List<String> keys = new ArrayList<>();
while(true){
for (String key: qianwenGroup.keySet()
) {
AliYunXingChen aliYunXingChen = qianwenGroup.get(key);
Long now = System.currentTimeMillis();
if(now - aliYunXingChen.getTimestamp() > TIME_OUT){
keys.add(key);
}
}
log.info("需要清除内存中:{}数据", keys.size());
for(String key: keys){
qianwenGroup.remove(key);
}
keys.clear();
try {
Thread.sleep(5000);
}catch (Exception e){
log.info("定时清理内存中数据异常{}", e);
}
}
}
}