http://goo-ai.vip/api/process 注意:必须为异步请求,收到值时根据结果修改流程状态
POST
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| question | 是 | string | 对方(债务人)说的话 1、max-lenght:300字 |
| userProp | 是 | object | 用户参数 |
| chatHistory | 是 | array | 历史聊天记录 1、暂时先传历史2轮记录,后期可调整; 2、需要传递客服实际回复的内容。 |
| questionRole | 是 | string | 对方角色(债务人或其亲属、朋友等) |
| answerRole | 是 | string | 客服角色(如调解专员) |
| employeeId | 否 | string | 员工编号(如”160101“,用于调用私有话术库。不传则默认线上话术库) |
| process | 是 | DesideProcess | 决策流程信息 |
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| userName | 是 | string | 债务人称呼 |
| delayDays | 是 | number | 逾期天数 |
| debt | 是 | number | 债务金额 |
| proxyName | 否 | string | 委托授权方,也叫项目(不传则不过滤该参数) |
| product | 否 | string | 产品名称(不传则不过滤该参数) |
| interest | 否 | number | 利息 |
| rates | 否 | number | 利息可减免比例 |
| character | 否 | string | 债务人性格 |
| gender | 否 | string | 性别 |
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| processEnum | 是 | ProcessEnum | 决策流程Enum(如下定义) |
| count | 是 | number | 节点轮数 |
export enum ProcessEnum {
start=0, whyDebt=1, repayWilling=2, repayAbility=3, getResult=4
}
1、需要维护当前流程状态(包含当前所在节点以及对应的对话轮数),见DesideProcess
2、每次请求流式接口(docs)都需要带上process字段,开始默认节点为 start(0)。
x
//起始状态:processEnum为start, start只需要一轮,所以初始值count直接为maxCount(maxCount表示点击的最多对话轮数,每一轮对话后count会+1) let processObject:DesideProcess = { processEnum:ProcessEnum.start, count:maxCount }
const params = { question, userProp, chatHistory: newHistoryQ, questionRole, answerRole, employeeId: getEmployeeId(), process: isProcess?process:undefined } //isProcess为1,则开启决策流程 if(isProcess == 1){ //start状态时,不需要请求process接口,自动往下一流程节点走。 fetch("/api/process", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(params) }).then(async (response) => { if(response.status == 200){ const data = response.body; if (data) { const reader = data.getReader(); const decoder = new TextDecoder(); const { value } = await reader.read(); const content = decoder.decode(value); setOutput(output + "\n"+content); const json = JSON.parse(content); if(json && json.process && json.value){ handleProcess(json.process, json.value); } } } }); }
//更新决策流程节点信息 function handleProcess(curProcess:number, curValue:string) { if (process.processEnum > ProcessEnum.getResult){ process.processEnum = ProcessEnum.getResult; return; } //如果curValue的结果为”是“(说明已经获取到对应节点的信息),或者已超过节点最大对话轮数,则进入下一节点。 if (process.count >= maxCount || (curValue == "是")){ setProcess({ processEnum:process.processEnum + (process.processEnum==ProcessEnum.getResult?0:1), count:0, }) } else { //否则当前节点的对话轮数+1 const newCount = process.count+1; setProcess({ processEnum:process.processEnum, count:newCount, }) } }
xxxxxxxxxx{ "process":"1-0", "question":"债务人是否说明未还款原因?", "value": "是", "detail": "债务人在对话中提到了未还款的原因,需要进一步分析原因是否合理以及是否有解决方案。"}//根据以上value,判断是否直接进入下一流程。