基于图灵api实现微信聊天机器人
尝试了一下最近很火的聊天机器人,记录下实现过程。
微信公众平台提供的接口很简单,先看看消息交互流程:
说的通俗一些,用户使用微信发送消息 -> 微信将数据发送给开发者 -> 开发者处理消息并返回数据至微信 -> 微信把返回数据发送给用户,期间数据交互通过XML完成,就这么简单。
下面写个实例,开发微信智能聊天机器人:
1. 注册微信公众平台账号
微信公众平台:
https://mp.weixin.qq.com/
注: 目前一张身份证只能注册两个账号,账号名称关乎加微信认证,请慎重注册。
2. 申请服务器/虚拟主机
没有服务器/虚拟主机的童鞋可以使用BAE和SAE,不多介绍。我自己是在搬瓦工上面购买的一个VPS,之前主要用来翻墙使用。
3. 开启开发者模式
微信公众平台有两个模式,一个是编辑模式(傻瓜模式),简单但功能单一。另一个是开发者模式,可以通过开发实现复杂功能。两个模式互斥,显而易见,登录微信公众平台并通过“开发”菜单开启开发者模式。
4. 填写接口配置信息
同样是在“开发”-“基本配置”- “服务器配置”菜单中配置,需要配置两项参数:
URL: 服务器地址,目前仅支持80端口
TOKEN: 令牌,随意填写,以”hello2017”为例,用于生成签名
填写完把下面代码保存为index.php并上传至http://your.server.ip/chat/目录,最后点击“提交”完成验证。其中your.server.ip是你的服务器IP地址或者域名。
<?php
/**
* wechat php test
*/
//define your token
define("TOKEN", "hello2017");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();
class wechatCallbackapiTest
{
public function valid()
{
$echoStr = $_GET["echostr"];
//valid signature , option
if($this->checkSignature()){
echo $echoStr;
exit;
}
}
private function checkSignature()
{
// you must define TOKEN by yourself
if (!defined("TOKEN")) {
throw new Exception('TOKEN is not defined!');
}