基于微信的辅助教学系统的设计与实现 - 图文(6)

2019-05-18 23:34

//$result = https_request($url); $result = httpRequest($url);

$user = json_decode($result, true);

return $user; }

echo $result;

基于微信的辅助教学系统的设计与实现

\

函数首先获取用户的access_token ,,然后根据access_token及appid请求接口,获得 json数据后进行解析。

4.3.3 客服发送

基于关键词的回复往往是一种被动的和按照规则设定的,当我们需要对最近与公众号进行过交互的用户主动发送消息时,需要调用客服接口。用户向服务起发送信息,并不是另一个客户直接收到,而是转发给客服接口,由客服接口转发给相应的用户。客服接口为:https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token={$access_token}。客服接口需要用https协议的post方法进行请求。具体实现如下:

function sendtext($openid,$text){

$access_token =get_token();

$url=\$textarr = array('touser'=>$openid,\$jsontext = my_json_encode($textarr,\$result =https_request($url, $jsontext); return $result; }

4.3.4 自定义菜单

自定义菜单是微信公众号为用户提供的一个功能,用户可以定义最多不超过3个一级菜单,一级菜单下可以含有不超过5个二级菜单。建立自定义菜单的接口为https://api.weixin.qq.com/cgi-bin/menu/create?access_token=\;需要用https的post方法请求。在定义二级菜单时,传输的数据必须为接送格式。具体实现如下:

include 'func.inc.php'; $arr = array(

'button' =>array( array(

'name'=>urlencode(\教师\

17

'sub_button'=>array( array(

'name'=>urlencode(\开始签到\ 'type'=>'click', 'key'=>'startqiandao' ), array(

'name'=>urlencode(\结束签到\ 'type'=>'click', 'key'=>'stopqiandao' ) ,

array(

'name'=>urlencode(\教师绑定\ 'type'=>'click',

'key'=>'teacherbangding' ) ,

array(

'name'=>urlencode(\作业与出题\ 'type'=>'click', 'key'=>'work' ) ,

array(

'name'=>urlencode(\在线答疑\ 'type'=>'click', 'key'=>'jieda' ) ,

基于微信的辅助教学系统的设计与实现

) ), array(

'name'=>urlencode(\学生\ 'sub_button'=>array( array(

'name'=>urlencode(\签到\ 'type'=>'click', 'key'=>'qiandao' ), array(

'name'=>urlencode(\在线答题\ 'type'=>'click', 'key'=>'dati' ) ,

18

array(

基于微信的辅助教学系统的设计与实现

'name'=>urlencode(\在线提问\ 'type'=>'click', 'key'=>'tiwen' ) ,

array(

'name'=>urlencode(\学生绑定\ 'type'=>'click',

'key'=>'studentbangding' ) ,

array(

'name'=>urlencode(\查看作业\ 'type'=>'click', 'key'=>'viewwork' ) ,

) ), array(

'name'=>urlencode(\我的\ 'sub_button'=>array( array(

'name'=>urlencode(\关键词帮助\ 'type'=>'view',

'url'=>'http://1.mywxfzjxxt.applinzi.com/html/keywordhelp.html' ), array(

'name'=>urlencode(\校历\ 'type'=>'view',

'url'=>'http://202.195.67.106/AppCalendar/Home/?nsukey=c1QQ9RxX0eDQY1QW+eCg2Umk7PPrLvC9MxEaCANTyqI2tvv/c/xa3MLhyKJJOHmO9QHJHmD8C+HSg+01P1ujSg==' ) ) ) ) );

$jsonmenu = my_json_encode($arr,'text');

//转换为json数据 echo $jsonmenu; // echo $jsonmenu;

19

// $jsonmenu = urldecode($jsonmenu);

$access_token = get_token();

$url = \//调用创建自定义菜单的接口 $result = https_request($url, $jsonmenu); echo $result;

基于微信的辅助教学系统的设计与实现

我在定义自定义菜单时,为了方便书写,首先将菜单写为了层次的数组格式,然后调用my_json_encode函数将数组转化为json格式,传送那个给服务器接口,完成自定义菜单创建。外层的数组定义了一级菜单,内层数组定义了二级菜单。菜单的种类包括链接及模拟关键词。定义type为view时菜单为链接,当定义菜单属性为click时,代表了菜单为模拟关键词,key定义了关键词的值。如:

array(

'name'=>urlencode(\查看作业\ 'type'=>'click', 'key'=>'viewwork' ) ,

定义了一个类型为模拟关键词,关键词为viewwork,显示的名称为查看作业的二级菜单。定义了教师、学生、我的,三个一级菜单,定义了其中的二级2菜单。如图4-4所示。

图 4-4自定义菜单

4.3.5 基本的框架和消息处理接口

微信公众账号的直接交互是通过消息的相应和处理来完成的。主要通过responseMsg(),receviveText(),receiveEvent(),等函数来实现对信息或事件的处理相应以及对点击菜单的相应。主要的实现如下:

public function responseMsg() {//echo \

//接收微新传过来的xml消息数据

$postStr = $GLOBALS[\TA\

//如果接收到了就处理并回复

20

if (!empty($postStr)){

//将接收到的XML字符串写入日志, 用R标记表示接收消息 $this->logger(\ //将接收的消息处理返回?

$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);

//从消息对象中获取消息的类text image location voice vodeo link $RX_TYPE = trim($postObj->MsgType);

//消息类型分离, 通过RX_TYPE类型作为判断每个方法都需要将对象$postObj传入 switch ($RX_TYPE) {

case \消息为事件类型

$result = $this->receiveEvent($postObj); break;

基于微信的辅助教学系统的设计与实现

case \消息为文本类型

$result = $this->receiveText($postObj); //接收文本消息 break;

case \消息为链接类型

$result = $this->receiveLink($postObj); //接收链接消息 break; default:

$result = \ //未知的消息类型 break; }

//输出消息给微信 echo $result; }else {

//如果没有消息则输出空,并推出 echo \ exit; } }

//接收事件消息

private function receiveEvent($object) { //包含函数

//include \

//临时定义1个变量, 不同的事件发生给用户反馈不同的内容

21


基于微信的辅助教学系统的设计与实现 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:高一下英语期末复习题10

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: