代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
PHP
】
基于图灵机器人的新浪微博私信自动回复
作者:
符策良
/ 发布于
2015/8/19
/
653
移植微信公众平台DEMO 修改,挂在新浪微博的私信聊天机器人。测试微博@海经院论坛
<?php //接口要求返回的字符串需要是utf8编码。 header( 'Content-type: text/html; charset=utf-8' ); //加载SDK require_once 'CallbackSDK.php'; //设置app_key对应的app_secret define("APP_SECRET", "*************"); //初始化SDK $call_back_SDK = new CallbackSDK(); $call_back_SDK->setAppSecret(APP_SECRET); //签名验证 $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; if (!$call_back_SDK->checkSignature($signature, $timestamp, $nonce)) { die("check signature error"); } //首次验证url时会有'echostr'参数,后续推送消息时不再有'echostr'字段 //若存在'echostr'说明是首次验证,则返回'echostr'的内容。 if (isset($_GET["echostr"])) { die($_GET["echostr"]); } //处理开放平台推送来的消息,首先获取推送来的数据. $post_msg_str = $call_back_SDK->getPostMsgStr(); /** * 设置接口默认返回值为空字符串。 * 请注意数据编码类型。接口要求返回的字符串需要是utf8编码 * 需要说明的是开放平台判断推送成功的标志是接口返回的http状态码, * 只要应用的接口返回的状态为200就会认为消息推送成功,如果http状态码不为200则会重试,共重试3次。 */ $str_return = ''; if (!empty($post_msg_str)) { //sender_id为发送回复消息的uid,即蓝v自己 $sender_id = $post_msg_str['receiver_id']; //receiver_id为接收回复消息的uid,即蓝v的粉丝 $receiver_id = $post_msg_str['sender_id']; //回复text类型的消息示例。 $keyword= $post_msg_str['text']; //图灵API $apiKey = "*****************"; $apiURL = "http://www.tuling123.com/openapi/api?key=KEY&info=INFO"; // 设置报文头, 构建请求报文 $reqInfo = $keyword; $url = str_replace("INFO", $reqInfo, str_replace("KEY", $apiKey, $apiURL)); $res =file_get_contents($url); $result = json_decode($res); $jiaoyan=$result->{'code'}; switch($jiaoyan){ case "200000": $data_type = "text"; $wz=$result->{'text'}; $lj=$result->{'url'}; $xx=$wz.$lj; $data = $call_back_SDK->textData("$xx"); break; case "302000": //$data_type = "text"; //$lb=$result->{'list'}; //$xx=var_export ($lb, TRUE); //$data = $call_back_SDK->textData("$xx"); $data_type = "articles"; $length = count($result['list']) > 9 ? 9 :count($result['list']); for($i= 0;$i< $length;$i++){ $articles [$i] = array ( 'display_name' => $result['list'][$i]['article'], 'summary' => $result['list'][$i]['article'], 'image' => $result['list'][$i]['icon'], 'url' => $result['list'][$i]['detailurl'] ); } $data = $call_back_SDK->articleData($articles); break; case "40001": $data_type = "text"; $xx="(>﹏<)我累了,需要休息一下。"; $data = $call_back_SDK->textData("$xx"); break; case "40002": $data_type = "text"; $xx="(>﹏<)我累了,需要休息一下。"; $data = $call_back_SDK->textData("$xx"); break; case "40003": $data_type = "text"; $xx="(>﹏<)我累了,需要休息一下。"; $data = $call_back_SDK->textData("$xx"); break; case "40004": $data_type = "text"; $xx="(>﹏<)我累了,需要休息一下。"; $data = $call_back_SDK->textData("$xx"); break; case "40005": $data_type = "text"; $xx="(>﹏<)我累了,需要休息一下。"; $data = $call_back_SDK->textData("$xx"); break; case "40006": $data_type = "text"; $xx="(>﹏<)我累了,需要休息一下。"; $data = $call_back_SDK->textData("$xx"); break; case "40007": $data_type = "text"; $xx="(>﹏<)我累了,需要休息一下。"; $data = $call_back_SDK->textData("$xx"); break; default: $data_type = "text"; $xx=$result->{'text'}; $data = $call_back_SDK->textData("$xx"); } $str_return = $call_back_SDK->buildReplyMsg($receiver_id, $sender_id, $data, $data_type); } echo json_encode($str_return); CallbackSDK.php <?php class CallbackSDK { private $app_secret = ""; /** * 设置app_key对应的app_secret。 * @param $app_secret */ public function setAppSecret($app_secret) { $this->app_secret = $app_secret; } /** * 获取推送来的的数据 * 必须使用 $GLOBALS['HTTP_RAW_POST_DATA']方法获取post过来的原始数据来解析. * @return mixed */ public function getPostMsgStr() { return json_decode($GLOBALS['HTTP_RAW_POST_DATA'], true); } /** * 验证签名 * @param $signature * @param $timestamp * @param $nonce * @return bool */ function checkSignature($signature, $timestamp, $nonce) { $tmpArr = array($this->app_secret, $timestamp, $nonce); sort($tmpArr, SORT_STRING); $tmpStr = sha1(implode($tmpArr)); if ($tmpStr == $signature) { return true; } else { return false; } } /** * 组装返回数据 * @param $receiver_id * @param $sender_id * @param $data * @param $type * @return array */ function buildReplyMsg($receiver_id, $sender_id, $data, $type) { return $msg = array( "sender_id" => $sender_id, "receiver_id" => $receiver_id, "type" => $type, //data字段需要进行urlencode编码 "data" => urlencode(json_encode($data)) ); } /** * 生成text类型的回复消息内容 * @param $text * @return array */ function textData($text) { return $data = array("text" => $text); } /** * 生成article类型的回复消息内容 * @param $article * @return array */ function articleData($articles) { return $data = array( 'articles' => $articles ); } /** * 生成position类型的回复消息内容 * @param $longitude * @param $latitude * @return array */ function positionData($longitude, $latitude) { return $data = array( "longitude" => $longitude, "latitude" => $latitude ); } }
试试其它关键字
自动回复
图灵机器人
同语言下
.
用net匹配并替换iOS标准的emoji表情符号
.
处理带Emoji表情的的字符串
.
获取微信昵称时 过滤特殊字符
.
通过判断上传文件的头字符来判断文件的类型
.
模拟百度URL加密解密算法
.
以太坊检查地址是否合法
.
实现crontab解析类
.
获取每个月的开始和结束时间
.
图片上传工具类
.
APP手机应用信息采集
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
符策良
贡献的其它代码
(
1
)
.
基于图灵机器人的新浪微博私信自动回复
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3