zoukankan      html  css  js  c++  java
  • 微信公众平台开发(75)自定义菜单

     

    自定义菜单

     自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。

    目前新申请的账号只有服务号才能申请自定义菜单。开启自定义菜单后,公众号界面如图所示:

    目前自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。请注意,创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来。

     

    按钮类型

    目前自定义菜单接口可实现两种类型按钮,如下:

    click

    用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event的结构给开发者(参考消息接口指南),并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值与用户进行交互;

    view

    用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的url (即网页链接),达到打开网页的目的,建议与网页授权获取用户基本信息接口结合,获得用户的登入个人信息。

     

    创建菜单

    请求方式

    POST(请使用https协议)https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

    {
         "button":[
         {    
              "type":"click",
              "name":"今日歌曲",
              "key":"V1001_TODAY_MUSIC"
          },
          {
               "type":"click",
               "name":"歌手简介",
               "key":"V1001_TODAY_SINGER"
          },
          {
               "name":"菜单",
               "sub_button":[
               {    
                   "type":"view",
                   "name":"搜索",
                   "url":"http://www.soso.com/"
                },
                {
                   "type":"view",
                   "name":"视频",
                   "url":"http://v.qq.com/"
                },
                {
                   "type":"click",
                   "name":"赞一下我们",
                   "key":"V1001_GOOD"
                }]
           }]
     }
    

    参数说明

    参数

    是否必须

    说明

    button

    一级菜单数组,个数应为1~3

    sub_button

    二级菜单数组,个数应为1~5

    type

    菜单的响应动作类型,目前有clickview两种类型

    name

    菜单标题,不超过16个字节,子菜单不超过40个字节

    key

    click类型必须

    菜单KEY值,用于消息接口推送,不超过128字节

    url

    view类型必须

    网页链接,用户点击菜单可打开链接,不超过256字节

    返回结果

    正确时的返回JSON数据包如下:

    {"errcode":0,"errmsg":"ok"}

    错误时的返回JSON数据包如下(示例为无效菜单名长度):

    {"errcode":40018,"errmsg":"invalid button name size"}

    代码实现

    $jsonmenu = '
    {
         "button":[
         {    
              "type":"click",
              "name":"今日歌曲",
              "key":"V1001_TODAY_MUSIC"
          },
          {
               "type":"click",
               "name":"歌手简介",
               "key":"V1001_TODAY_SINGER"
          },
          {
               "name":"菜单",
               "sub_button":[
               {    
                   "type":"view",
                   "name":"搜索",
                   "url":"http://www.soso.com/"
                },
                {
                   "type":"view",
                   "name":"视频",
                   "url":"http://v.qq.com/"
                },
                {
                   "type":"click",
                   "name":"赞一下我们",
                   "key":"V1001_GOOD"
                }]
           }]
     }
    ';
     
    $url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$access_token;
    $result = https_post($url, $jsonmenu);
    var_dump($result);
     
    function https_post($url, $data = null){
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        if (!empty($data)){
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($curl);
        curl_close($curl);
        return$output;
    }
     

    查询菜单

    使用接口创建自定义菜单后,开发者还可使用接口查询自定义菜单的结构。

    请求说明

    http请求方式:GET

    https://api.weixin.qq.com/cgi-bin/menu/get?access_token=ACCESS_TOKEN

    删除菜单

    使用接口创建自定义菜单后,开发者还可使用接口删除当前使用的自定义菜单。

    请求说明

    http请求方式:GET

    https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN

     

    菜单事件推送

    用户点击自定义菜单后,如果菜单按钮类型为click,则微信公众平台会把此次点击事件推送给接口程序;按钮类型为view的菜单点击后不会上报,而是直接跳转到对应的URL。

    使用接口创建自定义菜单后,开发者还可使用接口删除当前使用的自定义菜单。

    XML数据包示例:

    <xml>
    <ToUserName><![CDATA[toUser]]></ToUserName>
    <FromUserName><![CDATA[FromUser]]></FromUserName>
    <CreateTime>123456789</CreateTime>
    <MsgType><![CDATA[event]]></MsgType>
    <Event><![CDATA[CLICK]]></Event>
    <EventKey><![CDATA[EVENTKEY]]></EventKey>
    </xml>
    

    参数说明:

    参数

    描述

    ToUserName

    接收方微信号

    FromUserName

    发送方帐号(一个OpenID

    CreateTime

    消息创建时间 (整型)

    MsgType

    消息类型,event

    Event

    事件类型,CLICK

    EventKey

    事件KEY值,与自定义菜单接口中KEY值对应

    代码实现

    privatefunction receiveEvent($object)
    {
        $contentStr = "";
        switch ($object->Event)
        {
            case "subscribe":
                $contentStr[] = array("Title" =>"欢迎关注方倍工作室", 
                "Description" =>"点击图片关注或者微信搜索方倍工作室", 
                "PicUrl" =>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg", 
                "Url" =>"weixin://addfriend/pondbaystudio");
            case "unsubscribe":
                break;
            case "CLICK":
                switch ($object->EventKey)
                {
                    case "company":
                        $contentStr[] = array("Title" =>"公司简介", 
                        "Description" =>"方倍工作室提供移动互联网相关的产品及服务", 
                        "PicUrl" =>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg", 
                        "Url" =>"weixin://addfriend/pondbaystudio");
                        break;
                    default:
                        $contentStr[] = array("Title" =>"默认菜单回复", 
                        "Description" =>"您正在使用的是方倍工作室的自定义菜单测试接口", 
                        "PicUrl" =>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg", 
                        "Url" =>"weixin://addfriend/pondbaystudio");
                        break;
                }
                break;
            default:
                break;      
     
       }
        return$contentStr;
    }
    

     

  • 相关阅读:
    rabbitmq在linux下单节点部署和基本使用
    使用kafka-python客户端进行kafka kerberos认证
    python confluent kafka客户端配置kerberos认证
    linux下rocksdb的编译安装
    linux下gflags的安装
    ASP.NET:/WebResource.axd
    公司-IT-信息安全:江南天安
    信息安全-证书:数字证书
    信息安全-证书-数字证书:SSL证书
    Error-DotNet:无法为目标平台“Microsoft.Data.Tools.Schema.Sql.Sql120DatabaseSechemaProvider”创建扩展管理器
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6467574.html
Copyright © 2011-2022 走看看