请选择 进入手机版 | 继续访问电脑版
 找回密码
搜索
查看: 2157|回复: 1

微笑微信扩展功能示例

[复制链接]

该用户从未签到

110

主题

111

帖子

385

积分

中级会员

Rank: 3Rank: 3

积分
385
发表于 2014-2-11 17:44:49 | 显示全部楼层 |阅读模式
请首先将微笑微信升级到最新版本V0.1.2.6

微笑微信的扩展功能主要通过 source文件夹中的class_weixin_ext.php 文件实现。

核心的扩展方法是:
protected function get_subscribe(){
        return $this->focus_autoback();   
}
这个方法定义了微信用户关注公众号时,所返回的信息(文字,图文,语音,图片)
默认采用了微笑微信的内置方法 focus_autoback()

protected function get_eventkey($eventkey){
        return $this->click_autoback($eventkey);
}
这个方法定义了微信用户点击了自定义菜单上的key属性是:$eventkey的按钮后,所返回的信息(文字,图文,语音,图片)
默认采用了微笑微信的内置方法 click_autoback($eventkey)  

protected function get_keyword($keyword){
      return $this->get_keyword_default($keyword);
}
这个方法定义了微信用户发送了文字消息$keyword后,所返回的信息(文字,图文,语音,图片)
默认采用了微笑微信的内置方法get_keyword_default($keyword)

通过重写以上方法即可基本实现各类自动回复模块的功能。   
下面是微笑微信自有的,在开发扩展中会用到的一些常用方法函数:

protected function save_weixin_member()
用来匹配新用户的fakeid,并记录下微信用户的信息,保存在数据库中,返回数组[uid,province,nickname]
这个方法就是用来将微信的关注用户,变成你数据库里的唯一用户的方法,直接匹配的用户的fakeid和微信open_id,并直接保存了微信上的用户资料和头像。

function tpl($fu,$tu,$data,$type = 'news',$flg = 0,$time,$tp=1)
function news_add($data,$tp)

