Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TG上看不到酷Q发的消息 #41

Closed
FishMagic opened this issue Oct 10, 2019 · 25 comments
Closed

TG上看不到酷Q发的消息 #41

FishMagic opened this issue Oct 10, 2019 · 25 comments
Labels
help wanted Extra attention is needed

Comments

@FishMagic
Copy link

TG发到QQ上的消息可以正常被转发给QQ,但是QQ上的消息不会发给TG,按照 #33 的方式测试了也不行

@milkice233
Copy link
Member

请贴出你的所有配置文件,日志等

@FishMagic
Copy link
Author

qq从端

Client: CoolQ # 指定要使用的 QQ 客户端(此处为CoolQ)
CoolQ:
type: HTTP # 指定 efb-qq-slave 与 酷Q 通信的方式 现阶段仅支持HTTP
access_token: 6de142e7f63542389989bc742fb624e4
api_root: http://127.0.0.1:5700/ # 酷Q API接口地址/端口
host: 172.0.0.1 # efb-qq-slave 所监听的地址用于接收消息
port: 8000 # 同上
is_pro: true # 若为酷Q Pro则为true,反之为false
air_option: # 包含于 air_option 的配置选项仅当 is_pro 为 false 时才有效
upload_to_smms: true # 将来自 EFB主端(通常是Telegram) 的图片上传到 sm.ms 服务器并以链接的形式发送到 QQ 端

酷Q启动

docker run --name cqhttp-test --net="host"
-v $(pwd)/coolq:/home/user/coolq # mount coolq folder
-p 9000:9000 # 网页noVNC端口
-p 5700:5700 # 酷Q对外提供的API接口的端口
-e VNC_PASSWD=******** # 请修改 VNC 密码!!!!
-e COOLQ_PORT=5700 # 酷Q对外提供的API接口的端口
-e COOLQ_ACCOUNT=******** # 在此输入要登录的QQ号,虽然可选但是建议填入
-e CQHTTP_POST_URL=http://127.0.0.1:8000 # efb-qq-slave监听的端口/地址 用于接受传入的消息
-e CQHTTP_SERVE_DATA_FILES=yes # 允许以HTTP方式访问酷Q数据文件
-e CQHTTP_ACCESS_TOKEN=6de142e7f63542389989bc742fb624e4 # Access Token
-e CQHTTP_POST_MESSAGE_FORMAT=array # 回传消息时使用数组(必选)
-e COOLQ_URL="http://dlsec.cqp.me/cqp-tuling"
richardchien/cqhttp:latest

@FishMagic
Copy link
Author

日志路径在哪。。

@milkice233
Copy link
Member

milkice233 commented Oct 10, 2019

config.yaml 里
host: 172.0.0.1 改成 host: 172.17.0.1
酷Q启动参数里
-e CQHTTP_POST_URL=http://127.0.0.1:8000 改成 -e CQHTTP_POST_URL=http://172.17.0.1:8000

@FishMagic
Copy link
Author

依旧无法从QQ转发到tg

@milkice233
Copy link
Member

啊抱歉 你开了 --net="host" 的话
host: 127.0.0.1 改成这个

@FishMagic
Copy link
Author

当前配置
酷Q:

docker run --name cqhttp-test --net="host"
-v $(pwd)/coolq:/home/user/coolq # mount coolq folder
-p 9000:9000 # 网页noVNC端口
-p 5700:5700 # 酷Q对外提供的API接口的端口
-e VNC_PASSWD=******** # 请修改 VNC 密码!!!!
-e COOLQ_PORT=5700 # 酷Q对外提供的API接口的端口
-e COOLQ_ACCOUNT=******** # 在此输入要登录的QQ号,虽然可选但是建议填入
-e CQHTTP_POST_URL=http://127.17.0.1:8000 # efb-qq-slave监听的端口/地址 用于接受传入的消息
-e CQHTTP_SERVE_DATA_FILES=yes # 允许以HTTP方式访问酷Q数据文件
-e CQHTTP_ACCESS_TOKEN=6de142e7f63542389989bc742fb624e4 # Access Token
-e CQHTTP_POST_MESSAGE_FORMAT=array # 回传消息时使用数组(必选)
-e COOLQ_URL="http://dlsec.cqp.me/cqp-tuling"
richardchien/cqhttp:latest

QQ从端:

