90 0

[作业] Java 对接coze工作流 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

40%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
20 点
帖子
1
精华
0
在线时间
0 小时
注册时间
2018-12-1
最后登录
2018-12-1

楼主
儒雅得vampire 发表于 2025-12-11 11:57:13 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

1. 调用工作流前的准备

1.1 获取访问凭证(Token)

首先需要获取调用API所需的权限凭证。进入系统的“API管理-授权”页面,根据实际使用场景选择合适的授权类型。若仅用于测试环境,推荐使用个人访问令牌即可满足需求。

以创建个人访问令牌为例,点击“添加”按钮开始生成:

在配置界面中,设置令牌的有效期限、所需权限范围以及关联的工作空间。

创建成功后,请务必立即复制并保存生成的token信息,系统不会再次展示该密钥,遗漏将导致需重新创建。

额外提示:如需长期有效凭证,建议采用服务身份方式创建,其支持更长的有效周期。

1.2 工作流的建立

关于如何创建一个完整的工作流,可参考官方或社区提供的相关教程,此处不再赘述。

在完成工作流编排后,注意记录浏览器地址栏中的 workflow_id,后续发起请求时需要用到此唯一标识符。

2. 发起工作流调用

系统提供SDK供开发者集成,但若希望简化流程,也可直接通过HTTP请求方式进行调用。本文采用后者,避免引入额外依赖。

/**
     * 识别收件人信息
     */
    public static SfContactInfo checkRecipient(String msg){
        // 记录开始时间
        long startTime = System.currentTimeMillis();

        log.info("COZE AI 识别收件人信息>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n{}", msg);
        String bodyStr = "{\"parameters\":{\"msg\":\"" + msg.replaceAll("\\s+", "") + "\"},\"workflow_id\":\"" + workflowId_check_recipient + "\"}";//用你自己的workflow_id
        log.info("COZE AI bodyStr>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n{}", bodyStr);
        // 创建HttpRequestConfig对象并设置超时时间
        int time = 1000 * 60 * 3;//3分钟
        HttpConfig config = new HttpConfig();
        config.setConnectionTimeout(time); // 设置连接超时时间为5000毫秒
        config.setReadTimeout(time); // 设置读取超时时间为10000毫秒
        String result2 = "";
        try {
            result2 = HttpRequest.post("https://api.coze.cn/v1/workflow/run")
                    .header("Authorization", authToken)//令牌的token
                    .header("Content-Type", "application/json")
                    .body(bodyStr)//表单内容
                    .setConfig(config)
                    .execute().body();

        }catch (Exception e){
            throw new IllegalArgumentException("COZE AI 识别错误"+e.getMessage());
        }

        // 计算运行时间
        long duration = System.currentTimeMillis() - startTime;
        // 输出运行时间
        System.out.println("COZE AI 识别时间: " + duration/1000 + " 秒");

        log.info("COZE AI Agent回答>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n{}", result2);
        if(!JSONObject.parseObject(result2).get("code").equals(0)) {
            System.out.println("COZE AI ERROR");
            throw new IllegalArgumentException("COZE AI ERROR:"+JSONObject.parseObject(result2).get("msg"));
        }

        //将其中的英文括号改为中文括号
        result2 = result2.replaceAll("\\(", "(").replaceAll("\\)", ")");

        // 第一层解析:获取整个响应
        JSONObject response = JSONObject.parseObject(result2);
        // 第二层解析:获取data字段
        JSONObject data = response.getJSONObject("data");
        if (data == null) {
            throw new IllegalArgumentException("data字段不存在");
        }
        // 第三层解析:获取output字段并解析为JSONObject
        String outputStr = data.getString("output");
        if (outputStr == null) {
            throw new IllegalArgumentException("output字段不存在");
        }

        JSONObject outputObj = JSON.parseObject(outputStr); // 解析output字符串
        JSONObject sfContactInfoObj = outputObj.getJSONObject("sfContactInfo"); // 获取目标对象
        SfContactInfo contactInfo = sfContactInfoObj.toJavaObject(SfContactInfo.class);

        return contactInfo;
    }

在构造请求时,需确保所有参数名称与工作流中定义的输入字段保持一致,否则可能导致数据无法正确传递。

同时,返回结果的结构也应与工作流输出配置相匹配,便于后续解析处理。

最终请根据具体业务需求调整请求内容和处理逻辑。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Java jav 工作流 Application parameters

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-20 17:18