自定义菜单创建接口

跳转到: 导航, 搜索
(以“=自定义菜单创建接口= 自定义菜单创建接口 ==URL== https://api.weibo.com/2/messages/menu/create.json ==HTTP请求方式== POST ==是否需要登...”为内容创建页面)
 
(注意事项)
 
(未显示2个用户的49个中间版本)
第1行: 第1行:
 
=自定义菜单创建接口=
 
=自定义菜单创建接口=
  
自定义菜单创建接口
+
自定义菜单能够丰富界面,让用户更好的体验功能,开启自定义菜单后,手机客户端和PC端界面分别如下图所示:
  
==URL==
 
https://api.weibo.com/2/messages/menu/create.json
 
  
 +
<div style="text-align:left;">
 +
<img src="http://www.sinaimg.cn/blog/developer/wiki/zidingyicaidaichuangjianjiekou_picture.jpg" style="width:225px;height:400px;">
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 +
<img src="http://www.sinaimg.cn/blog/developer/wiki/zidingyicaidanchuangjianjiekou_picture_web.jpg" style="width:360px;height:400px;">
 +
</div>
  
 +
==URL==
 +
https://m.api.weibo.com/2/messages/menu/create.json
  
 
==HTTP请求方式==
 
==HTTP请求方式==
 
POST
 
POST
  
==是否需要登录==
+
<nowiki>curl  "https://m.api.weibo.com/2/messages/menu/create.json?access_token=ACCESS_TOKEN" -d 'menus={  }'</nowiki>
<br/>
+
关于登录授权,参见 [[授权机制说明|如何登录授权]]
+
 
+
  
 
==接口请求参数==
 
==接口请求参数==
第23行: 第25行:
 
!width="10%" style="text-align:center;font-weight:bolder;border:1px solid #cccccc"|类型及范围
 
!width="10%" style="text-align:center;font-weight:bolder;border:1px solid #cccccc"|类型及范围
 
!width="75%" style="text-align:center;font-weight:bolder;border:1px solid #cccccc"|说明
 
!width="75%" style="text-align:center;font-weight:bolder;border:1px solid #cccccc"|说明
{{api_args|source|false|string|采用OAuth授权方式不需要此参数,其他授权方式为必填参数,数值为应用的AppKey。}}
+
{{api_args|access_token|true|string|在账号Profile页--> 管理中心 --> 粉丝服务--> 高级功能--> 开发模式中获取,详细参考 [[Messages_api/access_token|获取粉丝服务平台开发接口的access token]]。}}
{{api_args|access_token|false|string|采用OAuth授权方式为必填参数,其他授权方式不需要此参数,OAuth授权后获得。}}
+
{{api_args|menus|true|string|需要创建的自定义菜单,必须为JSON做URLEncode后的字符串格式,具体内容格式详见注意事项。}}
{{api_args|type|true|string|需要以何种类型的消息进行响应,text:纯文本、articles:图文、position:位置。}}
+
{{api_args|data|true|string|消息数据,具体内容严格遵循type类型对应格式,必须为json做URLEncode后的字符串格式,采用UTF-8编码。}}
+
{{api_args|receiver_id|false|int64|消息接收方的ID。}}
+
{{api_args|id|false|int64|需要响应的消息ID,该字段仅仅针对使用message/receive长连接服务接收到的消息;如果使用消息推送服务,则必须使用receiver_id参数而不是id参数}}
+
 
|}
 
|}
  
 
==注意事项==
 
==注意事项==
*1、接口调用支持两种方式,一是采用OAuth方式调用,二是使用appkey所有者帐号通过Base Auth的方式调用;
+
*关于自定义菜单的更新问题:
*2、如果调用走OAuth方式,则access_token参数必填,id参数和receiver_id参数必填一个;
+
** 1. 自定义菜单调用后即刻生效;
*3、如果调用走Base Auth方式,则调用接口的登录帐号必须为当前应用的所有者,并且source参数必填,id参数必填;
+
** 2. 但是手机端对于自定义菜单的处理有缓存机制,当用户第一次访问账号A后,账号A的自定义菜单就缓存在本地了,24小时才会重新更新一次;
*4、使用message/receive长连接服务接收上行信息的开发者才能获取到消息id参数,使用消息推送服务的开发者无法获取消息id参数,因此需要通过receiver_id来指定消息接收方,而消息发送方的uid微博会从access_token中获取;
+
** 3. 更新自定义菜单后如果想即时看效果,可以去web端的im里面看效果,也可以试着把手机缓存清下;
*5、调用接口时,需要消息发送方有针对于消息接收方的消息配额;一般来说,如果消息接收方给消息发送方主动发送过消息,则在7天内,消息发送方具备针对于消息接收方的主动配额一条;
+
*6、调用时如果指定了id参数,则需要
+
** 指定ID的新消息对应的原接收者已指定当前应用为其开发,且该接收者已开启“开发模式”,详见:[[粉丝服务开发模式指南|粉丝服务开发模式指南]];
+
** 指定ID的新消息对应的原接收者身份发出此消息;
+
** 指定ID的新消息对应的原发送者将收到此消息;
+
** 发送者未被屏蔽或拉黑时消息进私信箱;
+
  
