lmx 1 semana atrás
pai
commit
0330fdeb78

+ 33 - 0
src/api/company/easyCall.js

@@ -0,0 +1,33 @@
+import request from '@/utils/request'
+
+// 获取外呼网关列表(外呼线路)
+export function getGatewayList() {
+  return request({
+    url: '/company/easyCall/gateway/list',
+    method: 'get'
+  })
+}
+
+// 获取大模型配置列表(大模型底座)
+export function getLlmAccountList() {
+  return request({
+    url: '/company/easyCall/llmAccount/list',
+    method: 'get'
+  })
+}
+
+// 获取音色列表
+export function getVoiceCodeList() {
+  return request({
+    url: '/company/easyCall/voiceCode/list',
+    method: 'get'
+  })
+}
+
+// 获取技能组列表(tts厂商)
+export function getBusiGroupList() {
+  return request({
+    url: '/company/easyCall/busiGroup/list',
+    method: 'get'
+  })
+}

+ 95 - 7
src/views/company/companyWorkflow/design.vue

@@ -277,7 +277,8 @@
               </el-form-item>
               </el-form-item>
             </div>
             </div>
 
 
-            <!-- AI外呼配置 -->
+            <!-- AI外呼配置(旧版天天外呼,已停用) -->
+            <!--
             <div v-if="selectedNode.nodeType == 'AI_CALL_TASK'" class="property-section">
             <div v-if="selectedNode.nodeType == 'AI_CALL_TASK'" class="property-section">
               <div class="section-title">
               <div class="section-title">
                 <i class="el-icon-phone"></i>外呼配置
                 <i class="el-icon-phone"></i>外呼配置
@@ -302,7 +303,6 @@
                   <el-option label="呼叫机器人后挂断" :value="7"/>
                   <el-option label="呼叫机器人后挂断" :value="7"/>
                 </el-select>
                 </el-select>
               </el-form-item>
               </el-form-item>
-
               <div class="form-row">
               <div class="form-row">
                 <el-form-item label="呼叫倍率" class="half-width">
                 <el-form-item label="呼叫倍率" class="half-width">
                   <el-select v-model="selectedNode.nodeConfig.multiplier" @change="handleConfigChange" placeholder="选择倍率">
                   <el-select v-model="selectedNode.nodeConfig.multiplier" @change="handleConfigChange" placeholder="选择倍率">
@@ -314,14 +314,12 @@
                   </el-select>
                   </el-select>
                 </el-form-item>
                 </el-form-item>
               </div>
               </div>
-
               <el-form-item label="自动重呼">
               <el-form-item label="自动重呼">
                 <el-radio-group v-model="selectedNode.nodeConfig.autoRecall" @change="handleConfigChange">
                 <el-radio-group v-model="selectedNode.nodeConfig.autoRecall" @change="handleConfigChange">
                   <el-radio :label="0">否</el-radio>
                   <el-radio :label="0">否</el-radio>
                   <el-radio :label="1">是</el-radio>
                   <el-radio :label="1">是</el-radio>
                 </el-radio-group>
                 </el-radio-group>
               </el-form-item>
               </el-form-item>
-
               <el-form-item label="重呼次数" v-if="selectedNode.nodeConfig.autoRecall == 1">
               <el-form-item label="重呼次数" v-if="selectedNode.nodeConfig.autoRecall == 1">
                 <el-select v-model="selectedNode.nodeConfig.recallTimes" @change="handleConfigChange" placeholder="选择重呼次数">
                 <el-select v-model="selectedNode.nodeConfig.recallTimes" @change="handleConfigChange" placeholder="选择重呼次数">
                   <el-option label="不自动重呼" :value="0"/>
                   <el-option label="不自动重呼" :value="0"/>
@@ -333,6 +331,74 @@
                 </el-select>
                 </el-select>
               </el-form-item>
               </el-form-item>
             </div>
             </div>
