ESP32接入扣子(Coze) API使用自定义智能体

使用ESP32接入Coze API实现聊天机器人的教程

本示例将使用ESP32开发板通过WiFi接入 Coze API,实现一个简单的聊天机器人功能。用户可以通过串口向机器人输入问题,ESP32将通过Coze API与智能体进行通信,并返回对应的回复。本文将详细介绍了如何通过HTTP请求和JSON解析来与API进行交互,并给出完整的代码示例。

一、准备工作

首先我们要获取Coze API 访问令牌和机器人 ID

在扣子(Coze)平台上,API 访问令牌(API Access Token)和机器人 ID(Bot ID)是两个关键的参数,它们用于身份验证和区分不同的机器人。

API 访问令牌(API Access Token)

API 访问令牌是一种安全机制,用于验证你的身份,确保你有权访问扣子平台的 API。每个令牌都是唯一的,并且与你的扣子账户相关联。

获取 API 访问令牌的步骤

  1. 登录扣子平台。
    https://www.coze.cn/home

  2. 注册进入账户 然后点击API 管理部分。
    在这里插入图片描述

  3. 查找生成 API 访问令牌的选项,点击生成新的访问令牌。
    在这里插入图片描述

  4. 系统会为你生成一个访问令牌,通常会有一个复制按钮,复制该令牌,保存起来。

✨注意事项

  • 访问令牌通常包含字母和数字,长度较长,需要妥善保管,不要泄露给他人。
  • 访问令牌一旦生成,通常无法再次查看,只能重新生成。如果丢失,需要重新生成新的令牌,并更新所有使用旧令牌的地方。

机器人 ID(Bot ID)

机器人 ID 是一个用于区分不同机器人的唯一标识符。在扣子平台上,每个机器人都有一个唯一的 ID。

获取机器人 ID 的步骤

  1. 进入你的机器人列表。
    在这里插入图片描述

  2. 点击你想要接入 API 的机器人,查看此时的URL bot/后面的一串数字就是机器人 ID。
    在这里插入图片描述

二、示例代码中的使用

在 ESP32 代码中,API 访问令牌和机器人 ID 被用于构建 HTTP 请求,以便与扣子平台的 API 进行通信。

const String api_access_token = "pat_ugo1Q9BN1sPvc9dDNQawLtrY***********************";  // API 访问令牌
const String chat_bot_id = "74202200**********";  // 机器人 ID

在发送 HTTP 请求时,API 访问令牌被添加到请求头中,用于身份验证:

http_client.addHeader("Authorization", "Bearer " + api_access_token);

机器人 ID 被添加到请求体中,用于指定请求发送到哪个机器人:

json_request["bot_id"] = chat_bot_id;

这样,当 ESP32 发送请求到扣子平台时,平台能够验证请求的合法性,并将其正确地路由到指定的机器人进行处理。

完整代码 arduino框架

#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>const char* wifi_ssid = "";            // WiFi 网络名称
const char* wifi_password = "";        // WiFi 密码const String api_access_token = "pat_ugo1Q9BN1sPvc9dDNQawLtr**************";  // API 访问令牌
const String chat_bot_id = "742022000*******";  // 机器人 ID,用于区分不同的聊天机器人void setup() {Serial.begin(9600);// 第1步:连接到 WiFiWiFi.begin(wifi_ssid, wifi_password);while (WiFi.status() != WL_CONNECTED) {  // 如果尚未连接到 WiFi,等待并继续尝试连接delay(1000);Serial.println("正在连接到WiFi...");}Serial.println("已连接到WiFi");Serial.print("请输入问题: ");
}void loop() {// 第2步:检查是否有用户输入if (Serial.available()) {String user_input = Serial.readStringUntil('\n');  // 读取用户输入直到遇到换行符user_input.trim();  // 去除输入前后的空白字符,确保输入干净Serial.println(user_input);  // 在串口打印用户输入的内容// 检查 WiFi 是否连接if (WiFi.status() != WL_CONNECTED) {Serial.println("错误: WiFi 未连接");return;}// 第3步:创建 HTTPClient 对象并配置请求HTTPClient http_client;  // 创建 HTTPClient 对象,管理 HTTP 请求http_client.begin("https://api.coze.cn/open_api/v2/chat");  http_client.addHeader("Authorization", "Bearer " + api_access_token);http_client.addHeader("Content-Type", "application/json");  // 设置请求头,指定内容类型为 JSON// 第4步:创建 JSON 请求体DynamicJsonDocument json_request(1024);json_request["bot_id"] = chat_bot_id;json_request["user"] = "123123123";json_request["query"] = user_input;json_request["stream"] = false;String request_body;  // 存储 JSON serializeJson(json_request, request_body);  // JSON 文档序列化为字符串// 第5步:发送 HTTP POST 请求并获取响应int http_response_code = http_client.POST(request_body);  // 发送 POST 请求String server_response;if (http_response_code > 0) {server_response = http_client.getString(); } else {Serial.print("POST请求出错: ");Serial.println(http_response_code);server_response = "错误: " + String(http_response_code);}http_client.end();// 第6步:解析并处理服务器响应DynamicJsonDocument json_response(1024);  // 创建用于解析响应的 JSON 文档DeserializationError json_error = deserializeJson(json_response, server_response);  // 解析服务器响应的 JSON 数据if (json_error) {  // 如果解析失败Serial.print("解析JSON失败: ");Serial.println(json_error.c_str()); return; }// 第7步:提取并输出消息内容JsonArray messages = json_response["messages"];  // 获取响应中的消息数组for (JsonVariant message : messages) {  // 遍历每个消息获取消息内容String message_content = message["content"].as<String>();  if (!message_content.startsWith("{") && !message_content.startsWith("RPCError")) {Serial.println(message_content);}}Serial.print("请输入问题: ");}
}