此接口不得用于推广或引导用户使用任何与新浪微博有直接竞争关系的公司的服务,否则将永久关停指定应用或V用户使用资格。
 
  
==PHP示例代码==
+
*参数menus的json示例,实际调用时需将以下json进行URLEncode:
 
+
**1,其中"button"数组中需为1~3个
PHP示例代码下载:[[Messages/dev_demo|下载]]
+
**2,其中"sub_button"数组中需为1~5个
 
+
<pre class="brush:js">
 
+
==蓝V可回复的私信类型==
+
 
+
当前支持蓝V回复的私信类型(type)中,data参数支持的参数:
+
 
+
 
+
<h3>1、纯文本类型私信消息:text</h3>
+
<pre>
+
{
+
    "text": "纯文本回复"
+
}
+
</pre>
+
<div class="wiki_kit">
+
 
+
 
+
{|width="100%" border="0" cellspacing="0" cellpadding="0" class="wiki_table"
+
<html><colgroup><col class="tbF1"/><col class="tbF2" /><col /></colgroup></html>
+
!colspan="4" scope="col" |<span id="data参数支持的参数">data参数支持的参数</span>
+
|-
+
|style="text-align:center; width: 12%"|参数名称
+
|style="text-align:center;width: 12%"|值的类型
+
|style="text-align:center;width: 11%"|是否必填
+
|style="text-align:center;"|说明描述
+
|-
+
|text
+
|string
+
|true
+
|要回复的私信文本内容。文本大小必须小于300个汉字。
+
|}
+
举例:
+
当data对应json为{"text": "纯文本响应"} 时,则进行URLEncode后对应data参数值为:"%7b%0a++++%22text%22%3a+%22%e7%ba%af%e6%96%87%e6%9c%ac%e5%93%8d%e5%ba%94%22%0a%7d"。
+
 
+
则对应的调用为:
+
<pre>
+
curl -u "USERNAME:PASSWORD" -d "source=YOUR_APPKEY&id=1307180000*****&type=text&data=%7b%0a++++%22text%22%3a+%22%e7%ba%af%e6%96%87%e6%9c%ac%e5%93%8d%e5%ba%94%22%0a%7d" "https://m.api.weibo.com/2/messages/reply.json" -k
+
</pre>
+
 
+
 
+
<h3>2、图文类型私信消息:articles</h3>
+
<pre>
+
 
{
 
{
     "articles": [
+
     "button": [
 
         {
 
         {
             "display_name": "两个故事",
+
             "type": "click",
             "summary": "今天讲两个故事,分享给你。谁是公司?谁又是中国人?​",
+
             "name": "获取优惠券",
             "image": "http://storage.mcp.weibo.cn/0JlIv.jpg",
+
             "key": "get_groupon"
            "url": "http://e.weibo.com/mediaprofile/article/detail?uid=1722052204&aid=983319"
+
 
         },
 
         },
         ... //最多支持8个图文,建议为1或3个
+
         {
 +
            "type": "click",
 +
            "name": "查询客服电话",
 +
            "key": "the_big_brother_need_your_phone"
 +
        },
 +
        {
 +
            "name": "菜单",
 +
            "sub_button": [
 +
                {
 +
                    "type": "view",
 +
                    "name": "网上4S店",
 +
                    "url": "http://apps.weibo.com/1838358847/8rYu1uHD"
 +
                },
 +
                {
 +
                    "type": "view",
 +
                    "name": "砍价团",
 +
                    "url": "http://apps.weibo.com/1838358847/8s1i6v74"
 +
                },
 +
                {
 +
                    "type": "click",
 +
                    "name": "么么哒",
 +
                    "key": "memeda"
 +
                }
 +
            ]
 +
        }
 
     ]
 
     ]
 
}
 
}
 +
 +
参数说明:
 +
1,button 必填 一级菜单数组,个数应为1~3个
 +
2,sub_button 选填 二级菜单数组,个数应为1~5个
 +
3,type 选填 (与二级菜单sub_button同级时可不填)菜单的响应动作类型,目前有click、view两种类型
 +
4,name 必填 菜单标题,不超过16个字节,子菜单不超过40个字节
 +
5,key 选填 type为click时必填,菜单KEY值,用于消息接口推送,不超过128字节
 +
