HTML调用扣子工作流

开启扣子 API 访问

在这里插入图片描述

创建扣子工作流

在这里插入图片描述
在这里插入图片描述

工作流的名称与描述就根据实际情况填写,我这边就随便写一些上去

构建工作流

在这里插入图片描述
这边就按自己的需求去构建工作流了,我这边就拿一个现成的图像生成的工作流

试运行与发布

在这里插入图片描述
新建的工作流可以先试运行,熟悉一下流程,然后点击 发布(发布很重要,不然api访问不到)

编写前端页面访问扣子API

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Coze API 图片下载</title>
    <!-- 引入axios CDN -->
    <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
    <style>
        body {
            font-family: Arial, sans-serif;
            max-width: 800px;
            margin: 0 auto;
            padding: 20px;
        }
        .container {
            display: flex;
            flex-direction: column;
            gap: 20px;
        }
        button {
            padding: 10px 20px;
            background-color: #4CAF50;
            color: white;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            font-size: 16px;
            max-width: 200px;
        }
        button:hover {
            background-color: #45a049;
        }
        #response, #log {
            border: 1px solid #ddd;
            padding: 15px;
            border-radius: 4px;
            background-color: #f8f8f8;
            white-space: pre-wrap;
            word-wrap: break-word;
        }
        img {
            max-width: 100%;
            border: 1px solid #ddd;
            margin-top: 20px;
        }
        label {
            font-weight: bold;
        }
        input, textarea {
            width: 100%;
            padding: 8px;
            margin: 5px 0 15px 0;
            box-sizing: border-box;
            border: 1px solid #ccc;
            border-radius: 4px;
        }
        .input-group {
            margin-bottom: 15px;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>Coze API 图片生成与下载</h1>
        
        <div class="input-group">
            <label for="token">API Token:</label>
            <input type="text" id="token" value="自己的API Token">
        </div>
        
        <div class="input-group">
            <label for="workflow_id">Workflow ID:</label>
            <input type="text" id="workflow_id" value="工作流id(可以通过地址栏拿到)">
        </div>
        
        <div class="input-group">
            <label for="content">内容:</label>
            <input type="text" id="content" value="测试">
        </div>
        
        <div class="input-group">
            <label for="image_prompt">图片提示:</label>
            <textarea id="image_prompt">一个鸡在篮球场,投出一个超远的三分球</textarea>
        </div>
        
        <div class="input-group">
            <label for="title">标题:</label>
            <input type="text" id="title" value="测试">
        </div>
        
        <button onclick="sendRequest()">发送请求</button>
        
        <div>
            <h3>日志:</h3>
            <div id="log"></div>
        </div>
        
        <div>
            <h3>响应数据:</h3>
            <div id="response"></div>
        </div>
        
        <div id="imageContainer"></div>
    </div>

    <script>
        function log(message) {
            const logElement = document.getElementById('log');
            logElement.textContent += message + '\n';
        }
        
        async function sendRequest() {
            const token = document.getElementById('token').value;
            const workflow_id = document.getElementById('workflow_id').value;
            const content = document.getElementById('content').value;
            const image_prompt = document.getElementById('image_prompt').value;
            const title = document.getElementById('title').value;
            
            // 清空之前的内容
            document.getElementById('log').textContent = '';
            document.getElementById('response').textContent = '';
            document.getElementById('imageContainer').innerHTML = '';
            
            log('正在发送请求...');
            
            try {
                // API URL
                const url = 'https://api.coze.cn/v1/workflow/run';
                
                // Headers
                const headers = {
                    'Authorization': `Bearer ${token}`,
                    'Content-Type': 'application/json'
                };
                
                // 请求数据
                const data = {
                    "workflow_id": workflow_id,
                    "parameters": {
                        "content": content,
                        "image_prompt": image_prompt,
                        "title": title
                    }
                };
                
                // 发送请求
                const response = await axios.post(url, data, { headers });
                
                // 打印状态码和响应数据
                log(`状态码: ${response.status}`);
                document.getElementById('response').textContent = JSON.stringify(response.data, null, 2);
                
                // 当状态码为200时,处理图片
                if (response.status === 200) {
                    log('请求成功,正在检查响应数据...');
                    
                    // 检查响应结构
                    if (response.data && response.data.data) {
                        const data = response.data.data;
                        log('找到data字段');
                        
                        // 尝试解析data字段(如果它是字符串)
                        let parsedData = data;
                        if (typeof data === 'string') {
                            try {
                                parsedData = JSON.parse(data);
                                log('已解析data字符串为对象');
                            } catch (e) {
                                log('data不是有效的JSON字符串');
                            }
                        }
                        
                        // 查找图片URL
                        let imageUrl = null;
                        if (typeof parsedData === 'object' && parsedData !== null && parsedData.image) {
                            imageUrl = parsedData.image;
                        } else if (typeof data === 'object' && data !== null && data.image) {
                            imageUrl = data.image;
                        }
                        
                        // 如果找到图片URL,下载并显示
                        if (imageUrl) {
                            log(`找到图片URL: ${imageUrl}`);
                            
                            // 下载并显示图片
                            await displayImage(imageUrl);
                            
                            // 添加下载按钮
                            addDownloadButton(imageUrl);
                        } else {
                            log('在响应中未找到图片URL');
                        }
                    } else {
                        log('响应中没有data字段');
                    }
                }
            } catch (error) {
                log(`出错了: ${error.message}`);
                if (error.response) {
                    log(`状态码: ${error.response.status}`);
                    document.getElementById('response').textContent = JSON.stringify(error.response.data, null, 2);
                }
            }
        }
        
        async function displayImage(url) {
            const img = document.createElement('img');
            img.src = url;
            img.alt = '生成的图片';
            document.getElementById('imageContainer').appendChild(img);
            log('已显示图片');
        }
        
        function addDownloadButton(url) {
            const filename = `image_${Date.now()}.png`;
            
            const downloadBtn = document.createElement('a');
            downloadBtn.href = url;
            downloadBtn.download = filename;
            downloadBtn.textContent = '下载图片';
            downloadBtn.style.display = 'inline-block';
            downloadBtn.style.marginTop = '10px';
            downloadBtn.style.padding = '10px 20px';
            downloadBtn.style.backgroundColor = '#2196F3';
            downloadBtn.style.color = 'white';
            downloadBtn.style.textDecoration = 'none';
            downloadBtn.style.borderRadius = '4px';
            downloadBtn.style.cursor = 'pointer';
            
            document.getElementById('imageContainer').appendChild(downloadBtn);
            log(`已添加图片下载按钮,文件名: ${filename}`);
        }
    </script>
</body>
</html> 

参考链接:

通过API来调用扣子coze的工作流


个人理解:可以将工作流当做一个后端接口,想调用哪个功能就甩个请求过去,它吭哧吭哧跑完直接吐结果给你!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值