+            -->
+
+            <!-- AI外呼配置(新版 EasyCallCenter365) -->
+            <div v-if="selectedNode.nodeType == 'AI_CALL_TASK'" class="property-section">
+              <div class="section-title">
+                <i class="el-icon-phone"></i>外呼配置
+              </div>
+              <el-form-item label="外呼网关">
+                <el-select
+                  v-model="selectedNode.nodeConfig.gatewayId"
+                  filterable
+                  placeholder="请选择外呼网关"
+                  @change="handleConfigChange"
+                >
+                  <el-option
+                    v-for="item in easyCallGatewayList"
+                    :key="item.id"
+                    :label="item.gwDesc"
+                    :value="item.id"
+                  />
+                </el-select>
+              </el-form-item>
+              <el-form-item label="大模型">
+                <el-select
+                  v-model="selectedNode.nodeConfig.llmAccountId"
+                  filterable
+                  placeholder="请选择大模型"
+                  @change="handleConfigChange"
+                >
+                  <el-option
+                    v-for="item in easyCallLlmAccountList"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id"
+                  />
+                </el-select>
+              </el-form-item>
+              <el-form-item label="音色">
+                <el-select
+                  v-model="selectedNode.nodeConfig.voiceCode"
+                  filterable
+                  placeholder="请选择音色"
+                  @change="handleConfigChange('handleVoice')"
+                >
+                  <el-option
+                    v-for="item in easyCallVoiceCodeList"
+                    :key="item.voiceCode"
+                    :label="item.voiceName"
+                    :value="item.voiceCode"
+                  />
+                </el-select>
+              </el-form-item>
+              <el-form-item label="技能组">
+                <el-select
+                  v-model="selectedNode.nodeConfig.busiGroupId"
+                  filterable
+                  placeholder="请选择技能组"
+                  @change="handleConfigChange"
+                >
+                  <el-option
+                    v-for="item in easyCallBusiGroupList"
+                    :key="item.groupId"
+                    :label="item.bizGroupName"
+                    :value="item.groupId"
+                  />
+                </el-select>
+              </el-form-item>
+            </div>
 
 
             <!-- AI短信配置 -->
             <!-- AI短信配置 -->
             <div v-if="selectedNode.nodeType == 'AI_SEND_MSG_TASK'" class="property-section">
             <div v-if="selectedNode.nodeType == 'AI_SEND_MSG_TASK'" class="property-section">
@@ -514,7 +580,7 @@ import {
 } from "@/api/company/companyVoiceRobotic";
 } from "@/api/company/companyVoiceRobotic";
 import { getWorkflow, addWorkflow, updateWorkflow, getNodeTypes } from '@/api/company/companyWorkflow'
 import { getWorkflow, addWorkflow, updateWorkflow, getNodeTypes } from '@/api/company/companyWorkflow'
 import {getDicts} from "@/api/system/dict/data";
 import {getDicts} from "@/api/system/dict/data";
-
+import { getGatewayList, getLlmAccountList, getVoiceCodeList, getBusiGroupList } from '@/api/company/easyCall'
 import { listAll } from '@/api/company/wxDialog';
 import { listAll } from '@/api/company/wxDialog';
 export default {
 export default {
   name: 'WorkflowDesign',
   name: 'WorkflowDesign',
@@ -595,6 +661,11 @@ export default {
       robotList: [],
       robotList: [],
       smsTempList: [],
       smsTempList: [],
       dialogList: [],
       dialogList: [],
+      // EasyCallCenter365 外呼配置相关列表
+      easyCallGatewayList: [],     // 外呼线路(网关)列表
+      easyCallLlmAccountList: [],  // 大模型底座列表
+      easyCallVoiceCodeList: [],   // 音色列表
+      easyCallBusiGroupList: [],   // tts厂商(技能组)列表
     }
     }
   },
   },
   created() {
   created() {
@@ -635,7 +706,11 @@ export default {
     },
     },
 
 
     // 处理配置变化,强制更新视图
     // 处理配置变化,强制更新视图
-    handleConfigChange() {
+    handleConfigChange(v) {
+      if( !!v && v === "handleVoice" ){
+       let voice =  this.easyCallVoiceCodeList.filter(e=>e.voiceCode == this.selectedNode.nodeConfig.voiceCode);
+       this.selectedNode.nodeConfig.voiceSource = voice[0].voiceSource;
+      }
       // 强制触发Vue响应式更新
       // 强制触发Vue响应式更新
       this.$forceUpdate()
       this.$forceUpdate()
     },
     },
@@ -688,6 +763,19 @@ export default {
         }).catch(res=>{
         }).catch(res=>{
           console.log(res);
           console.log(res);
         });
         });
+        // 加载 EasyCallCenter365 四项基础数据
+        getGatewayList().then(res => {
+          this.easyCallGatewayList = res.data || []
+        })
+        getLlmAccountList().then(res => {
+          this.easyCallLlmAccountList = res.data || []
+        })
+        getVoiceCodeList().then(res => {
+          this.easyCallVoiceCodeList = res.data || []
+        })
+        getBusiGroupList().then(res => {
+          this.easyCallBusiGroupList = res.data || []
+        })
       }
       }
       if (this.selectedNode.nodeType === 'AI_SEND_MSG_TASK') {
       if (this.selectedNode.nodeType === 'AI_SEND_MSG_TASK') {
         getSmsTempList().then(res => {
         getSmsTempList().then(res => {
@@ -1344,7 +1432,7 @@ export default {
         addWorkflow(data).then(res => {
         addWorkflow(data).then(res => {
           this.msgSuccess('保存成功')
           this.msgSuccess('保存成功')
           this.workflowId = res.data
           this.workflowId = res.data
-          this.$router.replace('/company/companyWorkflow/design/' + this.workflowId)
+          this.$router.replace('/companyWx/companyWorkflow/design/' + this.workflowId)
         })
         })
       }
       }
     }
     }