三、总结

参考资料:扣子 API快速文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/444953.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyCharm打开及配置现有工程(详细图解)

本文详细介绍了如何利用Pycharm打开一个现有的工程&#xff0c;其中包括编译器的配置。 PyCharm打开及配置现有工程 1、打开工程2、配置编译器 1、打开工程 双击PyCharm软件&#xff0c;点击左上角 文件 >> 打开(O)… 选中想要打开的项目之后点击“确定” 2、配置编译器…

[Algorithm][贪心][可被三整除的最大和][距离相等的条形码][重构字符串]详细讲解

目录 1.可被三整除的最大和1.题目链接2.算法原理详解3.代码实现 2.距离相等的条形码1.题目链接2.算法原理详解3.代码实现 3.重构字符串1.题目链接2.算法原理详解3.代码实现 1.可被三整除的最大和 1.题目链接 可被三整除的最大和 2.算法原理详解 思路&#xff1a;正难则反 贪…

326. 3 的幂

文章目录 326. 3 的幂解题思路Go代码 326. 3 的幂 326. 3 的幂 给定一个整数&#xff0c;写一个函数来判断它是否是 3 的幂次方。如果是&#xff0c;返回true&#xff1b;否则&#xff0c;返回 false 。 整数 n 是 3 的幂次方需满足&#xff1a;存在整数 x 使得 n 3 x n …

Android设置状态栏隐藏、固定颜色

设置隐藏效果&#xff1a; <?xml version"1.0" encoding"utf-8"?> <resources><style name"Theme.XiaoShuang" parent"Theme.AppCompat.Light.NoActionBar"><!--设置沉浸式通知栏--><item name"an…

Nullinux:一款针对Linux操作系统的安全检测工具

关于Nullinux Nullinux是一款针对Linux操作系统的安全检测工具&#xff0c;广大研究人员可以利用该工具针对Linux目标设备执行网络侦查和安全检测。 该工具可以通过SMB枚举目标设备的安全状况信息&#xff0c;其中包括操作系统信息、域信息、共享信息、目录信息和用户信息。如…

292. Nim 游戏

文章目录 292. Nim 游戏解题思路Go代码 292. Nim 游戏 292. Nim 游戏 你和你的朋友&#xff0c;两个人一起玩 Nim 游戏&#xff1a; 桌子上有一堆石头。你们轮流进行自己的回合&#xff0c; 你作为先手 。每一回合&#xff0c;轮到的人拿掉 1 - 3 块石头。拿掉最后一块石头的…

Elasticsearch的安装与配置

注意&#xff1a;elasticsearch 禁止安装在/root路径下&#xff01; 1、创建用户组 groupadd elastic 2、创建用户 useradd es -d /home/es -g elastic echo es | passwd es --stdin 3、给新创建的用户进行授权 chown -R es:elastic /home/es chmod -R 775 /home/es 4…

『网络游戏』游戏数据库管理类查询插入账号存储【23】

