当前位置:首页文章你们要的微信机器人相关的教程来啦

你们要的微信机器人相关的教程来啦

微信 Webhook 机器人是基于 Web 协议实现的,用于研究和学习目的。该项目能够使用户通过HTTP服务运行一个微信机器人,支持消息的发送和接收。

特点

  • 发送文字、图片、文件

  • 接收文字、链接卡片、图片、视频、附件、语音

  • Webhook 接口

  • 易于部署和使用

如何部署

部署的过程和方式非常简单,这里需要使用Docker快速部署微信机器人服务。

拉取镜像

首先我将需要的镜像拉取下来:

docker pull dannicool/docker-wechatbot-webhook

创建我们的容器:

docker run \
-d \
--name wxBotWebhook \
-p 3001:3001 \
-e RECVD_MSG_API=http://192.168.31.100:8080/api \
-e DISABLE_AUTO_LOGIN=true
-e LOGIN_API_TOKEN=abc
-v ~/wxBot_logs:/app/log \
dannicool/docker-wechatbot-webhook

环境变量解读:

  • RECVD_MSG_API:当机器人收到消息时会将将消息推送到此接口上。

  • DISABLE_AUTO_LOGIN:服务重启时自动登录微信号。

  • LOGIN_API_TOKEN:自定义登录 API token。

也可以使用compose部署:

version: '3.8'
services:
  wxBotWebhook:
    image: dannicool/docker-wechatbot-webhook
    container_name: wxbot_app
    volumes:
      - ./wxBot_logs:/app/log
    ports:
      - "3001:3001"
    environment:
      - LOG_LEVEL=info # 调整容器输出级别(不影响日志文件输出等级)运行时提示的消息等级(默认info,debug级别会输出详细的日志)
      # - DISABLE_AUTO_LOGIN=true # 如果不希望登录一次后就记住当前账号,想每次都扫码登陆,填 true
      # - ACCEPT_RECVD_MSG_MYSELF=true # 如果希望机器人可以自己接收消息,填 true
      # - RECVD_MSG_API= # 如果想自己处理收到消息的逻辑,在下面填上你的API地址, 默认为空
      # - LOGIN_API_TOKEN= # 登录地址Token访问地址:http://localhost:3001/login?token=[LOCAL_LOGIN_API_TOKEN]
    restart: unless-stopped

登录机器人账号

服务部署成功时,通过访问:

https://localhost:3001/login?token=abc 

此处的token参数即为你设定的LOGIN_API_TOKEN值,访问后可以看到一个二维码,使用微信扫码登录账号。

扫码登录后,再次访问该登录页面即可看到账号登录成功了。

你们要的微信机器人相关的教程来啦

发送消息

在成功登录微信账号后,如何给某个微信好友发送消息呢?wechatbot-webhook提供了一种以http协议的API接口,通过调用提供的api接口即可操控机器人给好友发送消息。

API接口地址:

 http://your_server_ip:3001/webhook/msg/v2?token=[LOGIN_API_TOKEN]

发送文本消息

我们通过向API接口推送指定的消息结构即可完成消息的发送。

 curl --location --request POST 'http://localhost:3001/webhook/msg/v2?token=[LOGIN_API_TOKEN]' \
  --header 'Content-Type: application/json' \
  --data-raw '{
      "to": "好友昵称",
       "data": { 
          "type": "text" , 
          "content": "你好👋" 
        }
  }'

参数解析:

to:消息接收方,传入String 默认是发给昵称(群名同理), 传入Object 结构支持发给备注过的人,比如:{alias: '备注名'},群名不支持备注名。

type:消息类型, 字段留空或者为text解析为纯文本。也可以填写fileUrl表示发送此链接的文件给好友。

content:消息内容,如果希望发多个Url并解析,type 指定为 fileUrl 同时,content 里填 url 以英文逗号分隔。

还有一些其他的参数,例如:

isRoom:是否发给群消息(true/false),这个参数决定了找人的时候找的是群还是人(默认发送给人),因为昵称其实和群名相同在技术处理上。

发送消息到群组

curl --location 'http://localhost:3001/webhook/msg/v2?token=[LOGIN_API_TOKEN]' \
--header 'Content-Type: application/json' \
--data '{
    "to": "群组名称",
    "isRoom": true,
    "data": {
        "type": "text",
        "content": "你好这是一条群组消息。"
    }
}'

