vbot是一款基于php环境的高度自定义的微信机器人,能够实现自动回复,消息转发,防撤回,留言统计等功能。但是官方的最低限制条件是需要php7,这就有点尴尬了,不过有了docker后,这就不是问题了。
来源
Docker/php 镜像主页:https://hub.docker.com/_/php/
HanSon/vbot 项目主页:https://github.com/HanSon/vbot
需求
docker已安装(如何在Debian8上安装Docker虚拟环境)
准备
新建工作目录
| 
					 1  | 
						mkdir /var/www/vbot  | 
					
进入工作目录
| 
					 1  | 
						cd /var/www/vbot  | 
					
安装composer(如果没有安装)
| 
					 1  | 
						curl -sS https://getcomposer.org/installer | php  | 
					
使用composer下载vbot及依赖组件至本地
| 
					 1  | 
						php composer.phar require hanson/vbot  | 
					
在根目录下新建tmp目录
| 
					 1  | 
						mkdir /var/www/vbot/tmp  | 
					
环境搭建
使用以下命令创建并运行虚拟容器,原始镜像使用PHP官方的7.0-apache分支。
| 
					 1  | 
						docker run -d -t -i -v /var/www/vbot/:/var/www/html -p 8080:80 --name vbot php:7.0-apache /bin/bash  | 
					
其中-v后是网站主目录映射,-p后面是映射端口。这里还可以使用7.0-cli分支,但是为了考虑以后可能会需要网页界面,所以还是使用带apache的分支。
列出所有正在运行的虚拟容器
| 
					 1  | 
						docker ps  | 
					
找到虚拟容器的ID,执行以下命令进入虚拟容器的命令行模式
| 
					 1  | 
						docker attach <your-container-id>  | 
					
进入虚拟机命令行模式后,Shell的命令行标识符会从$变为#
因为官方镜像并没有包括附加组件库,所以还需额外安装GD库,因为vbot的二维码功能需要GD库,如果不安装的话,在运行程序时会导致出错。
在容器的命令行界面分别运行以下命令安装iconv、mcrypt以及GD库
| 
					 1 2 3 4  | 
						apt-get update && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libmcrypt-dev libpng12-dev docker-php-ext-install -j$(nproc) iconv mcrypt docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ docker-php-ext-install -j$(nproc) gd  | 
					
编写程序
在根目录下创建server.php,并修改为以下内容
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36  | 
						<?php // include composer autoload require 'vendor/autoload.php'; use Hanson\Vbot\Foundation\Vbot; use Hanson\Vbot\Message\Entity\Message; use Hanson\Vbot\Message\Entity\Text; $path = __DIR__ . 'tmp/'; $robot = new Vbot([  'tmp' => 'tmp/', # 用于生成登录二维码以及文件保存  'debug' => true # 用于是否输出用户组的json ]); // 图灵自动回复 function reply($str){     return http()->post('http://www.tuling123.com/openapi/api', [         'key' => '1dce02aef026258eff69635a06b0ab7d',         'info' => $str     ], true)['text']; } $robot->server->setMessageHandler(function ($message) use ($path) { 	// 文字信息     if ($message instanceof Text) {         /** @var $message Text */         // 联系人自动回复         if ($message->fromType === 'Self') {             return reply($message->content);         }     }     return false; }); $robot->server->run();  | 
					
以上程序运行后将通过图灵API自动回复自己给自己发送的文字消息
运行
使用以下命令运行该程序
| 
					 1  | 
						php server.php  | 
					
当命令行提示扫描二维码时,去tmp/目录下找到qr.png,下载到本地后,打开手机微信客户端,扫描该二维码,并确认登录。
正确登录后的输出
| 
					 1 2 3 4 5 6 7 8 9 10  | 
						root@8b36adedd106:/var/www/html# php index2.php [INFO] 请扫描二维码登录 [ERROR] 登录超时,请重试 [INFO] 请点击确认登录微信 登录URL:https://wx.qq.com/cgi-bin/mmwebwx-bin/ url is:https://wx.qq.com/cgi-bin/mmwebwx-bin [INFO] 登录成功 [INFO] 初始化成功 [INFO] 开始初始化联系人 [INFO] 初始化联系人成功  | 
					
常见错误
缺少GD库
原因是由于php官方Docker镜像中没有集成GD库,需要自行安装GD库
初始化失败
原因是由于该帐号已在其他地方登录,在开始运行程序前需要先退出所有的网页微信登录,再运行该程序。
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14  | 
						root@8b36adedd106:/var/www/html# php index2.php [INFO] 请扫描二维码登录 [ERROR] 登录超时,请重试 [INFO] 请点击确认登录微信 登录URL:https://wx.qq.com/cgi-bin/mmwebwx-bin url is:https://wx.qq.com/cgi-bin/mmwebwx-bin [INFO] 登录成功 Fatal error: Uncaught Exception: [ERROR] 初始化失败,链接:https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxinit in /var/www/html/vendor/hanson/vbot/src/Core/Server.php:261 Stack trace: #0 /var/www/html/vendor/hanson/vbot/src/Core/Server.php(85): Hanson\Vbot\Core\Server->init() #1 /var/www/html/index2.php(23): Hanson\Vbot\Core\Server->run() #2 {main}   thrown in /var/www/html/vendor/hanson/vbot/src/Core/Server.php on line 261  | 
					
实例
在通讯录中找到自己,每次给自己发送消息,都会收到图灵机器人的回复。

There are no comments yet