6,url 选填 type为view时必填,网页链接,用户点击菜单可打开链接,不超过256字节
 
</pre>
 
</pre>
  
  
<div class="wiki_kit">
 
{|width="100%" border="0" cellspacing="0" cellpadding="0" class="wiki_table"
 
<html><colgroup><col class="tbF1"/><col class="tbF2" /><col /></colgroup></html>
 
!colspan="4" scope="col" |<span id="data参数支持的参数">data参数支持的参数</span>
 
|-
 
|style="text-align:center; width: 12%"|参数名称
 
|style="text-align:center;width: 12%"|值的类型
 
|style="text-align:center;width: 11%"|是否必填
 
|style="text-align:center;"|说明描述
 
|-
 
|articles:display_name
 
|string
 
|true
 
|图文的显示名称标题
 
|-
 
|articles:summary
 
|string
 
|true
 
|图文的文字描述,大于等于2个图文时,仅显示第一个图文的描述
 
|-
 
|articles:image
 
|string
 
|true
 
|图文的缩略显示图片,需为JPG、PNG格式,单图及多图第一张推荐使用280*155,多图非第一张推荐使用64*64
 
|-
 
|articles:url
 
|string
 
|true
 
|图文的URL地址,点击后跳转
 
|}
 
  
 +
menus的urlencode,如下所示:
  
<h3>3、位置类型私信消息:position </h3>
 
 
<pre>
 
<pre>
{
+
curl  "https://m.api.weibo.com/2/messages/menu/create.json?access_token=ACCESS_TOKEN" -d 'menus=%7B%22button%22%3A+%5B%7B%22type%22%3A+%22click%22%2C%22name%22%3A+%22%E8%8E%B7%E5%8F%96%E4%BC%98%E6%83%A0%E5%88%B8%22%2C%22key%22%3A+%22get_groupon%22%7D%2C%7B%22type%22%3A+%22click%22%2C%22name%22%3A+%22%E6%9F%A5%E8%AF%A2%E5%AE%A2%E6%9C%8D%E7%94%B5%E8%AF%9D%22%2C%22key%22%3A+%22the_big_brother_need_your_phone%22%7D%2C%7B%22name%22%3A+%22%E8%8F%9C%E5%8D%95%22%2C%22sub_button%22%3A+%5B%7B%22type%22%3A+%22view%22%2C%22name%22%3A+%22%E7%BD%91%E4%B8%8A4S%E5%BA%97%22%2C%22url%22%3A+%22http%3A%2F%2Fapps.weibo.com%2F1838358847%2F8rYu1uHD%22%7D%2C%7B%22type%22%3A+%22view%22%2C%22name%22%3A+%22%E7%A0%8D%E4%BB%B7%E5%9B%A2%22%2C%22url%22%3A+%22http%3A%2F%2Fapps.weibo.com%2F1838358847%2F8s1i6v74%22%7D%2C%7B%22type%22%3A+%22click%22%2C%22name%22%3A+%22%E4%B9%88%E4%B9%88%E5%93%92%22%2C%22key%22%3A+%22memeda%22%7D%5D%7D%5D%7D'
    "longitude": "116.308586",
+
    "latitude": "39.982525"
+
}
+
 
</pre>
 
</pre>
 
 
<div class="wiki_kit">
 
{|width="100%" border="0" cellspacing="0" cellpadding="0" class="wiki_table"
 
<html><colgroup><col class="tbF1"/><col class="tbF2" /><col /></colgroup></html>
 
!colspan="4" scope="col" |<span id="data参数支持的参数">data参数支持的参数</span>
 
|-
 
|style="text-align:center; width: 12%"|参数名称
 
|style="text-align:center;width: 12%"|值的类型
 
|style="text-align:center;width: 11%"|是否必填
 
|style="text-align:center;"|说明描述
 
|-
 
|longitude
 
|string
 
|true
 
|经度
 
|-
 
|latitude
 
|string
 
|true
 
|纬度
 
|}
 
 
  
 
==返回结果==
 
==返回结果==
第170行: 第96行:
 
// 成功返回
 
// 成功返回
 
{
 
{
     "id": 1211260020031347,
+
     "result": true
    "type": "TYPE",
+
    "receiver_id": 1902538057,
+
    "sender_id": 2489518277,
+
    "created_at": "Mon Jul 16 18:09:20 +0800 2012",
+
    "text": "您的余额还剩2元。",
+
    "data": {}
+
 
}
 
}
  
 
// 失败返回
 
// 失败返回
 
