创建或编辑5G消息固定菜单。
接口说明
前提条件
已通过 UpgradeToRCSSignature 接口将文本短信签名升级为 5G 消息签名。
使用说明
同一签名下仅支持一个固定菜单,重复调用将覆盖已有菜单内容。
QPS 限制
本接口的单用户 QPS 限制为 50 次/秒。超过限制,API 调用将会被限流,这可能会影响您的业务,请合理调用。
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
调试
授权信息
请求参数
|
名称 |
类型 |
必填 |
描述 |
示例值 |
| MenuContent |
string |
是 |
菜单内容,JSON 格式。具体菜单格式请参见下方 MenuContent 固定菜单语法说明。 |
{"menu":{"entries":[{"reply":{"displayText":"reply1","postback":{"data":"set_by_chatbot_reply1"}}}]}} |
| SignName |
string |
是 |
短信签名名称。 |
阿里云 |
MenuContent 固定菜单语法说明
固定菜单是 Chatbot 提供给用户的常驻菜单,显示在会话底部,最多支持两级嵌套。
整体结构
{
"menu": {
"entries": []
}
}
entries 中的每一项可以是一个 reply 建议回复、一个 action 建议操作,或一个子菜单 menu。二级菜单中的每一项只能是 reply 或 action,不能再嵌套子菜单。
层级约束
| 约束 | 说明 |
| 最大支持层级 | 2 |
| 一级菜单最大数量 | 3,一级菜单项可以直接是 reply 或 action,也可以包含二级子菜单 |
| 二级菜单最大数量 | 5 |
reply 建议回复
用户点击后,向平台发送一条预设的回复消息。
{
"reply": {
"displayText": "查看详情",
"postback": {
"data": "b3a1f8e2-7c4d-4e9a-bc56-1a2d3f4e5678"
}
}
}
| 字段 | 类型 | 必填 | 说明 |
| displayText | string | 是 | 按钮显示文字,1~25 字符 |
| postback.data | string | 是 | 回传给平台的业务数据,最长 2000 字符,需全局唯一,建议使用 UUID |
action-urlAction 打开网页
用户点击后,在浏览器或应用内 WebView 中打开指定 URL。
{
"action": {
"displayText": "打开官网",
"postback": {
"data": "c4b2e9f1-8d5a-4f3b-ae67-2b3c4d5e6789"
},
"urlAction": {
"openUrl": {
"url": "https://www.example.com",
"application": "browser"
}
}
}
}
| 字段 | 类型 | 必填 | 说明 |
| displayText | string | 是 | 按钮显示文字,1~25 字符 |
| postback.data | string | 是 | 回传给平台的业务数据 |
| urlAction.openUrl.url | string | 是 | 目标网址,支持 http、https 及 App Deep Link,如 weixin:// |
| urlAction.openUrl.application | string | 是 | 取值 browser 表示系统浏览器,webview 表示应用内嵌浏览器 |
action-dialerAction 拨打电话
用户点击后,调起系统拨号界面。
{
"action": {
"displayText": "拨打客服",
"postback": {
"data": "d5c3f0a2-9e6b-4a4c-bf78-3c4d5e6f7890"
},
"dialerAction": {
"dialPhoneNumber": {
"phoneNumber": "+8610086"
}
}
}
}
| 字段 | 类型 | 必填 | 说明 |
| displayText | string | 是 | 按钮显示文字,1~25 字符 |
| postback.data | string | 是 | 回传给平台的业务数据 |
| dialerAction.dialPhoneNumber.phoneNumber | string | 是 | 电话号码,如+8613800138000 或 10086 |
子菜单嵌套
通过 menu 对象实现菜单嵌套,每一级子菜单需要提供 displayText 菜单标签和 entries 子项数组。
{
"menu": {
"displayText": "更多服务",
"entries": [
{
"reply": {
"displayText": "套餐查询",
"postback": { "data": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" }
}
},
{
"action": {
"displayText": "拨打 10086",
"postback": { "data": "b2c3d4e5-f6a7-8901-bcde-f12345678901" },
"dialerAction": {
"dialPhoneNumber": { "phoneNumber": "10086" }
}
}
}
]
}
}
完整示例
{
"menu": {
"entries": [
{
"reply": {
"displayText": "业务咨询",
"postback": { "data": "e1f2a3b4-c5d6-7890-ef12-345678901234" }
}
},
{
"menu": {
"displayText": "更多服务",
"entries": [
{
"reply": {
"displayText": "套餐查询",
"postback": { "data": "f2a3b4c5-d6e7-8901-f234-567890123456" }
}
},
{
"action": {
"displayText": "拨打客服",
"postback": { "data": "a3b4c5d6-e7f8-9012-a345-678901234567" },
"dialerAction": {
"dialPhoneNumber": { "phoneNumber": "10086" }
}
}
},
{
"action": {
"displayText": "访问官网",
"postback": { "data": "b4c5d6e7-f8a9-0123-b456-789012345678" },
"urlAction": {
"openUrl": {
"url": "https://www.example.com",
"application": "browser"
}
}
}
}
]
}
}
]
}
}
用户点击菜单后的上行回执
用户点击固定菜单中的某一项时,客户端会向平台回传一条 response 消息,其中包含 reply 或 action 之一,字段内容与下行定义完全对应。平台根据 postback.data 的值执行对应业务逻辑。
{
"response": {
"reply": {
"displayText": "业务咨询",
"postback": { "data": "e1f2a3b4-c5d6-7890-ef12-345678901234" }
}
}
}
返回参数
|
名称 |
类型 |
描述 |
示例值 |
|
object |
|||
| AccessDeniedDetail |
string |
访问被拒绝时返回的详细信息。 |
None |
| RequestId |
string |
本次请求的 ID。 |
A90E4451-FED7-49D2-87C8-00700A8C4D0D |
| Message |
string |
状态码的描述。 |
OK |
| Data |
object |
返回数据,包含 |
{ "RcsMenuVersion": "RCS_MENU_123410123" } |
| Code |
string |
请求状态码。返回 OK 代表请求成功。 |
OK |
| Success |
boolean |
是否调用成功。
|
true |
示例
正常返回示例
JSON格式
{
"AccessDeniedDetail": "None",
"RequestId": "A90E4451-FED7-49D2-87C8-00700A8C4D0D",
"Message": "OK",
"Data": {
"RcsMenuVersion": "RCS_MENU_123410123"
},
"Code": "OK",
"Success": true
}
错误码
访问错误中心查看更多错误码。
变更历史
更多信息,参考变更详情。