博客和更新地址:QQ聊天机器人实例
前言
此文章为PHP实现基于Mirai的QQ机器人的一部分。
申请API
该聊天机器人需要使用聊天API,通过将机器人接收到的消息转发给该接口,接口响应消息,来实现聊天机器人的效果。
免费的聊天API有:
其中图灵机器人需要实名认证,并且免费额度100/天,听说会更加智能~~(没感觉)~~。
腾讯AI开放平台的智能闲聊API接口调用额度无限制,响应速度快。
青云客似乎也是无限制。但是感觉大厂会稳点,所以选用的腾讯AI开放平台的智能闲聊API接口服务。
QQ登录腾讯智能闲聊,点击应用管理->创建应用,应用类型选机器人,其他的随意,创建完成后保存得到的APPID和APPKEY,在后面会使用。
实例
在Web服务器监听目录下新建文件Bot.class.php(以下代码需要PHP7以上),内容为
<?php
namespace Mirai;
use Exception;
/**
* Mirai QQ机器人
* @param string $_url MiraiHTTP接口地址
* @param string $_authKey Mirai认证Key
* @param string $_sessionKey Mirai会话Key
*/
class Bot
{
private $_url;
private $_authKey;
private $_sessionKey;
/**
* 构造函数
* @param string $url MiraiHTTP接口地址
* @param string $authKey Mirai认证Key
*/
function __construct(string $url, string $authKey)
{
$this->_url = $url;
$this->_authKey = array('authKey' => $authKey);
}
/**
* cURL获取数据
* @param string $url 发送请求的链接
* @param int $ifPost 是否为post请求(1||0)
* @param mixed $postFields post的数据
* @param string $cookie 发送请求携带的cookie
* @param mixed $cookieFile cookie文件
* @param int $ifHeader 是否获取响应头信息(1||0)
* @throws Exception 请求失败
* @return mixed 响应结果
*/
public function httpRequest(string $url, int $ifPost = 0, $postFields = '', string $cookie = '', $cookieFile = '', int $ifHeader = 0)
{
// 模拟http请求header头
$header = array(
"Connection: Keep-Alive",
"Accept: text/html, application/xhtml+xml, */*",
"Pragma: no-cache",
"Accept-Language: zh-Hans-CN,zh-Hans;q=0.8,en-US;q=0.5,en;q=0.3",
"User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)"
);
// 初始化一个cURL会话
$ch = curl_init();
// 设置cURL传输选项
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, $ifH