HI,大家好,年前好忙,接近一个月没有更新了。

依稀记得在元旦期间大规模的检测,让大家的小助手都挂掉了,时至今日都无法再使用。

先给大家讲讲原理。

大家使用的COW或DOW之前都是依托于itchat,它是一个Web协议,也就是只能在网页登录的。

所以大家登录后在手机上看到的是“windows 微信已登录”或者“网页已登录”。

此次检测也是针对于Web协议,所以,一扫一个准儿。

DOW在元旦前,更新了GEWE协议,它是一个Ipad协议,不在检测范围内。

再来谈谈优劣势。

优势:

GEWE协议中,包含了很多更好的接口,比如之前大家问过的。

是否能发语音条?是否能操作朋友圈?是否能自动拉别人进群?

这些它都做得到,但是要自己接

劣势:

接口废了一大半,插件一半以上无法使用,需要重新封装。

原理如下图,简单可以理解成为原来的接口是A,现在的接口是B了,名字都换了,所以识别不到。

安装部署

对比之前,多了需要部署GEWE的步骤。

如果你一直是老金的粉丝,那很好,这里我说什么你应该很容易看得懂。

如果你之前没看过老金的文章,那么请自行申请 腾讯云宝塔服务器 。可参考 COW初级使用教程。

Dify-On-Wechat项目部署需要参考 DOW使用教程。

1、部署GEWE

这里我们使用Docker部署,这里为了方便小白操作,咱直接放宝塔上的步骤,不使用指令了。

先下载GEWE镜像,从下选择合适自己的:

# 从阿里云镜像仓库拉取(国内)
docker pull registry.cn-chengdu.aliyuncs.com/tu1h/wechotd:alpine
docker tag registry.cn-chengdu.aliyuncs.com/tu1h/wechotd:alpine gewe

# 或从GitHub镜像仓库拉取
docker pull ghcr.io/tu1h/wechotd/wechotd:alpine
docker tag ghcr.io/tu1h/wechotd/wechotd:alpine gewe

root下 新建一个 gewechat文件夹 。

创建 data文件夹 和 docker-compose.yml 文件。

复制以下内容到 docker-compose.yml 文件。

version: '3'
services:
  gewechat:
    image: gewe
    container_name: gewe
    volumes:
      - ./data:/root/temp
    ports:
      - "2531:2531"
      - "2532:2532"
    networks:
      - gewe-network
    extra_hosts:
      - "host.docker.internal:host-gateway"# 添加这行,允许容器访问宿主机
    restart: always

networks:
  gewe-network:
    driver: bridge

然后点击 终端 ,执行指令,启动Docker,直接执行第2个,第1个只是备注给大家说明。

docker-compose down     #会停止并移除所有容器
docker-compose up -d    #以 后台模式 启动所有容器

看到如下日志,代表启动成功。

然后查看Docker中是否已经启动,如果已经启动了,那么代表GEWE部署完成。

2、部署Dify-On-Wechat

以下简称为DOW。下载安装我就不多解释了,看老金之前的文章教学, DOW使用教程

这里只说怎么连接GEWE。

dify-on-wechat、dify、gewechat服务的调用关系

在dify-on-wechat项目的 config.json 中需要配置以下Gewechat相关的参数,注意 删除解释的文字 :

这里如果你和老金一样Gewe是在Docker中部署的,那么直接和老金写一样的就行。

Dify相关的请自行配置。

{
    "channel_type": "gewechat"   # 通道类型,请设置为gewechat  
    "gewechat_app_id": "",
    "gewechat_token": "",
  
    "gewechat_base_url": "http://172.17.0.1:2531/v2/api",
    "gewechat_callback_url": "http://172.17.0.1:9919/v2/api/callback/collect",
    "gewechat_download_url": "http://172.17.0.1:2532/download",
}

参数说明:

  • gewechat_token : gewechat服务的认证token,首次登录时,可以留空,启动dify-on-wechat服务时,会 自动获取token 并 自动保存到config.json 中
  • gewechat_app_id : gewechat服务分配的设备ID,首次登录时,可以留空,启动dify-on-wechat服务时,会 自动获取appid 并 自动保存到config.json 中
  • gewechat_base_url : gewechat服务的API基础地址,请根据实际情况配置,如果gewechat服务与dify-on-wechat服务部署在同一台机器上,可以配置为 http://本机ip:2531/v2/api
  • gewechat_callback_url : 接收gewechat消息的回调地址,请根据实际情况配置,如果gewechat服务与dify-on-wechat服务部署在同一台机器上,可以配置为 http://本机ip:9919/v2/api/callback/collect ,如无特殊需要,请使用9919端口号
  • gewechat_download_url : 文件下载地址,用于下载语音、图片等文件,请根据实际部署情况配置,如果gewechat服务与dify-on-wechat服务部署在同一台机器上,可以配置为 http://本机ip:2532/download

请确保您的回调地址(callback_url),即dify-on-wechat启动的回调服务可以被gewechat服务正常访问到。如果您使用Docker部署,需要注意网络配置,确保容器之间可以正常通信。

本机ip是指 局域网ip 或 公网ip ,可通过 ipconfig 或 ifconfig 命令查看

对与gewechat_callback_url,ip不能填 127.0.0.1 或 localhost ,否则会报错

9919 端口是dify-on-wechat服务监听的端口,如果是用docker启动的dify-on-wechat服务,请把 9919 端口映射到宿主机

启动成功后,可以看到如下日志信息,注意token和appid会自动保存到config.json,无需手动保存

⚠️如果遇到gewechat创建设备失败,unexpected EOF错误,请排查网络是否是以下情况:

1、代理:请关闭代理后尝试;

2、国外服务器:请更换为国内服务器;

3、回调地址为外网:请更换为内网地址;

4、异地服务器:请更换为同省服务器;

5、若手机上退出了Ipad,则需要把config里面GEWE的id和token的值删除;

语音条说明

我自己还没接,有兴趣的小伙伴可以自己试试。

语音相关配置如下,另外需要在dify应用中开启语音转文字以及文字转语音功能,注意语音功能需要 安装ffmpeg依赖 ,如使用docker部署dify,已集成ffmpeg依赖,无需额外安装。

{
  "dify_api_base": "https://api.dify.ai/v1",
"dify_api_key": "app-xxx",
"dify_app_type": "chatbot",  # 或agent
"channel_type": "gewechat",  # 通道类型设置为gewechat
"model": "dify",  
"speech_recognition": true,  # 是否开启语音识别
"voice_reply_voice": true,   # 是否使用语音回复语音
"always_reply_voice": false, # 是否一直使用语音回复
"voice_to_text": "dify",     # 语音识别引擎
"text_to_voice": "dify"      # 语音合成引擎
}

Gewe支持 发送语音条消息 ,但是Gewe服务只能获取到 20s 以内的语音

所以 你只能给bot发送20s以内的语音 ,而 bot给你发送语音时无此限制 。

G ewechat_channel 限制

  1. gewechat 要求必须搭建服务到 同省 服务器或者电脑里方可正常使用,即登录微信的手机与gewechat服务必须在同一省
  2. gewechat 开源框架 只支持 下载接收到的图片,不支持下载文件
  3. gewechat_channel 目前暂时 只支持接收文字消息 , 只支持发送文字消息与图片消息 ,后续支持的消息类型会逐步完善
  4. 此项目仅用于个人娱乐场景, 请勿用于任何商业场景