Client: CoolQ # 指定要使用的 QQ 客户端(此处为CoolQ)
CoolQ:
type: HTTP # 指定 efb-qq-slave 与 酷Q 通信的方式 现阶段仅支持HTTP
access_token: 6de142e7f63542389989bc742fb624e4
api_root: http://127.0.0.1:5700/ # 酷Q API接口地址/端口
host: 172.0.0.1 # efb-qq-slave 所监听的地址用于接收消息
port: 8000 # 同上
is_pro: true # 若为酷Q Pro则为true,反之为false
air_option: # 包含于 air_option 的配置选项仅当 is_pro 为 false 时才有效
upload_to_smms: true # 将来自 EFB主端(通常是Telegram) 的图片上传到 sm.ms 服务器并以链接的形式发送到 QQ 端

仍然不行

@milkice233
Copy link
Member

@FishMagic CQHTTP_POST_URL 改成 127.0.0.1

@FishMagic
Copy link
Author

改完之后不就和我第一次提交的配置一样了吗。。

@milkice233
Copy link
Member

milkice233 commented Oct 12, 2019

@FishMagic 你原来的配置是 host: 172.0.0.1

@FishMagic
Copy link
Author

FishMagic commented Oct 12, 2019 via email

@iouAkira
Copy link

@FishMagic 你这个问题最后怎么解决的? 我也是这个问题telegram 可以发,但是收不到

@FishMagic
Copy link
Author

FishMagic commented Oct 31, 2019 via email

@milkice233
Copy link
Member

