微信公众号天气与聊天机器人小功能

微信公众号小功能

以下都是借鉴的微信公众平台的文档加老师指点和自行的理解。

(1)微信公众号发送地区回复现在和未来五天天气情况
(2)发送语音和智能机器人聊天

一、调用天气预报接口

实现微信公众号发送地区回复现在和未来五天天气情况要去调用天气接口。
我使用的是聚合网的天气接口。
在这里插入图片描述
知道了接口的地址、返回格式、请求的方式那么接下来就好做了。
这里还要说一下向http发送请求的几种方式:
1.file_get_contents()
2.curl
3.fopen()
4.fsocket();
知道了发送请求的方式那么就可以写我们的代码了。

下面的是接收微信端消息的代码

 private function receiveMsg(){$xml = file_get_contents("php://input");//获取微信平台发来的消息//file_put_contents("data.txt",$xml);//讲发来的消息写入文件$obj = simplexml_load_string($xml,"SimpleXMLElement",LIBXML_NOCDATA);//将xml转为对象类型return $obj;}

这里是接收消息代码

            //这里证明不是第一次接入了。  处理业务逻辑  接收消息$obj = $this->receiveMsg();//判断接收到的类型switch($obj->MsgType){case "text"://城市$city = str_replace('天气:',"",$obj->Content);//key$key = "ee9206e9a2c81fd162750d3321e072ea";//接口地址  拼接接口地址$url = "http://apis.juhe.cn/simpleWeather/query?city=".$city."&key=".$key;//发送请求 默认为json格式将其转为数组类型$data = json_decode(file_get_contents($url),true);//file_put_contents('data.txt',$data);//判断是否请求成功if($data["error_code"]==0){//当前的数据$today = $data["result"]["realtime"];//未来五天的空气状况$future = $data["result"]["future"];//返回的信息$content = "您所查询的城市为:".$data["result"]["city"]."\n";$content.= "当前温度为:".$today["temperature"]."℃"."\n当前湿度为:".$today["humidity"]."%\n";$content.= "天气状况:".$today["info"]."\n"."风向:".$today["direct"]."\n"."风力:".$today["power"]."\n空气质量:".$today["aqi"]."\n";$content.= "以下是未来五天的天气情况\n";//返回未来五天的空气情况foreach($future as $k=>$v){$content.="--------------------------\n";$content.= "日期:".$v["date"]."\n";$content.="气温:".$v["temperature"]."\n";$content.="天气情况:".$v["weather"]."\n";$content.="风向:".$v["direct"]."\n";}}else{$content="您所输入的城市有误,请正确填写。格式为'天气:地区名'";}break;}//回复消息$this->responseText($obj,$content);}

这里是回复消息代码

 //自动回复消息private function responseText($obj,$content){//占位符的内容$ToUserName = $obj->FromUserName;$FromUserName = $obj->ToUserName;$time = time();$msgType = "text";$contents = $content;//自动回复$xml = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content></xml>";//把占位符改为消息echo sprintf($xml,$ToUserName,$FromUserName,$time,$msgType,$contents);}

二、调用图灵机器人接口

首先我们是要语音和机器人交流需要去微信公众平台在这里插入图片描述

找到接受语音识别结果选择开启(开启后需要取消关注重新关注一下,否则要等24h)
然后去百度图灵机器人注册个账号获取到图灵机器人的接口和key

在这里插入图片描述

然后直接写我们的代码,因为图灵机器人用的是post请求所以要用curl,我们最好封装一个,如下

  public function http_get($url){$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);//向那个url地址上面发送curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);//设置发送http请求时需不需要证书curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//设置发送成功后要不要输出1 不输出,0输出$output = curl_exec($ch);//执行curl_close($ch);    //关闭return $output;}public function http_post($url,$data){$curl = curl_init(); //初始化curl_setopt($curl, CURLOPT_URL, $url);//向那个url地址上面发送curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);//需不需要带证书curl_setopt($curl, CURLOPT_POST, 1); //是否是post方式 1是,0不是curl_setopt($curl, CURLOPT_POSTFIELDS, $data);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//需不需要输出$output = curl_exec($curl);//执行curl_close($curl); //关闭return $output;}

以下是图灵机器人的用法

   case "voice"://获取用户的消息转为文本$text = urlencode($obj->Recognition);//转码//调用机器人的接口$url = "http://openapi.tuling123.com/openapi/api/v2";//请求的消息$msg = ["reqType"=>0,"perception"=>["inputText"=> ["text"=>$text,]],"userInfo"=>["apiKey"=>"b7da94fa32c8487a846e981f8761370c","userId"=>"1",]];$msg = urldecode(json_encode($msg));//转为json格式,并且解码//向接口发送请求$result = $this->http_post($url,$msg);//将得到的请求转为数组$result = json_decode($result,true);//得到机器人的回复消息$content = $result["results"][0]["values"]["text"];$this->check($content);break;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547300.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何实现:判断数据库中某表是否有记录,若为空,则插入一条记录。若不为空则查询某记录...

select count(*) as num1 from tableif num1 0insert into ...elseselect * from table.... SQL的过程如下&#xff1a;Select top 1 * from tableif rowcount>0 --上一次影响条数 insert into Table --插入语句else Select * from Table --查询转载于:https:/…

安卓app逆向破解脱壳教程

From&#xff1a;Hook 神器家族的 Frida 工具使用详解&#xff1a;https://blog.csdn.net/FlyPigYe/article/details/90258758 详解 Hook 框架 frida ( 信抢红包 )&#xff1a;https://www.freebuf.com/company-information/180480.html APP逆向神器之Frida【Android初级篇】…

nodejs生成多层目录和生成文件的通用方法

/***生成多层目录* param dir 多层目录* param split 分隔符&#xff0c;ex:/ 对应的目录地址:2015/10/10* param mode 目录权限&#xff08;读写权限&#xff09;&#xff0c;默认0777* param callback*/var createDirsSync function (dir, split, mode, callback) {console.…

关注微信公众号使其自动发送欢迎你关注消息

关注微信公众号使其自动发送欢迎你关注消息 一般我们关注微信公众号时。他都会自动推送一条消息。欢迎您关注了某公众号。而今天我们所做的就是这个功能。 关注公众号时我们需要获取到用户的一些个人基本信息。 而获取基本信息就要看他的运行原理。到底是怎么运行。 当我们申请…

微信公众号——永久素材的上传

微信公众号永久素材的上传 思路&#xff1a;1.需要上传到本地&#xff08;因为后面需要用的本地的绝对路径 2.上传到微信服务器 3.添加信息到本地数据库 一、上传图片到本地 文件上传的方法 以下是我的代码 首先更改文件上传的配置 而后写我们的文件上传方法 if (request…

nodejs在Liunx上的部署生产方式-PM2

先安装&#xff1a;npm install -g pm2 &#xff08;注意&#xff1a;使用它要先安装它&#xff0c;用root账号和全局模式安装一下&#xff09; 安装完成使用&#xff1a;pm2 -v 查看版本信息 安装成功之后&#xff0c;启动nodejs项目&#xff1a;pm2 start app.js --项目名…

安卓逆向之基于Xposed-ZjDroid脱壳 逆向分析(脱壳)

安卓逆向——某力播逆向分析(脱壳) 一、环境 这一步真的头疼&#xff0c;环境很重要&#xff0c;各种测试&#xff0c;一下是我测试的环境&#xff0c;由于没有真机&#xff0c;就拿虚拟机做测试 1. Xposed 2. FDex2 3. fiddler 4. 软件 二、抓包 通过 …

nginx php mysql一些常用命令(windows linux)

Nginx(nginx) 通常安装路径 /usr/local/nginx检查Nginx是否运行 ps aux | grep nginx重启Nginx /usr/local/nginx/sbin/nginx -s reload停止Nginx /usr/local/nginx/sbin/nginx -s stop测试配置 /usr/local/nginx/sbin/nginx -tPHP(php) PHP安装路径 /usr/local/php查看PH…

nodejs图片转换字节保存

fs.readFile(上传图片路径, function(err, data) {if (err) {// 错误处理return;}var base64str new Buffer(data).toString(base64); // 图片转换为字节fs.writeFileSync(copy.jpg, base64str); // 字节流保存为图片});

Apache/Tomcat/JBOSS/Nginx(2)

三.性能测试&#xff1a;将分别测试3种软件在对动态页面和静态页面请求及并发时的响应时间l 静态页面搜狐首页LIGHTTPDn/-c(ab参数)cpu%MemRequestsperSecondTime taken for tests100000/1006460462.7521.6100000/2006760312.0732.4100000/5008360137.2472.8100000/1000出现错误…

安卓逆向代码反混淆 Simplify工具 JEB2反混淆神器

【技术分享】Android程序反混淆利器——Simplify工具 https://www.anquanke.com/post/id/85388 发布时间&#xff1a;2017-01-23 17:21:23 问题背景 Android程序代码混淆是Android开发者经常用来防止app被反编译之后迅速被分析的常见手法。在没有混淆的代码中&#xff0c;被…

nodejs字符与字节之间的转换

new Buffer("Hello World").toString("base64"); /* yields SGVsbG8gV29ybGQNCg */new Buffer("SGVsbG8gV29ybGQNCg").toString("ascii"); /* yields Hello World */

Vmware虚拟机的安装和使用

安装虚拟机 一、安装虚拟机Vmware Workstation 下一步 下一步 如果C盘剩余空间大&#xff08;大于50G&#xff09;&#xff0c;可安装在C盘 二、在虚拟机中安装Linux系统&#xff1a; 准备工作&#xff1a; Linux系统镜像文件&#xff08;ISO文件&#xff09; 1 、新建虚拟机…

XCode快捷键

1. 文件CMD N: 新文件CMD SHIFT N: 新项目CMD O: 打开CMD S: 保存CMD SHIFT S: 另存为CMD W: 关闭窗口CMD SHIFT W: 关闭文件2. 编辑 CMD [: 左缩进CMD ]: 右缩进CMD CTRL LEFT: 折叠CMD CTRL RIGHT: 取消折叠CMD CTRL TOP: 折叠全部函数CMD CTRL BOTTOM:…

pyinstaller 打包python应用为exe后 打包出现failed to execute script

pyinstaller 打包python应用为exe后 打包出现failed to execute script 打包后出现如题问题&#xff0c;只需在打包语句中加入pkg_resources.py2_warn这个包 pyinstaller -F -w xxx.py --hidden-import pkg_resources.py2_warn

【项目经验】如何用TexturePacker Physicseditor开发游戏

首先感谢Andreas的license。先广告一下Andreas。 -----------------------------------------------------------------------------------------http://www.codeandweb.com/texturepacker - The sprite sheet creator turns chaos into orderhttp://www.codeandweb.com/physic…

JSON.stringify转换Date不正确的解決方法

JSON.stringify转换Date不正确的原因&#xff1a;国际时区&#xff08;UTC&#xff09;和中国时区&#xff08;GMT&#xff09;的原因&#xff0c;东八区8等于国际时区。 解决方法&#xff0c;重新Es5的Date.prototype.toJSON方法&#xff0c;代码如下&#xff1a; function d…

smbd的安装与使用

文件共享服务软件 samba 安装与配置 安装了samba服务的主机&#xff0c;可以将文件共享给其它用户&#xff0c;其它用户可以对文件进行读写操作。 安装 以Ubuntu Linux为例 1、 安装 2、 检查是否安装成功 启动 samba服务&#xff1a; 查看samba服务状态&#xff1a; 3、 添…

PyQt5实现点击按钮获取文本框的值

目录 PyQt5笔记&#xff08;01&#xff09; – 创建空白窗体PyQt5笔记&#xff08;02&#xff09; – 按钮点击事件PyQt5笔记&#xff08;03&#xff09; – 消息框PyQt5笔记&#xff08;04&#xff09; – 文本框的使用PyQt5笔记&#xff08;05&#xff09; – 绝对位置 为了…

nodejs MVC

http://www.cnblogs.com/ppoo24/archive/2012/02/08/2343064.html