这两个函数用于将$data数组转换成微信公众号接口可以接收的XML格式
$fu=$fromUsername
$tu=$toUsername
这两样是官方接口的两个信息参数,不懂的请查阅微信公众号官方接口说明
$data 要转换的数组
$type   news/text   图文或文本
-------------------------------------------------------------------------------------------示例扩展:会员绑定功能-------------------------------------------------------------------
本功能已经放在了V0.1.2.6的class_weixin_ext.php文件的注释里
本示例的功能是当关注的微信用户回复"服务",返回让微信用户进行会员注册的功能,而已已注册会员则返回会员菜单
  1.     class wechat_main_class extends wechatCallbackapiTest{

  2.           //扩展重写关键词方法
  3.            protected function get_keyword($keyword){
  4.            global $_SGLOBAL,$_SC;
  5.          
  6.             if($keyword=='服务'){
  7.                      $uid=$_SGLOBAL['db']->getone('select uid from '.tname('weixin_member').' where wxid="'.$this->fromUsername.'"');
  8.                      $get_name=getcount(tname('weixin_member_profile'),array('uid'=>$uid,'name'=>'姓名'));

  9.                      
  10.                     if(!$get_name){
  11.                        $contentStr = '请先输入:'.chr(10).'您的姓名@您所在的公司'.chr(10).chr(10).'即可注册并使用微笑微信高级服务。';
  12.                         $resultStr = $this->txt_back($contentStr);
  13.                        return $resultStr;   
  14.                     }else{               
  15.                        $resultStr =  $this->custom_autoback();
  16.                        return $resultStr;
  17.                     }
  18.                   
  19.          
  20.            }
  21.            $uid=$_SGLOBAL['db']->getone('select uid from '.tname('weixin_member').' where wxid="'.$this->fromUsername.'"');
  22.            $get_name=getcount(tname('weixin_member_profile'),array('uid'=>$uid,'name'=>'姓名'));
  23.            if(!$get_name ){
  24.            $msg=getstr($keyword);      
  25.              if(strpos($msg,'@')){
  26.                list($fullname,$corp)=explode('@',$msg,2);
  27.                $return=0;
  28.                if(!$fullname || !$corp){
  29.                 return $this->txt_back('请输入:' .chr(10). '您的姓名@所在公司');   
  30.                }
  31.                $return=$this->save_profile($fullname,$corp);  //记录用户资料
  32.                if($return){
  33.                   $resultStr =  $this->custom_autoback();
  34.                   return $resultStr;
  35.                }
  36.             }else{
  37.               return $this->get_keyword_default($keyword);
  38.             }
  39.            }else{
  40.               return $this->get_keyword_default($keyword);
  41.            }
  42.          
  43.         }

  44.         protected function save_profile($fullname,$corp){
  45.           global $_SGLOBAL;
  46.           $member=$this->save_weixin_member();  //匹配消息,获取微笑微信内的用户信息
  47.           if($member){
  48.              //保存姓名
  49.              if(getcount(tname('weixin_member_profile'),array('uid'=>$member['uid'],'name'=>'姓名'))){
  50.               updatetable(tname('weixin_member_profile'),array('value'=>$fullname),array('uid'=>$member['uid'],'name'=>'姓名'));
  51.              }else{
  52.               inserttable(tname('weixin_member_profile'),array('uid'=>$member['uid'],'name'=>'姓名','value'=>$fullname,'addtime'=>$_SGLOBAL['timestamp']));
  53.              }
  54.              //保存公司
  55.              if(getcount(tname('weixin_member_profile'),array('uid'=>$member['uid'],'name'=>'公司'))){
  56.               updatetable(tname('weixin_member_profile'),array('value'=>$corp),array('uid'=>$member['uid'],'name'=>'公司'));
  57.              }else{
  58.               inserttable(tname('weixin_member_profile'),array('uid'=>$member['uid'],'name'=>'公司','value'=>$corp,'addtime'=>$_SGLOBAL['timestamp']));
  59.              }
  60.               return true;         
  61.           }else{
  62.               return false;
  63.           }
  64.         }


  65.       
  66.        //已注册的会员返回结果图文
  67.        protected function custom_autoback(){
  68.            global $_SGLOBAL,$_SC;
  69.                        $query=$_SGLOBAL['db']->query("select * from ".tname('weixin_member')." where wxid='".$this->fromUsername."'");
  70.                        $member=$_SGLOBAL['db']->fetch_array($query);
  71.                        $member['profile']=$_SGLOBAL['db']->getall('select * from '.tname('weixin_member_profile').' where uid='.$member['uid']);
  72.                        foreach($member['profile'] as $k=>$v){
  73.                         if($v['name']=='姓名') $member['fullname']=$v['value'];
  74.                         if($v['name']=='公司') $member['corp']=$v['value'];   
  75.                        }
  76.                        if(!$member['fullname']) $member['fullname']=$member['nickname'];
  77.                        $data[0]['pic']=$_SC['site_host'].'/mpres/wallpaper/1.jpg';
  78.                        $data[0]['title']='您好,'.$member['fullname'].'('.$member['corp'].')'.chr(10).'以下是您能获得的服务:';
  79.                        $data[0]['url']='http://www.sylai.com';

  80.                        $data[1]['title']='订单管理';
  81.                        $data[1]['url']='http://www.sylai.com';


  82.                        $data[2]['title']='物流跟踪';
  83.                        $data[2]['url']='http://www.sylai.com';
  84.                      
  85.                        $data[3]['title']='产品服务支持';
  86.                        $data[3]['url']='http://www.sylai.com';

  87.                        $data[4]['title']='产品培训';
  88.                        $data[4]['url']='http://www.sylai.com';

  89.                        $data[5]['title']='活动促销';
  90.                        $data[5]['url']='http://www.sylai.com';

  91.                        $data[6]['title']='更新我的资料';
  92.                        $data[6]['url']='http://www.sylai.com';
  93.                      
  94.                        $resultStr =  tpl($this->fromUsername,$this->toUsername,$data,'news',0,time());
  95.                        return $resultStr;
  96.          
  97.        }   
  98.     }
复制代码




上一篇:微笑微信V0.1.3更新预览
下一篇:腾讯联手王府井 情人节当天开始试运行微信购物
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

微信新闻|微信推广|微信代理|微信SEO| 微信论坛  

Copyright © 2001-2013 Comsenz Inc.   All Rights Reserved.

Powered by Discuz! X3.2( 蜀ICP备12031029号-2 )

渝公网安备 50010302000801号

快速回复 返回顶部 返回列表