不好意思...最近比较忙(
是否可以尝试一下用 docker-compose 的方式部署,具体步骤在 https://milkice.me/2018/09/17/efb-how-to-send-and-receive-messages-from-qq-on-telegram/

@dispensable
Copy link

@FishMagic docker ps -a 找到容器的id, docker exec -it <id> /bin/bash;

cd /home/user/coolq/app/io.github.richardchien.coolqhttpapi/log;
tail <qq>.log;

看下具体报错是什么,如果是无法上报那个地址

apt-get update
apt-get install inetutils-ping telnet

看下端口通不?如果不通可能是防火墙的锅
参考: https://forums.docker.com/t/no-route-to-host-network-request-from-container-to-host-ip-port-published-from-other-container/39063/5 添加规则就可以了
我被坑到现在这个点

@milkice233
Copy link
Member

@dispensable 感谢!我这两天也在折腾 docker 内部和宿主机连通不了的问题,看到你这回复我才想起去看防火墙,发现果然被block了😂

@iouAkira
Copy link

@FishMagic docker ps -a 找到容器的id, docker exec -it <id> /bin/bash;

cd /home/user/coolq/app/io.github.richardchien.coolqhttpapi/log;
tail <qq>.log;

看下具体报错是什么,如果是无法上报那个地址

apt-get update
apt-get install inetutils-ping telnet

看下端口通不?如果不通可能是防火墙的锅
参考: https://forums.docker.com/t/no-route-to-host-network-request-from-container-to-host-ip-port-published-from-other-container/39063/5 添加规则就可以了
我被坑到现在这个点

我日志里面确实是无法上报,

用efq 容器 监听的是64440映射到宿主机的64440

但是我coolq容器telnet跟宿主机是通的。
image
还有问题,难道必须要我的coolq容器直接访问efq容器的64440上报的么

@dispensable
Copy link

@FishMagic docker ps -a 找到容器的id, docker exec -it <id> /bin/bash;

cd /home/user/coolq/app/io.github.richardchien.coolqhttpapi/log;
tail <qq>.log;

看下具体报错是什么,如果是无法上报那个地址

apt-get update
apt-get install inetutils-ping telnet

看下端口通不?如果不通可能是防火墙的锅
参考: https://forums.docker.com/t/no-route-to-host-network-request-from-container-to-host-ip-port-published-from-other-container/39063/5 添加规则就可以了
我被坑到现在这个点

我日志里面确实是无法上报,

用efq 容器 监听的是64440映射到宿主机的64440

但是我coolq容器telnet跟宿主机是通的。
image
还有问题,难道必须要我的coolq容器直接访问efq容器的64440上报的么

看起来你还是没通呀,你看telnet和curl最后都是失败了的。
他这个原理就是coolqq把收到消息的事件发一个http post到efb监听的端口,保证通就可以了。如果你监听的口是正常的,不应该301呀。

不过我的ehf是跑在宿主机上的所以加了防火墙规则就OK了。你要调查下为啥是301

@milkice233
Copy link
Member

@FishMagic docker ps -a 找到容器的id, docker exec -it <id> /bin/bash;

cd /home/user/coolq/app/io.github.richardchien.coolqhttpapi/log;
tail <qq>.log;

看下具体报错是什么,如果是无法上报那个地址

apt-get update
apt-get install inetutils-ping telnet

看下端口通不?如果不通可能是防火墙的锅
参考: https://forums.docker.com/t/no-route-to-host-network-request-from-container-to-host-ip-port-published-from-other-container/39063/5 添加规则就可以了
我被坑到现在这个点

我日志里面确实是无法上报,

用efq 容器 监听的是64440映射到宿主机的64440

但是我coolq容器telnet跟宿主机是通的。
image
还有问题,难道必须要我的coolq容器直接访问efq容器的64440上报的么

为什么 HOST 是 mainhost?

@milkice233 milkice233 added the help wanted Extra attention is needed label Nov 11, 2019
@iouAkira
Copy link

@FishMagic docker ps -a 找到容器的id, docker exec -it <id> /bin/bash;

cd /home/user/coolq/app/io.github.richardchien.coolqhttpapi/log;
tail <qq>.log;

看下具体报错是什么,如果是无法上报那个地址

apt-get update
apt-get install inetutils-ping telnet

看下端口通不?如果不通可能是防火墙的锅
参考: https://forums.docker.com/t/no-route-to-host-network-request-from-container-to-host-ip-port-published-from-other-container/39063/5 添加规则就可以了
我被坑到现在这个点

我日志里面确实是无法上报,
用efq 容器 监听的是64440映射到宿主机的64440
但是我coolq容器telnet跟宿主机是通的。
image
还有问题,难道必须要我的coolq容器直接访问efq容器的64440上报的么

为什么 HOST 是 mainhost?

我在docker-compose.yml文件里面加了这个指定绑定主机host

extra_hosts:
    - "mainhost:172.17.0.1"

终于搞定可以接收消息了
image

如果 efb 和 coolq 都是用docker的话,efb监听的地址端口映射到宿主机上,在coolq容器里面没法通过映射到宿主机的端口访问efb的监听地址,所以只能让coolq容器跟efq容器直接通信才行。上报地址直接写efb容器名和端口就行了

感谢🙏上面的各位的提醒,才帮我搞定这个问题

@milkice233
Copy link
Member

@FishMagic docker ps -a 找到容器的id, docker exec -it <id> /bin/bash;

cd /home/user/coolq/app/io.github.richardchien.coolqhttpapi/log;
tail <qq>.log;

看下具体报错是什么,如果是无法上报那个地址

apt-get update
apt-get install inetutils-ping telnet

看下端口通不?如果不通可能是防火墙的锅
参考: https://forums.docker.com/t/no-route-to-host-network-request-from-container-to-host-ip-port-published-from-other-container/39063/5 添加规则就可以了
我被坑到现在这个点

我日志里面确实是无法上报,
用efq 容器 监听的是64440映射到宿主机的64440
但是我coolq容器telnet跟宿主机是通的。
image
还有问题,难道必须要我的coolq容器直接访问efq容器的64440上报的么

为什么 HOST 是 mainhost?

我在docker-compose.yml文件里面加了这个指定绑定主机host

extra_hosts:
    - "mainhost:172.17.0.1"

终于搞定可以接收消息了
image

如果 efb 和 coolq 都是用docker的话,efb监听的地址端口映射到宿主机上,在coolq容器里面没法通过映射到宿主机的端口访问efb的监听地址,所以只能让coolq容器跟efq容器直接通信才行。上报地址直接写efb容器名和端口就行了

感谢🙏上面的各位的提醒,才帮我搞定这个问题

对呀 docker-compose 就是这么用的
问题解决就好了

@junyixu
Copy link

junyixu commented Feb 11, 2020

使用 docker-compose;

依然出现只能收不能发的错误

过程:

  1. 出现
🐧💻 CoolQ Alert, System:
CoolQ is running in abnormal status.
You may need to relogin your account or have a check in CoolQ Client.
  1. 出现
Your status is offline.
You may try login with /0_login

Failed the get group detail
  1. 我尝试 /0_login
    出现
由于服务器网络环境较差,无法处理此消息。
urllib3 HTTPError ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

但是
image
网络状态很好
4. 我试图重发消息
出现

Message is not sent.

TypeError("'NoneType' object is not subscriptable")

测试日志

image
image
coolq info 里面只有 from qq 没有 from tg

再次尝试 /0_login 后正常

之前也是一样,时常提示需要 /0_login

@junyixu
Copy link

junyixu commented Feb 11, 2020

猜想是不是由于 频繁 docker restart 导致的 coolq 组件损坏, 我又 compose up -d 了一个容器... 过几天再看看效果

@junyixu
Copy link

junyixu commented Feb 11, 2020

猜想是不是由于 频繁 docker restart 导致的 coolq 组件损坏, 我又 compose up -d 了一个容器... 过几天再看看效果

不是的 coolq 部件损坏的问题,晚上又出现
image
image
image

@junyixu
Copy link

junyixu commented Feb 13, 2020

image
我的问题,这晚上的丢包太可怕了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

5 participants