yzx 5 일 전
부모
커밋
5f474ec394

+ 36 - 1
ruoyi-admin/src/main/java/com/ruoyi/cc/controller/FsConfController.java

@@ -283,6 +283,16 @@ public class FsConfController extends BaseController {
         return "cc/aliasrconf/aliasrconf";
     }
 
+    /**
+     * ASR(阿里新模块)参数配置
+     * @return
+     */
+    @RequiresPermissions("cc:aliasrbridgeconf:view")
+    @GetMapping(value = "/aliasrbridgeconf")
+    public String aliAsrBridgeConf() {
+        return "cc/aliasrbridgeconf/aliasrbridgeconf";
+    }
+
 
     /**
      * 获取ASR配置
@@ -295,6 +305,17 @@ public class FsConfController extends BaseController {
         return getConfigFileJsonData(asrFileName, 5);
     }
 
+    /**
+     * 获取新 ASR 模块配置
+     * @return
+     */
+    @GetMapping(value = "/getAliBridgeAsrConf")
+    @ResponseBody
+    public AjaxResult getAliBridgeAsrConf() {
+        String asrFileName = "/autoload_configs/ali_asr.conf.xml";
+        return getConfigFileJsonData(asrFileName, 5);
+    }
+
     /**
      * 获取FunASR配置
      * @return
@@ -452,6 +473,19 @@ public class FsConfController extends BaseController {
         return saveAndReloadAsrModule(asrFileName, moduleName, params, "aliyun");
     }
 
+    /**
+     * 保存新 ASR 模块配置
+     * @param params
+     * @return
+     */
+    @PostMapping(value = "/setAliBridgeAsrConf")
+    @ResponseBody
+    public AjaxResult setAliBridgeAsrConf(@RequestBody JSONArray params) {
+        String asrFileName = "/autoload_configs/ali_asr.conf.xml";
+        String moduleName = "mod_ali_asr";
+        return saveAndReloadAsrModule(asrFileName, moduleName, params, "ali");
+    }
+
     /**
      * 保存ASR配置
      * @param params
@@ -537,7 +571,7 @@ public class FsConfController extends BaseController {
 
 
     /**
-     * 设置ASR引擎(mod_xunfei_asr、mod_aliyun_asr)
+     * 设置ASR引擎(mod_xunfei_asr、mod_aliyun_asr、mod_ali_asr
      * @param asrengine
      * @return
      */
