通义千问AI模型对接飞书机器人-集成飞书机器人(2-2)

接上一篇 通义千问AI模型对接飞书机器人-模型配置(2-1)

1、通过飞书机器人对接ai的在线接口

参考文档:发送 HTTP 请求

1.1 创建飞书应用

创建流程

配置http请求

 http请求地址上一篇百炼平台配置的应用地址

1.2 企业自建应用对接AI

 添加应用能力

添加权限

添加机器人权限:

im:message

im:message.group_at_msg

im:message.group_at_msg:readonly

im:message.p2p_msg

im:message.p2p_msg:readonly

im:message:send_as_bot

 

 

事件订阅
 消息监听事件

代码参考
/*** 用户请求入口* @param request* @param response* @throws Throwable*/
@RequestMapping(value = "/ask/fileDownload")public void ask(HttpServletRequest request, HttpServletResponse response) throws Throwable {//3.1 回调扩展包提供的事件回调处理器
//监听消息 ->请求ai->回复消息servletAdapter.handleEvent(request, response, EVENT_DISPATCHER);}//1. 注册消息处理器
private final EventDispatcher EVENT_DISPATCHER = EventDispatcher.newBuilder("","").onP2MessageReceiveV1(new ImService.P2MessageReceiveV1Handler() {@Overridepublic void handle(P2MessageReceiveV1 event) throws Exception {log.info("P2MessageReceiveV1={}",Jsons.DEFAULT.toJson(event));String content = event.getEvent().getMessage().getContent();String text = JSONUtil.parseObj(content).getStr("text");log.info("text={}",text);// 获取租户 keyString tenantKey = event.getTenantKey();String openId = event.getEvent().getSender().getSenderId().getOpenId();aiAssistantService.answer(text,tenantKey,openId);log.info("requestId={}",event.getRequestId());}}).onP2UserCreatedV3(new ContactService.P2UserCreatedV3Handler() {@Overridepublic void handle(P2UserCreatedV3 event) {log.info("P2UserCreatedV3={}",Jsons.DEFAULT.toJson(event));log.info(event.getRequestId());}}).onP2MessageReadV1(new ImService.P2MessageReadV1Handler() {@Overridepublic void handle(P2MessageReadV1 event) {log.info("P2MessageReadV1={}",Jsons.DEFAULT.toJson(event));System.out.println(event.getRequestId());}}).onP1MessageReadV1(new ImService.P1MessageReadV1Handler() {@Overridepublic void handle(P1MessageReadV1 event) {log.info("P1MessageReadV1={}",Jsons.DEFAULT.toJson(event));System.out.println(event.getRequestId());}}).build();//2. 注入 ServletAdapter 实例
@Autowired
private ServletAdapter servletAdapter;//service类的方法@Asyncpublic void answer(String askStr,String tenantKey,String openId) throws Exception {//通过openId 获取 sessionIdString sessionId = map.get(openId);log.info("askStr start={}",askStr);ApplicationParam param = ApplicationParam.builder().apiKey("sk-*************").appId("*******************").prompt(askStr).sessionId(sessionId).build();log.info("param={}",JSONUtil.toJsonStr(param));Application application = new Application();ApplicationResult result = application.call(param);if(result.getOutput().getSessionId()!=null){map.put(openId,result.getOutput().getSessionId());}String text = result.getOutput().getText();
//飞书应用的秘钥,用户回复信息Client client = Client.newBuilder("cli_*******","j***********").build();Map<String, String> map = new HashMap<>();map.put("text",text);log.info("resp={}",JSONUtil.toJsonStr(map));// 发送请求,回复提问client.im().message().create(CreateMessageReq.newBuilder().receiveIdType(ReceiveIdTypeEnum.OPEN_ID).createMessageReqBody(CreateMessageReqBody.newBuilder().content(JSONUtil.toJsonStr(map)).msgType(MsgTypeEnum.TEXT.getValue()).receiveId(openId).build()).build(), RequestOptions.newBuilder().tenantKey(tenantKey).build());log.info("askStr end ={}",askStr);}
 效果预览

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

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

相关文章

判断用户输入IP的合法性判断输入IP与本机IP是否在同一网段C++QT

目录 一、任务目标 二、判断用户输入IP的合法性 三、判断用户输入IP与本机IP是否在同一网段 一、任务目标 1、判断用户输入IP的合法性&#xff0c;例如是否不符合IP地址的正确格式&#xff1b; 2、判断用户输入IP与本机IP是否在同一网段&#xff1b; 3、使用C和QT实现&…

Nacos 服务发现(订阅)源码分析(服务端)

前言&#xff1a; 前文我们分析了 Nacos 服务发现&#xff08;订阅&#xff09;的流程&#xff0c;从 Nacos Client 端的源码分析了服务发现的过程&#xff0c;服务发现最终还是要调用 Nacos Server 端来获取服务信息&#xff0c;缓存到客户端本地&#xff0c;并且会定时向 Na…

HumanitZ人道主义z用服务器开服教程

1、登录服务器&#xff08;百度莱卡云&#xff09; 进入控制面板后会出现正在安装的界面&#xff0c;安装大约5分钟&#xff08;如长时间处于安装中请联系我们的客服人员&#xff09; 2、修改查询端口 点击网络&#xff0c;两个端口已经创建完成 复制不是首选的端口&#xff…

入门 git

目录 文章简介1. git 是什么2. 为什么要用 git3. git 入门操作4. git 的来源简述&#xff08;拓展&#xff09; 文章简介 本篇文章主要介绍命令行下的 git 的入门操作&#xff08;本地 – 远端仓库的推送拉取&#xff09;&#xff0c;以及简单理解什么是 git&#xff0c; 为什…

无需标注即可训练,自监督学习框架实现大量未标注毫米波雷达数据预训练自动驾驶感知任务

Abstract 由于雷达&#xff08;radar&#xff09;在雾天和恶劣天气下的操作能力&#xff0c;自动驾驶车辆使用雷达进行感知引起了越来越多的研究兴趣。然而&#xff0c;训练雷达模型受到大规模雷达数据注释的成本和难度的阻碍。为了克服这一瓶颈&#xff0c;我们提出了一种自监…

python pandas处理股票量化数据:笔记4

更新日线数据到最新日期&#xff0c;下面是深发展&#xff08;平安银行&#xff09;更新到20240715以后的stock_daily表。因为积分不够&#xff0c;无法下载tushare.pro接口的通用复权行情数据&#xff0c;只能使用旧的日线数据接口pro.daily&#xff0c;下载的数据没有日线复权…

驱动开发系列04-中断处理

目录 一:概述 二:启用中断 三:注册中断处理程序 四:自动检测中断号 五:快中断与慢中断 六:中断处理程序 七:处理参数和返回值 八:禁用中断 九:上半部和下半部 Tasklets Workqueues 十:共享中断 一:概述 虽然有时候只需使用I/O端口就能控制设备了,但大多…

事务失效的几种情况

一、事务管理的基本概念 事务有四个重要特性&#xff0c;称为ACID特性&#xff1a; Atomicity(原子性)&#xff1a;事务中的所有操作要么全部完成&#xff0c;要么全部不完成。Consistency(一致性)&#xff1a;事务完成后&#xff0c;数据要处于一致的状态Isolation(隔离性)&…

如何在电脑上演示手机上APP,远程排查移动端app问题

0序&#xff1a; 对接客户&#xff0c;给领导演示移动端产品&#xff0c;或者远程帮用户排查移动端产品的问题。都需要让别人能够看到自己在操作手机。 会议室可以使用投屏&#xff0c;但需要切换电脑和手机。 排查问题经常都是截图、或者手机上录制视频&#xff0c;十分繁琐…

Windows图形界面(GUI)-DLG-C/C++ - 滑动条(Trackbar)

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​​​​链接点击跳转博客主页 目录 滑动条(Trackbar) 使用场景 初始控件 控件消息 示例代码 滑动条(Trackbar) 使用场景 音量控制 亮度调节 视频播放进度控制 任何需要用户在特定范围内选择值的场景 初始控…

恶补,先验分布,后验分布 ,似然估计

恶补&#xff0c;打一遍增加印象 先验分布后验分布&#xff0c;似然估计 声明&#xff1a;仅记录个人学习&#xff0c;并无其他用途。 先验分布 后验分布&#xff0c; 似然估计 隔壁小哥的故事&#xff1a; 隔壁小哥要去15公里外的一个公园里玩&#xff0c;小哥可以选择步行…

【BUG】已解决:ModuleNotFoundError: No module named ‘PIL‘

已解决&#xff1a;ModuleNotFoundError: No module named ‘PIL‘ 目录 已解决&#xff1a;ModuleNotFoundError: No module named ‘PIL‘ 【常见模块错误】 错误原因&#xff1a; 解决办法&#xff1a; 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我…

离散型随机变量为何不是左连续?

目录 离散型随机变量 引言 离散型随机变量的定义和性质是什么&#xff1f; 定义 性质 如何证明离散型随机变量的分布函数在每个可能取值处不具有左连续性&#xff1f; 离散型随机变量的阶梯状分布函数是如何影响其左连续性的&#xff1f; 在统计学中&#xff0c;有哪些方…

web前端面向对象面试25题

1 . 简述面向对象&#xff1f;主要特征是什么&#xff1f; 参考回答&#xff1a; 面向对象是一种对现实世界理解和抽象的方法&#xff0c;是计算机编程技术发展到一定阶段后的产物&#xff0c;是一种是软件开发方法面向对象主要有四大特性&#xff1a; 1、抽象 忽略一个主题中…

微信小程序-自定义组件生命周期

一.created 组件实例创建完毕调用。定义在lifetimes对象里。 不能在方法里面更改data对象里面的值&#xff0c;但是可以定义属性值。 lifetimes:{//不能给data设置值created(){this.testaaconsole.log("created") }}二. attached 模板解析完成挂载到页面。 可以更…

Gitee 使用教程1-SSH 公钥设置

一、生成 SSH 公钥 1、打开终端&#xff08;Windows PowerShell 或 Git Bash&#xff09;&#xff0c;通过命令 ssh-keygen 生成 SSH Key&#xff1a; ssh-keygen -t ed25519 -C "Gitee SSH Key" 随后摁三次回车键&#xff08;Enter&#xff09; 2、查看生成的 SSH…

Carousel of Combinations

由圆排列的公式&#xff0c;不难有 C ( n , k ) ( k n ) k ! k C(n,k)(_k^n)\times \frac{k!}{k} C(n,k)(kn​)kk!​ 于是答案为 ∑ i 1 n ∑ j 1 i ( ( j i ) ⋅ ( j − 1 ) ! ) m o d j \sum_{i1}^{n}\sum_{j1}^{i}((_j^i)\cdot (j-1)!)mod\space j ∑i1n​∑j1i​((ji​…

React学习笔记(井字棋游戏)

本教程将引导你逐步实现一个简单的井字棋游戏&#xff0c;并且不需要你对 React 有任何了解。在此过程中你会学习到一些编写 React 程序的基本知识&#xff0c;完全理解它们可以让你对 React 有比较深入的理解。 教程分成以下几个部分&#xff1a; 配置 是一些准备工作。 概…

【Linux服务器Java环境搭建】010在linux中安装Redis,以及对Redis的配置与远程连接

系列文章目录 【Linux服务器Java环境搭建】 前言 好久没有更新博客了&#xff0c;今天下了班回到家&#xff0c;看到电脑桌上尘封已久的《Spring Boot应用开发实战》&#xff0c;翻开目录想起来之前写的系列【Linux服务器Java环境搭建】还未完结&#xff0c;那就继续吧&#…

实现异步天气数据获取与Spring缓存集成

你好呀&#xff0c;我是小邹。 在Web应用中&#xff0c;实时天气数据的获取是一个常见的需求&#xff0c;特别是在需要频繁更新天气信息的场景下&#xff0c;如旅游网站、天气应用或任何需要展示地理位置相关天气的应用。然而&#xff0c;频繁的外部API调用不仅会增加服务器的…