新建数据库连接 新建数据库 打开数据库 新建表 账号数据 设计表 - 添加属性 对照服务器工程GameMsg增加对应字段 保存后在服务器脚本中操作数据库数据 添加数据层文件夹 创建脚本&#xff1a;DBMgr 编写脚本&#xff1a;DBMgr.cs 修改脚本&#xff1a;ServerRoot.cs 将MySql.d…

Java值传递、序列化详解

Java 值传递详解 说到参数&#xff0c;我们先来搞懂一下这两个概念 形参&实参 值传递&引用传递 形参&实参 方法的定义可能会用到 参数&#xff08;有参的方法&#xff09;&#xff0c;参数在程序语言中分为&#xff1a; 实参&#xff08;实际参数&#xff0c;…

10.11作业

实现简单数据库功能 &#xff08;增删改查&#xff09; widget.h #ifndef WIDGET_H #define WIDGET_H #include <QSqlDatabase> // 数据库管理类 #include <QWidget> // #include <QSqlQuery> #include <QSqlRecord> //记录类 #include …

若依 从字典类型跳到字典数据跳到了404

描述&#xff1a; 在字典类型从表中字典类型跳转到详情的字典数据时跳到了404 解决过程&#xff1a; 由于我的id统一是用GUID&#xff0c;所以想到了路由表相关路由的正则校验&#xff0c;若依是int类型&#xff0c;我直接删掉了&#xff0c;改了之后还是跳404 后面想是路由表…

【微服务】网关 - Gateway(下)(day8)

网关过滤工厂 在上一篇文章中&#xff0c;主要是对网关进行了一个总体的介绍&#xff0c;然后对网关中的断言进行了一个描述。在这篇文章中&#xff0c;主要是对网关中的最后一大核心——过滤进行介绍。 当客户端发送过来的请求经过断言之后&#xff0c;如果还想在请求前后添…

智能制造与精益制造的模型搭建

现行制造模式分析I-痛点改善思路-管控省优四化推行

中间件有哪些分类?

中间件的分类 中间件是位于操作系统和应用程序之间的软件&#xff0c;它提供了一系列服务来简化分布式系统中的应用程序开发和集成。中间件可以根据其功能和用途被分为不同的类别。以下是中间件的一些主要分类&#xff1a; 1. 通信处理&#xff08;消息&#xff09;中间件&am…

利用编程思维做题之反转链表

牛客网题目 1. 理解问题 给到我们的是一个单链表的头节点 pHead&#xff0c;要求反转后&#xff0c;返回新链表的头节点。 首先在心里设想能够快速理解的例子&#xff0c;如给你123序列&#xff0c;要你反转此序列如何回答&#xff1f;将最后一个数字3作为头&#xff0c;然后修…

使用Qt Creator创建项目

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 使用Qt Creator创建项目 收录于专栏【Qt开发】 本专栏旨在分享学习Qt的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 温馨提示: 1. 新…

基于SpringBoot+Vue的非物质文化遗产保护与传播系统设计实现(地图组件)

&#x1f388;系统亮点&#xff1a;地图组件&#xff1b; 一.系统开发工具与环境搭建 1.系统设计开发工具 后端使用Java编程语言的Spring boot框架 项目架构&#xff1a;B/S架构 运行环境&#xff1a;win10/win11、jdk17 前端&#xff1a; 技术&#xff1a;框架Vue.js&#x…

C/C++进阶(一)--内存管理

更多精彩内容..... &#x1f389;❤️播主の主页✨&#x1f618; Stark、-CSDN博客 本文所在专栏&#xff1a; 学习专栏C语言_Stark、的博客-CSDN博客 其它专栏&#xff1a; 数据结构与算法_Stark、的博客-CSDN博客 ​​​​​​项目实战C系列_Stark、的博客-CSDN博客 座右铭&a…

RDD优化:缓存和checkpoint机制、数据共享(广播变量、累加器)、RDD的依赖关系、shuffle过程、并行度说明

文章目录 1. 缓存和checkpoint机制1.1 缓存使用1.2 checkpoint1.3 缓存和checkpoint的区别 2. 数据共享2.1 广播变量2.2 累加器 3. RDD依赖关系4.shuffle过程4.1 shuffle介绍4.2 spark计算要尽量避免shuffle 5. 并行度 1. 缓存和checkpoint机制 缓存和checkpoint也叫作rdd的持…

Springboot 整合 Java DL4J 实现企业门禁人脸识别系统

&#x1f9d1; 博主简介&#xff1a;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编程&#xff0c;…