热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP微信开发之图灵机器人天气接口调用

微信开发中,图灵机器人回复、天气、翻译、美食、地图、二维码功能,随处可见。大小网站、APP都在运用这项技术在项目中。今天简单介绍一下图灵机器人回复,天气接口调用、翻译接口,希望对朋

微信开发中,图灵机器人回复、天气、翻译、美食、地图、二维码功能,随处可见。大小网站、APP都在运用这项技术在项目中。今天简单介绍一下图灵机器人回复,天气接口调用、翻译接口,希望对朋友们有用。

效果案例:

《PHP-微信开发之图灵机器人--天气接口调用》

思路很简单,首先,token要一致,然后在浏览器上跑起来, 回到微信平台配置后进行提交,显示配置成功,则OK!配置失败,检查token和代码规范,如果还不行,百度上有很多解决办法,不过有的没有用。可以试一试不用框架可不可以执行。

《PHP-微信开发之图灵机器人--天气接口调用》

下面不多说,上代码:

/**
* wechat php test
*/
//define your token
define("TOKEN","token可以随意些");//定义常量token值,与微信中的值进行对比
$wechatObj = new wechatCallbackapiTest();//实例化下面的类
//判断微信传过来的值是否存在
if(!isset($_GET['echostr'])){
//如果微信传过来的值存在执行下面方法
$wechatObj->responseMsg();
}else{
//不存在执行下面方法
$wechatObj->valid();
}
//$wechatObj->valid();
//封装文件类
class wechatCallbackapiTest
{
//定义微信传值不存在执行的方法,既然不存在值,那当然也就不需要返回什么了
public function valid()
{
$echoStr = $_GET["echostr"];
//valid signature , option
if($this->checkSignature()){
echo $echoStr;
exit;
}
}
//定义微信有值执行的方法
public function responseMsg()
{
//get post data, May be due to the different environments
$postStr = file_get_contents('php://input'); //全局变量的信息 可以接收
//extract post data
if (!empty($postStr)){
//如果$postStr不为空
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$RX_TYPE = trim($postObj->MsgType);
switch($RX_TYPE)
{
case "text":
$resultStr = $this->handleText($postObj);
break;
case "event":
$resultStr = $this->handleEvent($postObj);
break;
default:
$resultStr = "Unknow msg type: ".$RX_TYPE;
break;
}
echo $resultStr;
}else {
echo "";
exit;
}
}
//绑定图灵机器人,返回数据转化为微信使用的格式
public function handleText($postObj)
{
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);
$time = time();
$textTpl = "


%s


0
";
if(!empty($keyword ))
{
//主要内容--机器人---天气接口---
$msgType = "text";
if($keyword=="博客"){
$cOntentStr= "YFeng888的博客地址是:https://blog.csdn.net/weixin_42980713";
}else if($keyword=="天气"){
//创建函数调用图灵机器人接口
$url = "http://apis.haoservice.com/weather?cityname=北京&key=99ae8b89d4a14c0881c2ac64c831cdd6";
$send_info = file_get_contents($url);
$c = json_decode($send_info,true);
$cOntentStr= "【".$c['result']['today']['city']."天气预报】\n"." ".$c['result']['today']['date_y']."时发布"."\n\n实时天气\n".$c['result']['today']['weather'].$c['result']['today']['temperature'].$c['result']['today']['wind']."\n\n温馨提示:".$c['result']['today']['dressing_advice']."\n\n明天\n".$c['result']['future'][1]['temperature']." \n\n后天".$c['result']['future'][2]['temperature']."\n";
}elseif($keyword=="经典语录"){
//创建函数调用图灵机器人接口
$url="http://apis.haoservice.com/lifeservice/JingDianYulu/getTypes?key=你自己的key";
$send_info = file_get_contents($url);
$json = json_decode($send_info,true);
$cOntentStr=$json['result'];
}else{
//翻译接口
$url = "http://apis.haoservice.com/efficient/robot?info=$keyword&address=&key=你自己的key";
$send_info = file_get_contents($url);
$json = json_decode($send_info,true);
$cOntentStr=$json['result']['text'];
file_put_contents("haoyu.txt",$contenStr);//写入日志到haoyu.txt文件内
}

// $cOntentStr= "Welcome to wechat world!";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}else{
echo "Input something...";
}
}
public function handleEvent($object)
{
$cOntentStr= "";
switch ($object->Event)
{
case "subscribe":
$cOntentStr= "感谢您关注【最帅男人帮】"."\n"."微信号:shuaigege"."\n"."卓越锦绣,名城苏州,我们为您提供苏州本地生活指南,苏州相关信息查询,做最好的苏州微信平台。"."\n"."目前平台功能如下:"."\n"."【1】 查天气,如输入:苏州天气"."\n"."【2】 查公交,如输入:苏州公交178"."\n"."【3】 翻译,如输入:翻译I love you"."\n"."【4】 苏州信息查询,如输入:苏州观前街"."\n"."更多内容,敬请期待...";
break;
default :
$cOntentStr= "Unknow Event: ".$object->Event;
break;
}
$resultStr = $this->responseText($object, $contentStr);
return $resultStr;
}