{
 
{
     "request": "/2/messages/reply.json",
+
     "request": "/2/messages/menu/create.json",
 
     "error_code": 264XX,
 
     "error_code": 264XX,
 
     "error": "error message."
 
     "error": "error message."

2014年6月11日 (三) 22:46的最后版本

自定义菜单创建接口

自定义菜单能够丰富界面,让用户更好的体验功能,开启自定义菜单后,手机客户端和PC端界面分别如下图所示:


                   

URL

https://m.api.weibo.com/2/messages/menu/create.json

HTTP请求方式

POST

curl "https://m.api.weibo.com/2/messages/menu/create.json?access_token=ACCESS_TOKEN" -d 'menus={ }'

接口请求参数

  必选 类型及范围 说明
access_token true string 在账号Profile页--> 管理中心 --> 粉丝服务--> 高级功能--> 开发模式中获取,详细参考 获取粉丝服务平台开发接口的access token
menus true string 需要创建的自定义菜单,必须为JSON做URLEncode后的字符串格式,具体内容格式详见注意事项。

注意事项

  • 关于自定义菜单的更新问题:
    • 1. 自定义菜单调用后即刻生效;
    • 2. 但是手机端对于自定义菜单的处理有缓存机制,当用户第一次访问账号A后,账号A的自定义菜单就缓存在本地了,24小时才会重新更新一次;
    • 3. 更新自定义菜单后如果想即时看效果,可以去web端的im里面看效果,也可以试着把手机缓存清下;


  • 参数menus的json示例,实际调用时需将以下json进行URLEncode:
    • 1,其中"button"数组中需为1~3个
    • 2,其中"sub_button"数组中需为1~5个
{
    "button": [
        {
            "type": "click",
            "name": "获取优惠券",
            "key": "get_groupon"
        },
        {
            "type": "click",
            "name": "查询客服电话",
            "key": "the_big_brother_need_your_phone"
        },
        {
            "name": "菜单",
            "sub_button": [
                {
                    "type": "view",
                    "name": "网上4S店",
                    "url": "http://apps.weibo.com/1838358847/8rYu1uHD"
                },
                {
                    "type": "view",
                    "name": "砍价团",
                    "url": "http://apps.weibo.com/1838358847/8s1i6v74"
                },
                {
                    "type": "click",
                    "name": "么么哒",
                    "key": "memeda"
                }
            ]
        }
    ]
}

参数说明:
1,button 必填 一级菜单数组,个数应为1~3个
2,sub_button 选填 二级菜单数组,个数应为1~5个
3,type 选填 (与二级菜单sub_button同级时可不填)菜单的响应动作类型,目前有click、view两种类型
4,name 必填 菜单标题,不超过16个字节,子菜单不超过40个字节
5,key 选填 type为click时必填,菜单KEY值,用于消息接口推送,不超过128字节
6,url 选填 type为view时必填,网页链接,用户点击菜单可打开链接,不超过256字节


menus的urlencode,如下所示:

curl  "https://m.api.weibo.com/2/messages/menu/create.json?access_token=ACCESS_TOKEN" -d 'menus=%7B%22button%22%3A+%5B%7B%22type%22%3A+%22click%22%2C%22name%22%3A+%22%E8%8E%B7%E5%8F%96%E4%BC%98%E6%83%A0%E5%88%B8%22%2C%22key%22%3A+%22get_groupon%22%7D%2C%7B%22type%22%3A+%22click%22%2C%22name%22%3A+%22%E6%9F%A5%E8%AF%A2%E5%AE%A2%E6%9C%8D%E7%94%B5%E8%AF%9D%22%2C%22key%22%3A+%22the_big_brother_need_your_phone%22%7D%2C%7B%22name%22%3A+%22%E8%8F%9C%E5%8D%95%22%2C%22sub_button%22%3A+%5B%7B%22type%22%3A+%22view%22%2C%22name%22%3A+%22%E7%BD%91%E4%B8%8A4S%E5%BA%97%22%2C%22url%22%3A+%22http%3A%2F%2Fapps.weibo.com%2F1838358847%2F8rYu1uHD%22%7D%2C%7B%22type%22%3A+%22view%22%2C%22name%22%3A+%22%E7%A0%8D%E4%BB%B7%E5%9B%A2%22%2C%22url%22%3A+%22http%3A%2F%2Fapps.weibo.com%2F1838358847%2F8s1i6v74%22%7D%2C%7B%22type%22%3A+%22click%22%2C%22name%22%3A+%22%E4%B9%88%E4%B9%88%E5%93%92%22%2C%22key%22%3A+%22memeda%22%7D%5D%7D%5D%7D'

返回结果

// 成功返回
{
    "result": true
}

// 失败返回
{
    "request": "/2/messages/menu/create.json",
    "error_code": 264XX,
    "error": "error message."
}



文档更新时间: 2014-06-11