fix: flowise
This commit is contained in:
parent
8e9312482f
commit
8876b4e70f
@ -20,19 +20,29 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class TeFlowiseController extends BaseController {
|
public class TeFlowiseController extends BaseController {
|
||||||
|
|
||||||
|
|
||||||
private final FlowiseActionService flowiseActionService;
|
private final FlowiseActionService flowiseActionService;
|
||||||
|
|
||||||
|
@ApiOperation("调用flowise")
|
||||||
|
@PostMapping("/start")
|
||||||
|
public AjaxResult start(String question) {
|
||||||
|
return AjaxResult.ok(flowiseActionService.start(question));
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation("终止flowise")
|
||||||
|
@GetMapping("/abort")
|
||||||
|
public AjaxResult abort() {
|
||||||
|
return AjaxResult.ok(flowiseActionService.abort());
|
||||||
|
}
|
||||||
|
|
||||||
@ApiOperation("执行指令")
|
@ApiOperation("执行指令")
|
||||||
@PostMapping("/command")
|
@PostMapping("/command")
|
||||||
public AjaxResult command(@RequestBody FlowiseActionRequestVO request) {
|
public AjaxResult command(@RequestBody FlowiseActionRequestVO request) {
|
||||||
return AjaxResult.ok(flowiseActionService.command(request));
|
return AjaxResult.ok(flowiseActionService.command(request));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation("闲聊")
|
||||||
@GetMapping("/chat")
|
@GetMapping("/chat")
|
||||||
public AjaxResult chat(@RequestParam("terminalId") String terminalId,
|
public AjaxResult chat(@RequestParam("text") String text) {
|
||||||
@RequestParam("text") String text,
|
return AjaxResult.ok(flowiseActionService.chat(text));
|
||||||
@RequestParam("bioId") String bioId) {
|
|
||||||
return AjaxResult.success(flowiseActionService.chat(terminalId, text,bioId));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -120,3 +120,9 @@ api:
|
|||||||
INTENT_RECOGNITION: # 意图识别
|
INTENT_RECOGNITION: # 意图识别
|
||||||
app-id: d3c98sp0gdon0fcf6l00
|
app-id: d3c98sp0gdon0fcf6l00
|
||||||
app-key: d3c98vp0gdon0fcf6n20
|
app-key: d3c98vp0gdon0fcf6n20
|
||||||
|
|
||||||
|
flowise:
|
||||||
|
tts: 192.168.0.222:8080/tts/
|
||||||
|
start: http://192.168.0.134:3000/api/v1/prediction/f99329e9-b33d-437d-90ed-69eaa8a05418
|
||||||
|
abort: http://192.168.0.134:3000/api/v1/chatmessage/abort/f99329e9-b33d-437d-90ed-69eaa8a05418/
|
||||||
|
api-key: pg61JW6W_GXyqmqSoURJ4mlSRrCMRzGLBJli_w3BFkg
|
||||||
@ -120,3 +120,9 @@ api:
|
|||||||
INTENT_RECOGNITION: # 意图识别
|
INTENT_RECOGNITION: # 意图识别
|
||||||
app-id: d3c98sp0gdon0fcf6l00
|
app-id: d3c98sp0gdon0fcf6l00
|
||||||
app-key: d3c98vp0gdon0fcf6n20
|
app-key: d3c98vp0gdon0fcf6n20
|
||||||
|
|
||||||
|
flowise:
|
||||||
|
tts: 192.168.0.222:8080/tts/
|
||||||
|
start: http://192.168.0.134:3000/api/v1/prediction/f99329e9-b33d-437d-90ed-69eaa8a05418
|
||||||
|
abort: http://192.168.0.134:3000/api/v1/chatmessage/abort/f99329e9-b33d-437d-90ed-69eaa8a05418/
|
||||||
|
api-key: pg61JW6W_GXyqmqSoURJ4mlSRrCMRzGLBJli_w3BFkg
|
||||||
@ -114,7 +114,7 @@ public class SecurityConfig
|
|||||||
requests.antMatchers("/login", "/register", "/captchaImage").permitAll()
|
requests.antMatchers("/login", "/register", "/captchaImage").permitAll()
|
||||||
// 静态资源,可匿名访问
|
// 静态资源,可匿名访问
|
||||||
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
|
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
|
||||||
.antMatchers("/flowise/**","/kws/**","/ws/**","/api/grpc/**","/show/**","/node-red/**","/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
|
.antMatchers("/flow/**","/flowise/**","/kws/**","/ws/**","/api/grpc/**","/show/**","/node-red/**","/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
|
||||||
// 除上面外的所有请求全部需要鉴权认证
|
// 除上面外的所有请求全部需要鉴权认证
|
||||||
.anyRequest().authenticated();
|
.anyRequest().authenticated();
|
||||||
})
|
})
|
||||||
|
|||||||
@ -1,14 +1,21 @@
|
|||||||
package com.cmvr.test.service;
|
package com.cmvr.test.service;
|
||||||
|
|
||||||
|
import cn.hutool.http.HttpRequest;
|
||||||
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
|
import com.cmvr.common.exception.GlobalException;
|
||||||
import com.cmvr.common.utils.http.CallAPIUtil;
|
import com.cmvr.common.utils.http.CallAPIUtil;
|
||||||
|
import com.cmvr.common.utils.uuid.IdUtils;
|
||||||
import com.cmvr.edge.client.model.EdgeCommonVO;
|
import com.cmvr.edge.client.model.EdgeCommonVO;
|
||||||
import com.cmvr.edge.client.service.EdgeBioHeadService;
|
import com.cmvr.edge.client.service.EdgeBioHeadService;
|
||||||
import com.cmvr.test.enums.FlowiseActionEnum;
|
import com.cmvr.test.enums.FlowiseActionEnum;
|
||||||
import com.cmvr.test.model.vo.FlowiseActionRequestVO;
|
import com.cmvr.test.model.vo.FlowiseActionRequestVO;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -16,11 +23,87 @@ import java.util.Map;
|
|||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class FlowiseActionService {
|
public class FlowiseActionService {
|
||||||
|
|
||||||
private final EdgeBioHeadService edgeBioHeadService;
|
private final EdgeBioHeadService edgeBioHeadService;
|
||||||
|
|
||||||
|
@Value("${flowise.tts}")
|
||||||
|
private String flowiseTts;
|
||||||
|
|
||||||
|
@Value("${flowise.start}")
|
||||||
|
private String flowiseStart;
|
||||||
|
|
||||||
|
@Value("${flowise.abort}")
|
||||||
|
private String flowiseAbort;
|
||||||
|
|
||||||
|
@Value("${flowise.api-key}")
|
||||||
|
private String flowiseApiKey;
|
||||||
|
|
||||||
|
@Resource(name = "threadPoolTaskExecutor")
|
||||||
|
private final ThreadPoolTaskExecutor executor;
|
||||||
|
|
||||||
|
private final String terminalId = "4ed1246c465b97975f96c9ef8371a3bd";
|
||||||
|
private final String bioId = "bio_head";
|
||||||
|
|
||||||
|
|
||||||
|
private final Object lock = new Object();
|
||||||
|
private String chatId = null;
|
||||||
|
|
||||||
|
public String start(String question) {
|
||||||
|
synchronized (lock) {
|
||||||
|
if (chatId != null) {
|
||||||
|
return "Flow is already running: " + chatId;
|
||||||
|
}
|
||||||
|
|
||||||
|
chatId = IdUtils.fastUUID();
|
||||||
|
|
||||||
|
JSONObject body = new JSONObject();
|
||||||
|
body.put("question", question);
|
||||||
|
body.put("chatId", chatId);
|
||||||
|
body.put("streaming", true);
|
||||||
|
|
||||||
|
executor.submit(() -> {
|
||||||
|
try {
|
||||||
|
HttpRequest.post(flowiseStart)
|
||||||
|
.header("Content-Type", "application/json")
|
||||||
|
.body(body.toJSONString())
|
||||||
|
.timeout(0)
|
||||||
|
.execute()
|
||||||
|
.body();
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new GlobalException("flowise 流程执行失败: ", e.getMessage());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return chatId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String abort() {
|
||||||
|
EdgeCommonVO edgeCommonVO = new EdgeCommonVO();
|
||||||
|
edgeCommonVO.setDeviceId(bioId);
|
||||||
|
edgeCommonVO.setTerminalId(terminalId);
|
||||||
|
edgeBioHeadService.speakStop(edgeCommonVO);
|
||||||
|
CallAPIUtil.doPostJson(flowiseTts + "stop", null, null);
|
||||||
|
synchronized (lock) {
|
||||||
|
|
||||||
|
if (chatId == null) {
|
||||||
|
return "No flow running.";
|
||||||
|
}
|
||||||
|
|
||||||
|
String id = chatId;
|
||||||
|
|
||||||
|
String result = HttpRequest.put(flowiseAbort + id)
|
||||||
|
.header("Authorization", "Bearer " + flowiseApiKey)
|
||||||
|
.execute()
|
||||||
|
.body();
|
||||||
|
|
||||||
|
chatId = null;
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public String command(FlowiseActionRequestVO request) {
|
public String command(FlowiseActionRequestVO request) {
|
||||||
String terminalId = "4ed1246c465b97975f96c9ef8371a3bd";
|
|
||||||
String bioId = "bio_head";
|
|
||||||
String action = request.getAction();
|
String action = request.getAction();
|
||||||
FlowiseActionEnum actionEnum = FlowiseActionEnum.fromAction(action);
|
FlowiseActionEnum actionEnum = FlowiseActionEnum.fromAction(action);
|
||||||
switch (actionEnum) {
|
switch (actionEnum) {
|
||||||
@ -45,7 +128,7 @@ public class FlowiseActionService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public String chat(String terminalId, String text, String bioId) {
|
public String chat(String text) {
|
||||||
// 播放前调用张嘴
|
// 播放前调用张嘴
|
||||||
EdgeCommonVO edgeCommonVO = new EdgeCommonVO();
|
EdgeCommonVO edgeCommonVO = new EdgeCommonVO();
|
||||||
edgeCommonVO.setDeviceId(bioId);
|
edgeCommonVO.setDeviceId(bioId);
|
||||||
@ -56,7 +139,7 @@ public class FlowiseActionService {
|
|||||||
body.put("voice", "x4_yezi");
|
body.put("voice", "x4_yezi");
|
||||||
|
|
||||||
// edgeBioHeadService.speakStart(edgeCommonVO);
|
// edgeBioHeadService.speakStart(edgeCommonVO);
|
||||||
CallAPIUtil.doPostJson("192.168.0.222:8080/tts/play", null, body);
|
CallAPIUtil.doPostJson(flowiseTts + "play", null, body);
|
||||||
} finally {
|
} finally {
|
||||||
// 播放完成调用闭嘴
|
// 播放完成调用闭嘴
|
||||||
// edgeBioHeadService.speakStop(edgeCommonVO);
|
// edgeBioHeadService.speakStop(edgeCommonVO);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user