public function responseText($object, $content, $flag=0)
{
$textTpl = "


%s


%d
";
$resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content, $flag);
return $resultStr;
}
private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nOnce= $_GET["nonce"];

$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );

if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
}
?>

ok,亲测可行!


推荐阅读
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • 本文介绍了PHP常量的定义和使用方法,包括常量的命名规则、大小写敏感性、全局范围和标量数据的限制。同时还提到了应尽量避免定义resource常量,并给出了使用define()函数定义常量的示例。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • 使用圣杯布局模式实现网站首页的内容布局
    本文介绍了使用圣杯布局模式实现网站首页的内容布局的方法,包括HTML部分代码和实例。同时还提供了公司新闻、最新产品、关于我们、联系我们等页面的布局示例。商品展示区包括了车里子和农家生态土鸡蛋等产品的价格信息。 ... [详细]
  • 本文介绍了2015年九月八日的js学习总结及相关知识点,包括参考书《javaScript Dom编程的艺术》、js简史、Dom、DHTML、解释型程序设计和编译型程序设计等内容。同时还提到了最佳实践是将标签放到HTML文档的最后,并且对语句和注释的使用进行了说明。 ... [详细]
  • mui框架offcanvas侧滑超出部分隐藏无法滚动如何解决
    web前端|js教程off-canvas,部分,超出web前端-js教程mui框架中off-canvas侧滑的一个缺点就是无法出现滚动条,因为它主要用途是设置类似于qq界面的那种格 ... [详细]
  • 微信商户扫码支付 java开发 [从零开发]
    这个教程可以用作了解扫码支付的整体运行过程,已经实现了前端扫码,记录订单,回调等一套完整的微信扫码支付。相关链接:微信支 ... [详细]
  • 老牌医药收割AI红利:先投个15亿美元抢中国人才
    萧箫发自凹非寺量子位报道|公众号QbitAI没想到,一场大会把我的“刻板印象”攻破了。2021世界人工智能大会现场,能看见不少熟悉的身影, ... [详细]
  • 开发笔记:图像识别基于主成分分析算法实现人脸二维码识别
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了图像识别基于主成分分析算法实现人脸二维码识别相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 校园表白墙微信小程序,校园小情书、告白墙、论坛,大学表白墙搭建教程
    小程序的名字必须和你微信注册的名称一模一样在后台注册好小程序。mp.wx-union.cn后台域名https。mp.wx-union.cn ... [详细]
  • PHP中的单例模式与静态变量的区别及使用方法
    本文介绍了PHP中的单例模式与静态变量的区别及使用方法。在PHP中,静态变量的存活周期仅仅是每次PHP的会话周期,与Java、C++不同。静态变量在PHP中的作用域仅限于当前文件内,在函数或类中可以传递变量。本文还通过示例代码解释了静态变量在函数和类中的使用方法,并说明了静态变量的生命周期与结构体的生命周期相关联。同时,本文还介绍了静态变量在类中的使用方法,并通过示例代码展示了如何在类中使用静态变量。 ... [详细]
author-avatar
拍友2602923913
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有