@@ -550,6 +584,7 @@ public class FsConfController extends BaseController {
                 EslConnectionUtil.sendSyncApiCommand("unload", "mod_xunfei_asr");
                 EslConnectionUtil.sendSyncApiCommand("unload", "mod_funasr");
                 EslConnectionUtil.sendSyncApiCommand("unload", "mod_aliyun_asr");
+                EslConnectionUtil.sendSyncApiCommand("unload", "mod_ali_asr");
 
                 EslMessage resp = EslConnectionUtil.sendSyncApiCommand("load", asrengine.trim());
                 String text = CommonUtils.ListToString(resp.getBodyLines() , '\n');

+ 5 - 1
ruoyi-admin/src/main/java/com/ruoyi/cc/service/impl/FsConfServiceImpl.java

@@ -224,6 +224,9 @@ public class FsConfServiceImpl implements IFsConfService {
                     if ("mod_aliyun_asr".equals(element.getAttribute("module"))){
                         return "mod_aliyun_asr";
                     }
+                    if ("mod_ali_asr".equals(element.getAttribute("module"))){
+                        return "mod_ali_asr";
+                    }
                     if ("mod_funasr".equals(element.getAttribute("module"))){
                         return "mod_funasr";
                     }
@@ -256,7 +259,8 @@ public class FsConfServiceImpl implements IFsConfService {
                     Element element = (Element) nodes.item(i);
                     if ("mod_xunfei_asr".equals(element.getAttribute("module"))
                             || "mod_funasr".equals(element.getAttribute("module"))
-                            || "mod_aliyun_asr".equals(element.getAttribute("module"))){
+                            || "mod_aliyun_asr".equals(element.getAttribute("module"))
+                            || "mod_ali_asr".equals(element.getAttribute("module"))){
                         existAsrMod = true;
                         if (StringUtils.isNotEmpty(asrengine)) {
                             element.setAttribute("module", asrengine);

+ 2 - 2
ruoyi-admin/src/main/resources/application-test.yml

@@ -7,9 +7,9 @@ spring:
     druid:
       # 主库数据源
       master:
-        url: jdbc:mysql://192.168.67.238:3306/easycallcenter365?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+        url: jdbc:mysql://127.0.0.1:3306/easycallcenter365?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
         username: root
-        password: tydic202x888
+        password: root
       # 从库数据源
       slave:
         # 从数据源开关/默认关闭

+ 6 - 4
ruoyi-admin/src/main/resources/static/i18n/messages.properties

@@ -211,6 +211,7 @@ switchconf.msg.save.success=配置保存成功!
 switchconf.msg.restart.success=重启成功!
 switchconf.asr.xunfei.header=讯飞ASR参数配置
 switchconf.asr.ali.header=阿里ASR参数配置
+switchconf.asr.ali.new.header=阿里ASR(新)参数配置
 switchconf.asr.funasr.header=FunAsr参数配置
 switchconf.asr.chinatelecom.header=电信ASR参数配置
 switchconf.tts.ali.header=阿里云tts参数配置
@@ -219,8 +220,9 @@ switchconf.tts.chinatelecom.header=电信tts参数配置
 switchconf.asr.engine.header=asr引擎选择
 switchconf.asr.engine.option1=无
 switchconf.asr.engine.option2=FunASR(免费)
-switchconf.asr.engine.option3=阿里ASR
-switchconf.asr.engine.option4=讯飞ASR
+switchconf.asr.engine.option3=阿里云ASR
+switchconf.asr.engine.option4=阿里ASR(新)
+switchconf.asr.engine.option5=讯飞ASR
 switchconf.asr.engine.option5=电信ASR
 switchconf.cert.header=网页电话证书配置
 switchconf.cert.label=证书内容:
@@ -1904,7 +1906,7 @@ _cc.params.call_monitor_enabled=是否启用通话监听
 _cc.params.fs_log_file_path=FreeSWITCH日志路径
 _cc.params.cc_log_file_path=call-center日志路径
 _cc.params.fs_call_asr_enabled=是否启动双向asr语音识别并推送结果
-_cc.params.fs_call_asr_engine=双向asr语音识别,使用哪个asr引擎(chinatelecom/funasr/aliyun)
+_cc.params.fs_call_asr_engine=双向asr语音识别,使用哪个asr引擎(chinatelecom/funasr/aliyun/ali)
 _cc.params.inbound_call_monitor_enabled=是否启用呼入电话排队监控
 _cc.params.fs_docker_container_name=Freeswitch的docker容器名称
 _cc.params.fs_conf_directory=Freeswitch配置文件路径
@@ -2092,4 +2094,4 @@ callTask.form.ttsModels.empty=请选择语音合成模型
 callTask.form.asrModels=ASR模型
 callTask.form.asrModels.empty=请选择语音识别模型
 ivr.form.ttsModels=TTS模型
-ivr.form.ttsModels.empty=请选择语音合成模型
+ivr.form.ttsModels.empty=请选择语音合成模型

+ 6 - 4
ruoyi-admin/src/main/resources/static/i18n/messages_en.properties

@@ -211,6 +211,7 @@ switchconf.msg.save.success=Configuration saved successfully!
 switchconf.msg.restart.success=Restart successful!
 switchconf.asr.xunfei.header=IFlytek ASR Parameter Configuration
 switchconf.asr.ali.header=Alibaba ASR Parameter Configuration
+switchconf.asr.ali.new.header=Ali ASR (New) Parameter Configuration
 switchconf.asr.funasr.header=FunASR Parameter Configuration
 switchconf.asr.chinatelecom.header=ChinaTele Parameter Configuration
 switchconf.tts.ali.header=Alibaba Cloud TTS Parameter Configuration
@@ -219,8 +220,9 @@ switchconf.tts.chinatelecom.header=ChinaTele TTS Parameter Configuration
 switchconf.asr.engine.header=ASR Engine Selection
 switchconf.asr.engine.option1=None
 switchconf.asr.engine.option2=FunASR (Free)
-switchconf.asr.engine.option3=Alibaba ASR
-switchconf.asr.engine.option4=IFlytek ASR
+switchconf.asr.engine.option3=Alibaba Cloud ASR
+switchconf.asr.engine.option4=Ali ASR (New)
+switchconf.asr.engine.option5=IFlytek ASR
 switchconf.asr.engine.option5=ChinaTele ASR
 switchconf.cert.header=WebRTC Certificate Configuration
 switchconf.cert.label=Certificate Content:
@@ -1904,7 +1906,7 @@ _cc.params.call_monitor_enabled=Enable Call Monitoring
 _cc.params.fs_log_file_path=FreeSWITCH Log File Path
 _cc.params.cc_log_file_path=Call Center Log File Path
 _cc.params.fs_call_asr_enabled=Enable Bidirectional ASR Recognition and Result Push
-_cc.params.fs_call_asr_engine=Bidirectional ASR Engine (chinatelecom/funasr/aliyun)
+_cc.params.fs_call_asr_engine=Bidirectional ASR Engine (chinatelecom/funasr/aliyun/ali)
 _cc.params.inbound_call_monitor_enabled=Enable Inbound Call Queue Monitoring
 _cc.params.fs_docker_container_name=FreeSWITCH Docker Container Name
 _cc.params.fs_conf_directory=FreeSWITCH Configuration Directory
@@ -2092,4 +2094,4 @@ callTask.form.ttsModels.empty=Please Select TTS Models
 callTask.form.asrModels=ASR Models
 callTask.form.asrModels.empty=Please Select ASR Models
 ivr.form.ttsModels=TTS Models
-ivr.form.ttsModels.empty=Please Select TTS Models
+ivr.form.ttsModels.empty=Please Select TTS Models

+ 5 - 3
ruoyi-admin/src/main/resources/static/i18n/messages_en_US.properties

@@ -211,6 +211,7 @@ switchconf.msg.save.success=Configuration saved successfully!
 switchconf.msg.restart.success=Restart successful!
 switchconf.asr.xunfei.header=IFlytek ASR Parameter Configuration
 switchconf.asr.ali.header=Alibaba ASR Parameter Configuration
+switchconf.asr.ali.new.header=Ali ASR (New) Parameter Configuration
 switchconf.asr.funasr.header=FunASR Parameter Configuration
 switchconf.asr.chinatelecom.header=ChinaTele Parameter Configuration
 switchconf.tts.ali.header=Alibaba Cloud TTS Parameter Configuration
@@ -219,8 +220,9 @@ switchconf.tts.chinatelecom.header=ChinaTele TTS Parameter Configuration
 switchconf.asr.engine.header=ASR Engine Selection
 switchconf.asr.engine.option1=None
 switchconf.asr.engine.option2=FunASR (Free)
-switchconf.asr.engine.option3=Alibaba ASR
-switchconf.asr.engine.option4=IFlytek ASR
+switchconf.asr.engine.option3=Alibaba Cloud ASR
+switchconf.asr.engine.option4=Ali ASR (New)
+switchconf.asr.engine.option5=IFlytek ASR
 switchconf.asr.engine.option5=ChinaTele ASR
 switchconf.cert.header=WebRTC Certificate Configuration
 switchconf.cert.label=Certificate Content:
@@ -1904,7 +1906,7 @@ _cc.params.call_monitor_enabled=Enable Call Monitoring
 _cc.params.fs_log_file_path=FreeSWITCH Log File Path
 _cc.params.cc_log_file_path=Call Center Log File Path
 _cc.params.fs_call_asr_enabled=Enable Bidirectional ASR Recognition and Result Push
-_cc.params.fs_call_asr_engine=Bidirectional ASR Engine (chinatelecom/funasr/aliyun)
+_cc.params.fs_call_asr_engine=Bidirectional ASR Engine (chinatelecom/funasr/aliyun/ali)
 _cc.params.inbound_call_monitor_enabled=Enable Inbound Call Queue Monitoring
 _cc.params.fs_docker_container_name=FreeSWITCH Docker Container Name
 _cc.params.fs_conf_directory=FreeSWITCH Configuration Directory

+ 5 - 4
ruoyi-admin/src/main/resources/static/i18n/messages_ja_JP.properties

@@ -211,6 +211,7 @@ switchconf.msg.save.success=Configuration saved successfully!
 switchconf.msg.restart.success=Restart successful!
 switchconf.asr.xunfei.header=IFlytek ASR Parameter Configuration
 switchconf.asr.ali.header=Alibaba ASR Parameter Configuration
+switchconf.asr.ali.new.header=Ali ASR (New) Parameter Configuration
 switchconf.asr.funasr.header=FunASR Parameter Configuration
 switchconf.asr.chinatelecom.header=ChinaTele Parameter Configuration
 switchconf.tts.ali.header=Alibaba Cloud TTS Parameter Configuration
@@ -219,8 +220,9 @@ switchconf.tts.chinatelecom.header=ChinaTele TTS Parameter Configuration
 switchconf.asr.engine.header=ASR Engine Selection
 switchconf.asr.engine.option1=None
 switchconf.asr.engine.option2=FunASR (Free)
-switchconf.asr.engine.option3=Alibaba ASR
-switchconf.asr.engine.option4=IFlytek ASR
+switchconf.asr.engine.option3=Alibaba Cloud ASR
+switchconf.asr.engine.option4=Ali ASR (New)
+switchconf.asr.engine.option5=IFlytek ASR
 switchconf.asr.engine.option5=ChinaTele ASR
 switchconf.cert.header=WebRTC Certificate Configuration
 switchconf.cert.label=Certificate Content:
@@ -1904,7 +1906,7 @@ _cc.params.call_monitor_enabled=Enable Call Monitoring
 _cc.params.fs_log_file_path=FreeSWITCH Log File Path
 _cc.params.cc_log_file_path=Call Center Log File Path
 _cc.params.fs_call_asr_enabled=Enable Bidirectional ASR Recognition and Result Push
-_cc.params.fs_call_asr_engine=Bidirectional ASR Engine (chinatelecom/funasr/aliyun)
+_cc.params.fs_call_asr_engine=Bidirectional ASR Engine (chinatelecom/funasr/aliyun/ali)
 _cc.params.inbound_call_monitor_enabled=Enable Inbound Call Queue Monitoring
 _cc.params.fs_docker_container_name=FreeSWITCH Docker Container Name
 _cc.params.fs_conf_directory=FreeSWITCH Configuration Directory
@@ -2093,4 +2095,3 @@ callTask.form.asrModels=ASR Models
 callTask.form.asrModels.empty=Please Select ASR Models
 ivr.form.ttsModels=TTS Models
 ivr.form.ttsModels.empty=Please Select TTS Models
-

+ 6 - 4
ruoyi-admin/src/main/resources/static/i18n/messages_zh.properties

@@ -211,6 +211,7 @@ switchconf.msg.save.success=配置保存成功!
 switchconf.msg.restart.success=重启成功!
 switchconf.asr.xunfei.header=讯飞ASR参数配置
 switchconf.asr.ali.header=阿里ASR参数配置
+switchconf.asr.ali.new.header=阿里ASR(新)参数配置
 switchconf.asr.funasr.header=FunAsr参数配置
 switchconf.asr.chinatelecom.header=电信ASR参数配置
 switchconf.tts.ali.header=阿里云tts参数配置
@@ -219,8 +220,9 @@ switchconf.tts.chinatelecom.header=电信tts参数配置
 switchconf.asr.engine.header=asr引擎选择
 switchconf.asr.engine.option1=无
 switchconf.asr.engine.option2=FunASR(免费)
-switchconf.asr.engine.option3=阿里ASR
-switchconf.asr.engine.option4=讯飞ASR
+switchconf.asr.engine.option3=阿里云ASR
+switchconf.asr.engine.option4=阿里ASR(新)
+switchconf.asr.engine.option5=讯飞ASR
 switchconf.asr.engine.option5=电信ASR
 switchconf.cert.header=网页电话证书配置
 switchconf.cert.label=证书内容:
@@ -1904,7 +1906,7 @@ _cc.params.call_monitor_enabled=是否启用通话监听
 _cc.params.fs_log_file_path=FreeSWITCH日志路径
 _cc.params.cc_log_file_path=call-center日志路径
 _cc.params.fs_call_asr_enabled=是否启动双向asr语音识别并推送结果
-_cc.params.fs_call_asr_engine=双向asr语音识别,使用哪个asr引擎(chinatelecom/funasr/aliyun)
+_cc.params.fs_call_asr_engine=双向asr语音识别,使用哪个asr引擎(chinatelecom/funasr/aliyun/ali)
 _cc.params.inbound_call_monitor_enabled=是否启用呼入电话排队监控
 _cc.params.fs_docker_container_name=Freeswitch的docker容器名称
 _cc.params.fs_conf_directory=Freeswitch配置文件路径
@@ -2092,4 +2094,4 @@ callTask.form.ttsModels.empty=请选择语音合成模型
 callTask.form.asrModels=ASR模型
 callTask.form.asrModels.empty=请选择语音识别模型
 ivr.form.ttsModels=TTS模型
-ivr.form.ttsModels.empty=请选择语音合成模型
+ivr.form.ttsModels.empty=请选择语音合成模型

+ 6 - 4
ruoyi-admin/src/main/resources/static/i18n/messages_zh_CN.properties

@@ -211,6 +211,7 @@ switchconf.msg.save.success=配置保存成功!
 switchconf.msg.restart.success=重启成功!
 switchconf.asr.xunfei.header=讯飞ASR参数配置
 switchconf.asr.ali.header=阿里ASR参数配置
+switchconf.asr.ali.new.header=阿里ASR(新)参数配置
 switchconf.asr.funasr.header=FunAsr参数配置
 switchconf.asr.chinatelecom.header=电信ASR参数配置
 switchconf.tts.ali.header=阿里云tts参数配置
@@ -219,8 +220,9 @@ switchconf.tts.chinatelecom.header=电信tts参数配置
 switchconf.asr.engine.header=asr引擎选择
 switchconf.asr.engine.option1=无
 switchconf.asr.engine.option2=FunASR(免费)
-switchconf.asr.engine.option3=阿里ASR
-switchconf.asr.engine.option4=讯飞ASR
+switchconf.asr.engine.option3=阿里云ASR
+switchconf.asr.engine.option4=阿里ASR(新)
+switchconf.asr.engine.option5=讯飞ASR
 switchconf.asr.engine.option5=电信ASR
 switchconf.cert.header=网页电话证书配置
 switchconf.cert.label=证书内容:
@@ -1904,7 +1906,7 @@ _cc.params.call_monitor_enabled=是否启用通话监听
 _cc.params.fs_log_file_path=FreeSWITCH日志路径
 _cc.params.cc_log_file_path=call-center日志路径
 _cc.params.fs_call_asr_enabled=是否启动双向asr语音识别并推送结果
-_cc.params.fs_call_asr_engine=双向asr语音识别,使用哪个asr引擎(chinatelecom/funasr/aliyun)
+_cc.params.fs_call_asr_engine=双向asr语音识别,使用哪个asr引擎(chinatelecom/funasr/aliyun/ali)
 _cc.params.inbound_call_monitor_enabled=是否启用呼入电话排队监控
 _cc.params.fs_docker_container_name=Freeswitch的docker容器名称
 _cc.params.fs_conf_directory=Freeswitch配置文件路径
@@ -2092,4 +2094,4 @@ callTask.form.ttsModels.empty=请选择语音合成模型
 callTask.form.asrModels=ASR模型
 callTask.form.asrModels.empty=请选择语音识别模型
 ivr.form.ttsModels=TTS模型
-ivr.form.ttsModels.empty=请选择语音合成模型
+ivr.form.ttsModels.empty=请选择语音合成模型

+ 80 - 0
ruoyi-admin/src/main/resources/templates/cc/aliasrbridgeconf/aliasrbridgeconf.html

@@ -0,0 +1,80 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
+<head>
+    <th:block th:include="include :: header('阿里ASR(新)参数配置')" />
+    <th:block th:include="include :: layout-latest-css" />
+    <th:block th:include="include :: ztree-css" />
+    <style>
+    </style>
+</head>
+
+<body>
+<div class="main-content">
+    <div class="h4 form-header" th:text="#{switchconf.asr.ali.new.header}"></div>
+    <div id="baseConfigs"></div>
+
+    <div class="row"></div>
+    <div class="row">
+        <div class="col-sm-offset-5 col-sm-10">
+            <button id="saveConfig" type="button" class="btn btn-sm btn-primary" onclick="submitHandler()"><i class="fa fa-check"></i><span th:text="#{switchconf.btn.save}"></span></button>&nbsp;
+        </div>
+    </div>
+</div>
+
+<th:block th:include="include :: footer" />
+<th:block th:include="include :: layout-latest-js" />
+<script>
+    var prefix = ctx + "cc/fsconf";
+    $(function() {
+        $.ajax({
+            url: prefix + '/getAliBridgeAsrConf',
+            type: 'GET',
+            success: function(_data) {
+                var baseConfigsHtml = '';
+                var data = _data.data;
+
+                $.each(data, function(index, config) {
+                    baseConfigsHtml += '<div className="row">';
+                    baseConfigsHtml += '<div class="col-sm-12">';
+                    baseConfigsHtml += '<label class="col-sm-2 control-label">' + config.aliasName + '</label><div class="col-sm-10"><input class="config-value form-control" type="text" id="' + config.name + '" value="' + config.value + '" /></div>';
+                    baseConfigsHtml += '</div>';
+                    baseConfigsHtml += '</div>';
+                });
+                $('#baseConfigs').html(baseConfigsHtml);
+            },
+            error: function(error) {
+                console.error('Error fetching configuration:', error);
+            }
+        });
+    });
+
+    $('#saveConfig').click(function() {
+        var configs = [];
+        $('input.config-value').each(function() {
+            var config = {
+                name: $(this).attr('id'),
+                value: $(this).val().trim()
+            };
+            configs.push(config);
+        });
+        $.ajax({
+            url: prefix + '/setAliBridgeAsrConf',
+            type: 'POST',
+            contentType: 'application/json',
+            data: JSON.stringify(configs),
+            beforeSend: function () {
+                $.modal.loading(i18n("common.tip.loading"));
+                $.modal.disable();
+            },
+            success: function(response) {
+                processAjaxReponseJson(response);
+            },
+            error: function(error) {
+            }
+        });
+    });
+
+</script>
+
+</body>
+</html>

+ 3 - 2
ruoyi-admin/src/main/resources/templates/cc/asrengine/asrengine.html

@@ -19,7 +19,8 @@
                         <option value="" th:text="#{switchconf.asr.engine.option1}"></option>
                         <option value="mod_funasr" th:text="#{switchconf.asr.engine.option2}"></option>
                         <option value="mod_aliyun_asr" th:text="#{switchconf.asr.engine.option3}"></option>
-                        <option value="mod_xunfei_asr" th:text="#{switchconf.asr.engine.option4}"></option>
+                        <option value="mod_ali_asr" th:text="#{switchconf.asr.engine.option4}"></option>
+                        <option value="mod_xunfei_asr" th:text="#{switchconf.asr.engine.option5}"></option>
                     </select>
                 </div>
             </div>
@@ -65,4 +66,4 @@
 </script>
 
 </body>
-</html>
+</html>

+ 2 - 2
sql/easycallcenter365.sql

@@ -5057,6 +5057,7 @@ insert  into `sys_menu`(`menu_id`,`menu_name`,`menu_code`,`parent_id`,`order_num
 insert  into `sys_menu`(`menu_id`,`menu_name`,`menu_code`,`parent_id`,`order_num`,`url`,`target`,`menu_type`,`visible`,`is_refresh`,`perms`,`icon`,`create_by`,`create_time`,`update_by`,`update_time`,`remark`) values (3063,'呼入大模型配置修改','inboundllmEdit',3060,3,'#','','F','0','1','aicall:inboundllm:edit','#','admin','2025-06-24 02:10:47','',NULL,'');
 insert  into `sys_menu`(`menu_id`,`menu_name`,`menu_code`,`parent_id`,`order_num`,`url`,`target`,`menu_type`,`visible`,`is_refresh`,`perms`,`icon`,`create_by`,`create_time`,`update_by`,`update_time`,`remark`) values (3064,'呼入大模型配置删除','inboundllmDel',3060,4,'#','','F','0','1','aicall:inboundllm:remove','#','admin','2025-06-24 02:10:48','',NULL,'');
 insert  into `sys_menu`(`menu_id`,`menu_name`,`menu_code`,`parent_id`,`order_num`,`url`,`target`,`menu_type`,`visible`,`is_refresh`,`perms`,`icon`,`create_by`,`create_time`,`update_by`,`update_time`,`remark`) values (3065,'呼叫中心','callCenter',0,2,'#','menuItem','M','0','1','','fa fa-address-book-o','admin','2025-08-07 09:21:34','admin','2025-08-07 09:39:04','');
+insert  into `sys_menu`(`menu_id`,`menu_name`,`menu_code`,`parent_id`,`order_num`,`url`,`target`,`menu_type`,`visible`,`is_refresh`,`perms`,`icon`,`create_by`,`create_time`,`update_by`,`update_time`,`remark`) values (4022,'阿里ASR配置(新)','aliAsrBridgeConf',3018,7,'/cc/fsconf/aliasrbridgeconf','menuItem','C','0','1','cc:aliasrbridgeconf:view','#','admin','2026-05-22 00:00:00','',NULL,'mod_ali_asr 参数配置菜单');
 
 -- ----------------------------
 -- Table structure for sys_notice
@@ -5245,6 +5246,7 @@ INSERT INTO `sys_role_menu` VALUES ('2', '3035');
 INSERT INTO `sys_role_menu` VALUES ('2', '3036');
 INSERT INTO `sys_role_menu` VALUES ('2', '3040');
 INSERT INTO `sys_role_menu` VALUES ('2', '3041');
+INSERT INTO `sys_role_menu` VALUES ('2', '4022');
 INSERT INTO `sys_role_menu` VALUES ('3', '2000');
 INSERT INTO `sys_role_menu` VALUES ('3', '2080');
 INSERT INTO `sys_role_menu` VALUES ('3', '2081');
@@ -5405,5 +5407,3 @@ ALTER TABLE `cc_llm_agent_account` ADD COLUMN concurrent_num INT(3) DEFAULT 1 CO
 
 
 
-
-

+ 37 - 0
sql/v20260522.sql

@@ -0,0 +1,37 @@
+-- 2026-05-22
+-- Keep the old aliyun provider and add an independent ali provider for mod_ali_asr.
+DELETE FROM `sys_config`
+WHERE `config_key` = 'config_asr_provider_ali';
+
+INSERT INTO `sys_config` (`config_name`, `config_key`, `config_value`, `config_type`, `create_by`, `create_time`, `remark`)
+VALUES ('阿里ASR(新)', 'config_asr_provider_ali', 'ali', 'Y', 'admin', NOW(), 'ASR厂商-mod_ali_asr');
+
+DELETE FROM `sys_role_menu`
+WHERE `menu_id` = 4022;
+
+DELETE FROM `sys_menu`
+WHERE `menu_id` = 4022
+   OR `perms` = 'cc:aliasrbridgeconf:view'
+   OR `url` = '/cc/fsconf/aliasrbridgeconf';
+
+INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `menu_code`, `parent_id`, `order_num`, `url`, `target`, `menu_type`, `visible`, `is_refresh`, `perms`, `icon`, `create_by`, `create_time`, `remark`)
+VALUES (4022, '阿里ASR配置(新)', 'aliAsrBridgeConf', 3018, 7, '/cc/fsconf/aliasrbridgeconf', 'menuItem', 'C', '0', '1', 'cc:aliasrbridgeconf:view', '#', 'admin', NOW(), 'mod_ali_asr 参数配置菜单');
+
+INSERT INTO `sys_role_menu` (`role_id`, `menu_id`)
+VALUES (2, 4022);
+
+DELETE FROM `cc_asr_languages`
+WHERE `asr_provider` = 'ali'
+  AND `models` = 'fun-asr-flash-8k-realtime'
+  AND `language_code` = 'zh-CN';
+
+INSERT INTO `cc_asr_languages` (`asr_provider`, `models`, `language_code`, `language_name`)
+VALUES ('ali', 'fun-asr-flash-8k-realtime', 'zh-CN', '中文');
+
+UPDATE `cc_params`
+SET `param_name` = '双向asr语音识别,使用哪个asr引擎(chinatelecom/funasr/aliyun/ali)'
+WHERE `param_code` = 'fs_call_asr_engine';
+
+UPDATE `sys_config`
+SET `config_value` = 'v20260217'
+WHERE `config_key` = 'sys.version';