多发消息

一次性发送多条消息到指定的好友:

curl --location 'http://localhost:3001/webhook/msg/v2?token=[LOGIN_API_TOKEN]' \
--header 'Content-Type: application/json' \
--data '{
    "to": "好友昵称",
    "data": [
        {
            "type": "text",
            "content": "你好👋"
        },
        {
            "type": "fileUrl",
            "content": "https://samplelib.com/lib/preview/mp3/sample-3s.mp3"
        }
    ]
}'

群发消息

一次发送多条消息到多个人:

curl --location 'http://localhost:3001/webhook/msg/v2?token=[LOGIN_API_TOKEN]' \
--header 'Content-Type: application/json' \
--data '[
    {
        "to": "好友1",
        "data": {
            "content": "你好👋"
        }
    },
    {
        "to": "好友2",
        "data": [
          {
            "content": "你好👋"
          },
          {
            "content": "近况如何?"
          }
        ]
    }
]'

发送文件

我们可以给好友发送指定的文件信息:

curl --location 'http://localhost:3001/webhook/msg/v2?token=[LOGIN_API_TOKEN]' \
--header 'Content-Type: application/json' \
--data '{
    "to": "好友昵称",
    "data": { 
      "type": "fileUrl" , 
      "content": "https://download.samplelib.com/jpeg/sample-clouds-400x300.jpg?$alias=cloud.jpg" 
    }
}'

其中的content对应的内容:

https://xxxx.jpg?$alias=cloud.jpg

后面跟随的alias参数则代表发送的此文件自定义的名称,也可以不追加此参数。

消息是否发送成功

在我们调用消息推送的接口是,该接口会返回数据高知我们是否成功的发送了消息:

{
      # 消息发送成功与否
    "success": true,
      # 出错时提示的消息
    "message": "",
    "task": {
              # 发送成功条数
        "successCount": 0,
              # 总消息条数
        "totalCount": 0,
              # 发送失败条数
        "failedCount": 0,
        "reject": [],
        "sentFailed": [],
                # 因为未找到用户或者群和 error 提示
        "notFound": []
    }
}

接收消息

学习完消息的发送,我们来看看如何接收来自群组以及好友的消息。

在容器部署的时候我们指定过一个环境变量RECVD_MSG_API。当机器人收到消息时会将消息主体以POST形式推送到该接口上。

消息结构

  {
    # 消息类型
    "type": "text",
    # 消息内容
    "content": "你好",
    # 消息发送方的数据
    "source": "{}",
    # 是否被艾特
    "isMentioned": "0",
    # 是否自己发送给自己的消息
    "isMsgFromSelf": "0",
    # 被遗弃的参数
    "isSystemEvent": "0"
  }

消息类型对应的有:

功能类型:文字消息 text、链接卡片 urlLink、图片 视频 附件 语音 file、添加好友邀请 friendship。

系统类型:登录 system_event_login、登出 system_event_logout、异常报错 system_event_error、 快捷回复后消息推送状态通知 system_event_push_notify。

其他类型:未实现的消息类型 unknown。

处理收到的消息

如果在收到消息后,可以快速回复该消息。只需要给请求方响应对应的结构即可回复该好友的消息:

 {
    "success": true,
    "data": {
      "type": "text",
      "content": "hello world!"
    }
  }

此处的消息结构与主动发送给好友消息结构是一样的,只不过这里不添加isRoom参数。

写在末尾

由于该项目是一个webhook服务,所有的事件响应以及处理都是通过http协议来交互。使用有一定的门槛,需要自己开发一个Server服务端来接收并相应由机器人服务推送过来的消息。这里欢迎大家可以使用自己擅长的语言来针对此服务开发一个SDK,届时可以来我测试并宣传一波😊。

版权声明

站内部分内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供网络资源分享服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请 联系我们 一经核实,立即删除。并对发布账号进行永久封禁处理。在为用户提供最好的产品同时,保证优秀的服务质量。


本站仅提供信息存储空间,不拥有所有权,不承担相关法律责任。

给TA买糖
共{{data.count}}人
人已买糖
快捷指令文章

个个都堪称神器!5 个简单又强大的快捷指令/捷径,建议所有人收藏

2024-3-27 21:42:56

iPhone应用文章

再见Telegram!被国区 App Store 下架

2024-4-20 7:44:37

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索