机器人支持回调接口配置(详细教程)

大家伙,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。

一、前言

今天,给大家介绍一下,如何在机器人中配置回调地址和接口编写。很多时候我们可能有这样的场景,收到消息后,想自己处理一下消息的内容,然后操作完后给用户返回出去,那么,这种场景下,就离不开接口的回调了。

目前支持的回调:

  • 收到消息
  • 撤回消息
  • 注入成功
  • 登录成功
  • 进群
  • 退群
  • 通过好友申请
  • 转账退款
  • 转账收款
  • …其他的还在开发中

二、开发回调接口

我这边以python为例,因为回调接口我们需要接收一个json格式的数据,所以,先创建个类,如下所示:


from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from typing import Optional, List
from fastapi import APIRouter

app = FastAPI()

huidiao_router = APIRouter()

# 消息实体
class CallBackDataEntity(BaseModel):
    wxid: Optional[str] = None  # wxid
    wxNum: Optional[str] = None  # 微信号
    nick: Optional[str] = None  # 昵称
    device: Optional[str] = None  # 登录设备
    phone: Optional[str] = None  # 电话
    avatarUrl: Optional[str] = None  # 头像
    country: Optional[str] = None  # 国家
    province: Optional[str] = None  # 省
    city: Optional[str] = None  # 城市
    email: Optional[str] = None  # 邮箱
    qq: Optional[str] = None  # QQ
    timeStamp: Optional[int] = None # 时间戳
    fromType: Optional[int] = None # 来源类型:1|私聊 2|群聊 3|公众号
    # 消息类型:1|文本 3|图片 34|语音 42|名片 43|视频 47|动态表情
    # 48|地理位置 49|分享链接或附件 2001|红包 2002|小程序
    # 2003|群邀请 10000|系统消息
    # 60 撤回消息  61 登录成功  62退群 63 进群 64通过好友申请 65注入成功 66转账
    msgType: Optional[int] = None
    msgSource: Optional[int] = None # 消息来源:0|别人发送 1|自己手机发送
    fromWxid: Optional[str] = None # fromType=1时为好友wxid,fromType=2时为群wxid,fromType=3时公众号wxid
    fromNick: Optional[str] = None # fromType=1时为好友wxid,fromType=2时为群昵称,fromType=3时公众号昵称
    finalFromWxid: Optional[str] = None  # 仅fromType=2时有效,为群内发言人wxid
    finalFromNick: Optional[str] = None  # 仅fromType=2时有效,为群内发言人昵称
    atWxidList: Optional[list] = None  # 仅fromType=2,且msgSource=0时有效,为消息中艾特人wxid列表
    silence: Optional[int] = None # 仅fromType=2时有效,0
    membercount: Optional[int]= None  # 仅fromType=2时有效,群成员数量
    signature: Optional[str] = None
    # 消息内容
    msg: Optional[str]= None
    # 性别
    sex: Optional[str]= None

    # 创建get方法
    def get(self, param):
        return getattr(self, param)



接下来就比较简单了,写个接口,接收一下消息就行。


# 回调接口信息处理
@huidiao_router.post("/receive_message_callback")
async def receive_message(data: CallBackDataEntity):
    # 将收到的消息转换成json
    data = data.dict()
    print(f"接收到了回调消息,内容是:{data}")
    # 这里可以添加你的业务逻辑
    return {"message": "success"}
    

可以从实体中看到,我们将所有关键信息都已经传递到回调接口中,剩下的实现就得看自己的了。

收到消息的json:


{
  "atWxidList": [
    
  ],
  "finalFromNick": "雄雄的小课堂",
  "finalFromWxid": "wxid_ehfdz38cq3bt22",
  "fromNick": "雄雄的大家庭",
  "fromType": 2,
  "fromWxid": "47747688531@chatroom",
  "membercount": 4,
  "msg": "哈哈",
  "msgSource": 0,
  "msgType": 1,
  "signature": "V1_HbNcDfZr|v1_HbNcDfZr",
  "silence": 0,
  "timeStamp": "1716713595"
}


其他类型的消息也都差不多,只不过,需要注意一下:msgType的值,各个值的注释如下:

消息类型:1|文本 3|图片 34|语音 42|名片 43|视频 47|动态表情 48|地理位置 49|分享链接或附件 2001|红包 2002|小程序 2003|群邀请 10000|系统消息 60 撤回消息 61 登录成功 62退群 63 进群 64通过好友申请 65注入成功 66转账

60以后得都是我们回调事件用到的,其他的事收到的消息用到的。

三、服务端配置回调地址

首先,我们需要从服务端上,将回调地址配置一下,如下所示:

找到【基础配置】中的【回调接口配置】,然后点击新增按钮,选择接口类型、接口地址,备注可以填可以不填。

我这边使用了个测试的地址:http://127.0.0.1:7582/callback/receive_message_callback

信息填写完成后,点击确定即可,然后最重要的一步,就是【同步】功能,需要将服务端的配置信息,发送到客户端的配置文件中,然后就可以使用了。

四、测试

我们从群里发个消息,可以看到日志中就会输出来回调的信息。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用Python一键生成PNG图片的PowerPoint幻灯片

在当今的商业环境中,PowerPoint演示是展示和传递信息的常用方式。然而,手动将大量图像插入到幻灯片中往往是一项乏味且耗时的工作。但是,通过Python编程,我们可以轻松自动化这个过程,节省时间和精力。 C:\pythoncode\new\folderTOppt.py 在本文中,我将介绍如何使用Python、wx…

Rust开源Web框架Salvo源码编译

1.克隆源码: https://github.com/salvo-rs/salvo.git 2.进入salve目录并运行cargo build编译 编译成功 3.编译生成的库 4.安装salve-cli git clone --recursive https://github.com/salvo-rs/salvo-cli.git 编译salve-cli

人工智能万卡 GPU 集群的硬件和网络架构

万卡 GPU 集群互联:硬件配置和网络设计 一、背景 自从 OpenAI 推出 ChatGPT 以来,LLM 迅速成为焦点关注的对象,并取得快速发展。众多企业纷纷投入 LLM 预训练,希望跟上这一波浪潮。然而,要训练一个 100B 规模的 LLM,通常需要庞大的计算资源,例如拥有万卡 GPU 的集群。以…

Google Play 提示 “您的设备与此版本不兼容“ 解决方案

一、 问题概述Google Play提示“您的设备与此版本不兼容”,无法安装应用。 遇到问题的设备为Xiaomi Mi A3,查了下这台手机的基本信息,Android One系统,版本分为9.0、10.0、11.0。 二、 问题分析Google Play的过滤器 通常有以下5种…

【Nginx <末>】Nginx 基于 IP 地址的访问限制

目录 👋前言 📫一、限制 IP 可以实现哪些功能 👀二、 项目实现 2.1 访问控制实现 2.2 Nginx 配置中指定 IP 地址 💞️三、章末 👋前言 小伙伴们大家好,前面一段时间学习了 Nginx 的相关知识&#xff0c…

RT-DRET在实时目标检测上超越YOLO8

导读 目标检测作为计算机视觉的核心任务之一,其研究已经从基于CNN的架构发展到基于Transformer的架构,如DETR,后者通过简化流程实现端到端检测,消除了手工设计的组件。尽管如此,DETR的高计算成本限制了其在实时目标检测…

React useState基本类型变量的使用

在 React 中,useState 是一个 Hook,用于在函数组件中添加状态,它可以让函数组件拥有状态。基本使用方法如下: // App.jsx import React, { useState } from reactfunction App() {// 使用 useState 创建一个状态变量,初…

如何用Java实现SpringCloud Alibaba Sentinel的熔断功能?

在Java中使用Spring Cloud Alibaba Sentinel实现熔断功能的步骤如下&#xff1a; 添加依赖 在项目的pom.xml文件中添加Spring Cloud Alibaba Sentinel的依赖&#xff1a; <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud…

C语言——malloc和free用法和常见误区

最近写了个关于动态数组的代码&#xff0c;遇到了一个大坑&#xff0c;特此记录 先说结论&#xff1a; 1.利用malloc创建堆空间&#xff0c;大小最好设置大一点&#xff0c;不然后面存进去的值需要的空间过大会导致各种的堆、指针问题 2.只能使用realloc对已经创建的空间进行修…

没有电商经验的人去操作抖音小店,难度大不大?好操作吗?

大家好&#xff0c;我是电商小V 很多新手小伙伴想去操作抖音小店项目&#xff0c;咨询的最多的问题就是我没有电商运营的经验可以去操作吗&#xff1f; 当然是可以操作的&#xff0c;抖音小店项目对于新手来说是一个非常友好的项目&#xff0c;很多小伙伴都是感觉没有电商经验去…

C++——list的实现以及源码

前言&#xff1a; 最近学习了clist的实现&#xff0c;这让我对迭代器的理解又上升了一个新的高度&#xff0c;注意&#xff1a;代码里的list是放在一个叫zgw的命名空间里边&#xff0c;但是在实现list的代码中没有加namespace&#xff0c;这里给个注意&#xff0c;以后复习时能…

整理了10个靠谱且热门的赚钱软件,适合普通人长期做的赚钱副业

作为一名普通的上班族&#xff0c;我们每天都在辛勤工作&#xff0c;但工资的增长速度却如同蜗牛般缓慢。不过&#xff0c;别担心&#xff0c;信息时代总是带给我们无尽的惊喜&#xff01;今天&#xff0c;我将为大家推荐一些赚钱的宝藏软件&#xff0c;让你在闲暇之余轻松实现…

五分钟搭建一个Suno AI音乐站点

五分钟搭建一个Suno AI音乐站点 在这个数字化时代&#xff0c;人工智能技术正以惊人的速度改变着我们的生活方式和创造方式。音乐作为一种最直接、最感性的艺术形式&#xff0c;自然也成为了人工智能技术的应用场景之一。今天&#xff0c;我们将以Vue和Node.js为基础&#xff…

三十六计的笔记

系列文章目录 三十六计的笔记 文章目录 系列文章目录1、瞒天过海2、围魏救赵3、借刀杀人4、以逸待劳5、趁火打劫6、声东击西7、无中生有8、暗渡陈仓9、隔岸观火10、笑里藏刀11、李代桃僵12、顺手牵羊13、打草惊蛇14、借尸还魂15、调虎离山16、欲擒故纵17、抛砖引玉18、擒贼擒王…

牛客NC302 环形数组的连续子数组最大和【中等 动态规划 Java/Go/PHP/C++】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/e9f3282363844355aa51497c5410beee 思路 动态规划 两种情况&#xff08;首位相连的&#xff09;和首位不相连的 首尾相连的可以算最小的连续子数组得出&#xff0c;sum-就是。Java代码 import java.util.*;pub…

第20届文博会:“特别呈现”—周瑛瑾雷米·艾融双个展,著名美术评论家,批评家彭德教授对周瑛瑾作品进行评论

周瑛瑾不是学院派艺术家&#xff0c;但在彩墨画领域的天赋超出中国八大美院的同类型画家。相比具有批判意识的当代艺术&#xff0c;他的彩墨艺术如同我们这个苦难世界的创可贴和安慰剂。当我面对他的彩墨画&#xff0c;首先是惊艳&#xff0c;随之想到屈原的离骚&#xff0c;还…

slint esp32 tokio

源码&#xff1a;https://github.com/xiaguangbo/slint_esp32_tokio cpu 是 esp32c2&#xff0c;屏幕是 ili9341&#xff0c;触摸是 xpt2046&#xff0c;使用 spi 半双工 不使用DMA&#xff08;esp-rs还没支持&#xff09;&#xff0c;SPI 40M&#xff0c;240*320全屏刷新为1.5…

Windows、Linux下,基于QT的打包方法

整理这篇文档的意义在于&#xff1a;自己走了很多弯路&#xff0c;淋过雨所以想为别人撑伞&#xff0c;也方便回顾&#xff0c;仅供参考 ps: 第一次做Windows下打包&#xff0c;用了2小时&#xff0c;第二次20秒第一次做Linux(ubuntu)下打包&#xff0c;用了8小时&#xff0c;…

Linux 内核

查看内核的发行版 $ uname -r 5.4.0-150-genericcd /lib/modules/5.4.0-150-generic, 内核源码所在的位置&#xff1a;/usr/src 这里的内核源码路径&#xff08;–kernel-source-path&#xff09;即为&#xff1a; cd /usr/src/linux-headers-5.4.0-150-generic/ 临时生效: …

JMETER工具:以录制手机app为例

JMETER工具&#xff1a;以录制手机app为例子 JMETER安装和环境配置 pc需要安装jdk&#xff0c;并进行jdk的环境配置&#xff0c;安装好jdk并配置好后&#xff0c;通过命令行输入java –version出现以下界面就表示安装成功&#xff1a; &#xff08;对应的jdk版本不可太低&…