开发者社区 问答 正文

阿里云语音接口调用出现 java.lang.NoSuchFieldError: Companion异

  • 环境 jdk1.8 spring4.3
  • 新版sdk image.png
  • client创建
    public static Client createClient(String accessKeyId, String accessKeySecret, String regionId) {
        com.aliyun.tearpc.models.Config config = new com.aliyun.tearpc.models.Config();
        // AccessKey ID
        config.accessKeyId = accessKeyId;
        // AccessKey Secret
        config.accessKeySecret = accessKeySecret;
        // 可用区ID
        config.regionId = regionId;
        try {
            return new Client(config);
        } catch (Exception e) {
    

// logger.info("语音通知初始化失败"); e.printStackTrace(); } return null; }

- 发送语音

public static SingleCallByTtsResponse noticeByVoice(String telephone, String tstCode, String ttsParam) { try { Client client = createClient(accessKeyId, accessSecret, "cn-hangzhou"); if (client == null) { return null; } SingleCallByTtsRequest request = SingleCallByTtsRequest.build(TeaConverter.buildMap( // 被叫号码。仅支持中国内地号码。一次请求仅支持一个被叫号。 new TeaPair("calledNumber", telephone), // 显号(选择公共池的号码,该字段为空) new TeaPair("calledShowNumber", ""), // 语音文件的语音ID。 new TeaPair("ttsCode", tstCode), // 设置参数 new TeaPair("ttsParam", ttsParam), // 设置语速(-500~500) new TeaPair("speed", 10), // 设置播放次数 new TeaPair("playTimes", 2) )); SingleCallByTtsResponse response = client.singleCallByTts(request); return response; } catch (Exception e) { e.printStackTrace(); } return null; }

  
- main方法测试

public static void main(String[] args) { JsonObject json = new JsonObject(); json.addProperty("xxx", "xxx"); try {

        SingleCallByTtsResponse response = noticeByVoice("xx", "xxx", json.toString());
        System.out.println(response.callId);
        System.out.println(new Gson().toJson(response));
    } catch (Exception e) {
        e.printStackTrace();
    }
}  

- 调用保存
  ![image.png](https://ucc.alicdn.com/pic/developer-ecology/40d64a4299084b51ad05d77717274082.png)

展开
收起
游客bvxvcc66yhnfo 2020-10-09 09:26:53 2446 分享 版权
阿里云 AI 助理回答

从您提供的代码片段来看,您正在尝试使用阿里云的语音服务(很可能是阿里云的PaaS产品“云通信”中的语音通知功能)来发送一个基于TTS(Text To Speech,文本转语音)的单次呼叫。您的代码结构包括创建客户端、定义发送语音的方法以及在main方法中进行测试调用。下面是对您代码的一些分析和建议:

1. 环境配置与依赖

  • 确保您的项目已经正确引入了阿里云SDK相关的依赖。对于Java SDK,通常需要通过Maven或Gradle来管理依赖。例如,如果您使用Maven,需要在pom.xml中添加对应的依赖项。具体依赖坐标可以参考阿里云Java SDK文档。

2. 客户端创建

  • 您创建客户端的方式看起来是基于较旧版本的阿里云SDK。当前推荐的做法是使用最新版的阿里云Java SDK,特别是com.aliyun.dysmsapi20170525.Client这样的客户端类,对应于不同的阿里云服务。对于语音服务,可能需要导入如com.aliyun.teaopenapi.models.Config和特定服务的客户端类。请检查并更新到最新的SDK版本,并参照官方文档调整配置和客户端创建方式。

3. 发送语音请求

  • noticeByVoice方法中,您构建请求参数时使用了TeaConverter.buildMap,这是阿里云SDK中用于构造请求参数的工具方法。确保所有必填字段都已正确设置,比如calledNumber(被叫号码)、ttsCode(TTS模板ID)等。

  • 注意处理异常,当client.singleCallByTts(request)执行失败时,应当有日志记录或错误处理逻辑,以诊断问题所在。

4. Main方法测试

  • 在main方法中,您将JSON对象转换为字符串传递给ttsParam,这表明您可能想动态插入一些自定义内容到TTS消息中。确保这些参数格式符合阿里云服务的要求。

5. 调用保存

  • 图片链接似乎指向了一个操作界面,但无法直接查看其内容。如果是指在调用后保存响应信息(如调用ID),您已经在main方法中通过response.callId获取并打印了调用ID。您可以根据业务需求,将这些信息持久化存储,比如写入数据库或日志文件,以便后续跟踪和审计。

总结

  • 更新至最新阿里云Java SDK版本。
  • 参考最新的官方文档调整代码,特别是客户端初始化部分。
  • 强化异常处理逻辑,确保每个可能出现异常的地方都有合适的处理机制。
  • 根据实际需求,合理设计数据的存储和处理流程。

如果有具体的错误信息或进一步的需求,请提供详细描述,以便给出更精确的指导。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答标签:
问答地址: