### 3.2.1 成语接龙
#### (1)功能说明
成语接龙游戏,通过唤醒语“成语接龙”进入游戏,然后与机器人共同完成成语的接龙,同音字亦可。游戏过程可以“退出”,“跳过”,“再来一局”等指示命令重置游戏,亦可问某个成语“什么意思”,依次进行,直到主动退出或一方被打败游戏结束,结束后给出统计分数。
#### (2) 接口说明
**请求方法**
* POST
**请求地址**
* [http://api.ruyi.ai/v1/message](http://api.ruyi.ai/v1/message)
**请求参数说明**
| 参数名 | 参数类型 | 是否必须 | 参数说明 |
| :--- | :--- | :---: | :--- |
| q | String | 是 | 自然语言表达,例如“成语接龙" |
| app\_key | String | 是 | 应用开发者秘钥,注册开发者后台账号,建立虚拟助理后获得 |
| user\_id | String | 是 | 用户唯一标识,便于支持个性化语义解析。建议开发者使用 UUID 字符,且不同用户必须用不同的 user\_id,防止意图串。 |
#### (3) 返回说明
**返回参数说明**
| 名称 | 类型 | 说明 |
| :--- | :--- | :--- |
| code | Integer | 返回代码 |
| msg | String | 返回代码描述 |
| parameters | JSON Object | 解析到的实体以及服务说明 |
| action | String | 服务的接口名称 |
| name | String | 匹配的意图名称 |
| result | JSON Object | 接口返回内容 |
| outputs | Array | 服务输出结果,微信端使用 type 类型为 wechat 开头的内容;硬件端收到所有内容,依据需求解析使用 |
**返回代码说明**
| 返回代码 | 错误类型 | 说明 |
| :--- | :--- | :--- |
| 0/200 | 成功 | 请求成功 |
| 400 | 无效请求 | 某些必需参数缺失或参数值错误,详见 msg 字段 |
| 401 | 未授权 | 授权失败,app\_key 缺失或错误 |
| 403 | 请求被禁止 | 有效请求,但服务拒绝响应,请联系contact@ruyi.ai |
| 408 | 请求超时 | 请求响应超时,一般响应时间设置为2000ms以内 |
| 429 | 短时间内大量访问 | 短时间内请求数过多 |
| 500 | 内部错误 | 服务处理异常 |
| 503 | 服务不可用 | 服务异常或正在维护 |
#### (4)请求示例
**请求范例**
_成语接龙;魑魅魍魉_
_什么意思_
_刀剑光影(错误成语)_
_跳过_
_退出_
**请求示例**
(用户给出正确成语)
* [http://api.ruyi.ai/ruyi-api/v1/message?app\_key=APP\_KEY&user\_id=user0&q=魑魅魍魉](http://api.ruyi.ai/ruyi-api/v1/message?app_key=APP_KEY&user_id=user0&q=魑魅魍魉)
返回结果
```json
{
"code": 0,
"msg": "ok",
"result": {
"_text": "魑魅魍魉",
"msg_id": "643e70d8-3658-4785-8193-002bc2477ae6",
"intents": [{
"parameters": {
"q": "魑魅魍魉",
"msgNotChengyu": "这个是成语吗?我不知道啊。您再说一个吧,不会可以说【跳过】或者【退出】",
"msgNotMatch": "你说的成语接不上哦,请再说一个,或者说【跳过】",
"msgSysLose": "我认输...你好厉害啊!你还要再玩一局吗?",
"msgValidMatch": "这个成语我知道!该我啦:",
"service": "chengyu"
},
"action": "sys.action.chengyujielong/play",
"name": "玩成语接龙",
"result": {
"isChengyu": true,
"isValidMatch": true,
"chengyuToMatch": "两面三刀",
"explanation": "当面一套,背后一套。比喻阴险狡诈,耍两面手法,挑拨是非。",
"lastPinyin": "dao",
"score": 1,
"beatPercent": 1,
"totalNumUserSay": 1,
"prevChengyu": "两面三刀",
"text": "这个成语我知道!该我啦:两面三刀。",
"type": "dialog"
},
"outputs": [{
"type": "wechat.text",
"property": {
"text": "这个成语我知道!该我啦:两面三刀。"
}
}, {
"type": "dialog",
"property": {
"text": "这个成语我知道!该我啦:两面三刀。听好啦:两面三刀",
"emotion": "despite"
}
}],
"score": "1.0",
"scoreColor": "c4",
"is_match": 1,
"id": "37663449-6260-4211-b55b-95e993a52b80"
}],
"meta_process_milliseconds": 613
}
}
```
**请求示例**
(用户询问机器人给出的成语是什么意思)
* [http://api.ruyi.ai/ruyi-api/v1/message?app\_key=APP\_KEY&user\_id=user0&q=什么意思](http://api.ruyi.ai/ruyi-api/v1/message?app_key=APP_KEY&user_id=user0&q=什么意思)
返回结果
```json
{
"code": 0,
"msg": "ok",
"result": {
"_text": "什么意思",
"msg_id": "564bfb27-53b6-42ad-b573-6f51472b8a1d",
"intents": [{
"parameters": {
"chengyuToMatch": "两面三刀",
"score": "1",
"prevChengyu": "两面三刀",
"totalNumUserSay": "2",
"lastPinyin": "dao",
"explanation": "当面一套,背后一套。比喻阴险狡诈,耍两面手法,挑拨是非。",
"beatPercent": "1",
"chengyujielongExplanation": "……我刚才没说成语啊!骗我!~",
"service": "chengyu"
},
"action": "no_action",
"name": "解释成语或者请求重复",
"result": {
"text": "我刚才说的成语是:【两面三刀】当面一套,背后一套。比喻阴险狡诈,耍两面手法,挑拨是非。~好啦,你继续接吧",
"type": "dialog"
},
"outputs": [{
"type": "wechat.text",
"property": {
"text": "我刚才说的成语是:【两面三刀】当面一套,背后一套。比喻阴险狡诈,耍两面手法,挑拨是非。~好啦,你继续接吧"
}
}, {
"type": "dialog",
"property": {
"text": "我刚才说的成语是:【两面三刀】当面一套,背后一套。比喻阴险狡诈,耍两面手法,挑拨是非。~好啦,你继续接吧",
"emotion": "despite"
}
}],
"score": "1.0",
"scoreColor": "c4",
"is_match": 1,
"id": "7e20a9ec-4908-448f-8e72-03a74a1075d5"
}],
"meta_process_milliseconds": 36
}
}
```
**请求示例**
(用户没有给出正确成语;接上一条的回答)
* [http://api.ruyi.ai/ruyi-api/v1/message?app\_key=APP\_KEY&user\_id=user0&q=刀剑光影](http://api.ruyi.ai/ruyi-api/v1/message?app_key=APP_KEY&user_id=user0&q=刀剑光影)
返回结果
```json
{
"code": 0,
"msg": "ok",
"result": {
"_text": "刀剑光影",
"msg_id": "4b809b85-6824-434e-9afb-e1ff2347c6a0",
"intents": [{
"parameters": {
"q": "刀剑光影",
"chengyuToMatch": "两面三刀",
"score": "1",
"msgNotChengyu": "这个是成语吗?我不知道啊。您再说一个吧,不会可以说【跳过】或者【退出】",
"msgNotMatch": "你说的成语接不上哦,请再说一个,或者说【跳过】",
"msgSysLose": "我认输...你好厉害啊!你还要再玩一局吗?",
"msgValidMatch": "这个成语我知道!该我啦:",
"prevChengyu": "两面三刀",
"totalNumUserSay": "1",
"lastPinyin": "dao",
"explanation": "当面一套,背后一套。比喻阴险狡诈,耍两面手法,挑拨是非。",
"service": "chengyu"
},
"action": "sys.action.chengyujielong/play",
"name": "玩成语接龙",
"result": {
"chengyuToMatch": "两面三刀",
"explanation": "当面一套,背后一套。比喻阴险狡诈,耍两面手法,挑拨是非。",
"lastPinyin": "dao",
"score": 1,
"beatPercent": 1,
"totalNumUserSay": 2,
"prevChengyu": "两面三刀",
"text": "这个是成语吗?我不知道啊。您再说一个吧,不会可以说【跳过】或者【退出】,接龙【两面三刀】",
"type": "dialog"
},
"outputs": [{
"type": "wechat.text",
"property": {
"text": "这个是成语吗?我不知道啊。您再说一个吧,不会可以说【跳过】或者【退出】,接龙【两面三刀】"
}
}, {
"type": "dialog",
"property": {
"text": "这个是成语吗?我不知道啊。您再说一个吧,不会可以说【跳过】或者【退出】,接龙【两面三刀】,听好啦,【两面三刀】",
"emotion": "confused"
}
}],
"score": "1.0",
"scoreColor": "c4",
"is_match": 1,
"id": "37663449-6260-4211-b55b-95e993a52b80"
}],
"meta_process_milliseconds": 623
}
}
```
**请求示例**
(用户跳过当前成语,机器人重新给出回答)
* [http://api.ruyi.ai/ruyi-api/v1/message?app\_key=APP\_KEY&user\_id=user0&q=跳过](http://api.ruyi.ai/ruyi-api/v1/message?app_key=APP_KEY&user_id=user0&q=跳过)
返回结果
```json
{
"code": 0,
"msg": "ok",
"result": {
"_text": "跳过",
"msg_id": "fcc6692a-643e-4cdc-a662-f9496bbdedb3",
"intents": [{
"parameters": {
"q": "跳过",
"chengyuToMatch": "两面三刀",
"score": "1",
"prevChengyu": "两面三刀",
"totalNumUserSay": "3",
"lastPinyin": "dao",
"isRandomChengyu": "true",
"explanation": "当面一套,背后一套。比喻阴险狡诈,耍两面手法,挑拨是非。",
"service": "chengyu"
},
"action": "sys.action.chengyujielong/play",
"name": "跳过",
"result": {
"isChengyu": true,
"isValidMatch": true,
"chengyuToMatch": "乳臭未干",
"explanation": "身上的奶腥味都还未散去。形容人年幼无知,不懂世事。用于讽刺时,多用来表示对年轻人的轻蔑与不信任。",
"lastPinyin": "gan",
"score": 1,
"beatPercent": 1,
"totalNumUserSay": 4,
"prevChengyu": "两面三刀;乳臭未干",
"text": "给你换了一个成语:&out.chengyuToMatch",
"type": "dialog"
},
"outputs": [{
"type": "wechat.text",
"property": {
"text": "好的,给你一个成语:乳臭未干"
}
}, {
"type": "dialog",
"property": {
"text": "好的,给你一个成语:乳臭未干。听好了:乳臭未干",
"emotion": "positive"
}
}],
"score": "1.0",
"scoreColor": "c4",
"is_match": 1,
"id": "23039e03-b923-4e35-9d68-fdb944971519"
}],
"meta_process_milliseconds": 48
}
}
```
**请求示例退出**
(用户退出当前游戏)
* [http://api.ruyi.ai/ruyi-api/v1/message?app\_key=APP\_KEY&user\_id=user0&q=退出](http://api.ruyi.ai/ruyi-api/v1/message?app_key=APP_KEY&user_id=user0&q=退出)
返回结果
```json
{
"code": 0,
"msg": "ok",
"result": {
"_text": "退出",
"msg_id": "433c3f19-6be2-4d00-8644-9ebec6c08295",
"intents": [{
"parameters": {
"score": "1",
"beatPercent": "1",
"totalNumUserSay": "3",
"msgGoodJob": "非常好,再接再厉哦!",
"msgBadJob": "继续努力哦!",
"msgQuit": "谢谢你参与成语接龙",
"msgDirectQuit": "好,下次再来玩吧!",
"service": "chengyu"
},
"action": "no_action",
"name": "退出成语接龙",
"result": {
"text": "谢谢你参与成语接龙,你一共进行了3轮接龙,答对1个,击败了全国1%的用户,继续努力哦!",
"type": "dialog"
},
"outputs": [{
"type": "wechat.text",
"property": {
"text": "谢谢你参与成语接龙,你一共进行了3轮接龙,答对1个,击败了全国1%的用户,继续努力哦!"
}
}, {
"type": "dialog",
"property": {
"text": " 谢谢你参与成语接龙,你一共玩了3轮接龙,答对1个,击败了全国1%的用户, 继续努力哦! ",
"emotion": "happy"
}
}],
"score": "1.0",
"scoreColor": "c4",
"is_match": 1,
"id": "032002f5-a4e9-4f2d-b1a7-6b31ba9bff66"
}],
"meta_process_milliseconds": 39
}
}
```
**详细参数说明**
| 名称 | 类型 | 说明 |
| :--- | :--- | :--- |
| service | String | 服务名称 |
| q | String | 识别的内容 |
| msgNotChengyu | String | 不是成语的缺省描述 |
| msgNotMatch | String | 成语没有匹配上一条成语的缺省描述 |
| msgSysLose | String | 机器人被打败的缺省描述 |
| msgValidMatch | String | 匹配正确的缺省描述 |
| isChengyu | Boolean | 判断是为成语,是则为true |
| isValidMatch | Boolean | 判断成语是否和上一个匹配,是则为 true |
| chengyuToMatch | String | 要接龙的成语 |
| explanation | String | 成语的解释 |
| lastPinyin | String | 成语的最后一个字的拼音 |
| score | Integer | 当前得分 |
| beatPercent | Integer | 当前打败了多少用户,单位百分数 |
| totalNumUserSay | String | 用户目前为止说了几轮 |
| prevChengyu | String | 上一个成语 |
| chengyujielongExplanation | String | 当游戏还没开始用户请求解释时,机器人做出的回答 |
| isRandomChengyu | String | 当用户跳过时机器人随机返回一个成语,为“true”时即表示这是机器人随机给的成语而不是接上一个成语 |
| msgGoodJob | String | 退出游戏时当用户分数较高的鼓励 |
| msgBadJob | String | 退出游戏时当用户分数较低的鼓励 |
| msgQuit | String | 退出游戏时的提示语 |
| msgDirectQuit | String | 直接退出游戏的提示语 |
**指令清单**
| 指令名称 | 范例 |
| :--- | :--- |
| 唤醒| 成语接龙|
| 进行接龙游戏| 一马当先|
| 解释成语意思| 这个成语是什么意思|
| 跳过| 跳过|
| 再来一局| 再来一局|
| 退出| 退出|
- 1. 海知智能第三方技能插件开放平台概述
- 2. 快速接入API
- 2.1 硬件接口调用
- 2.2 快速接入微信
- 2.3 API接入常见问题
- 3. 技能插件
- 3.1 基础能力类
- 顶级过滤器
- 用户知识图谱
- 机器人档案
- 通用闲聊
- 儿童闲聊
- Smart Reply
- 轻量闲聊
- 3.2 语音游戏类
- 成语接龙
- 词汇乐园
- 词语接龙
- 鹦鹉学舌
- 动脑猜猜
- 挑战单词
- 冒险世界
- 猜猜我是谁
- 阿拉丁学诗词
- 猫猫托管所
- 漂流瓶
- 诗词大会
- 国学大会
- 我爱猜歌名
- 我在看着你
- 灯谜猜猜
- 3.3 休闲娱乐类
- 星座运势
- 悦耳声音
- 幸运签
- 调教机器人
- 娱乐推送
- 3.4 生活服务类
- 黄历
- 计算器
- 古诗词
- 时间询问
- 翻译类技能
- 天气资讯
- 日程创建
- 日程创建指令
- 闹钟
- 食材知识
- 冥想音乐
- 格言
- 每日英语
- 汉语词典
- 豆果菜谱
- 古文翻译
- 3.5 音频点播类
- 喜马拉雅FM
- 新闻广播
- 音乐点播
- Smart Music
- 儿童听听
- Smart Audio
- 儿童笑话
- 点播控制指令
- 3.6 视频点播类
- 影视点播
- 3.7 百科知识类
- 人物百科
- 百科问答
- 实时百科
- 3.8 体育健康类
- 五分钟健身
- 4. 开发者初级教程
- 4.1 开通服务
- 4.2 创建机器人
- 4.3 设置机器人
- 4.4 获取技能插件
- 4.5 让机器人学会聊天
- 4.6 导入知识库
- 4.7 多种问答形式
- 4.8 数据统计
- 4.9 粉丝管理
- 5. 开发者中级教程
- 5.1 词典运用
- 5.2 意图处理
- 5.3 暗号使用
- 5.4 事件触发
- 5.5 优先级
- 5.6 触发器
- 5.7 快捷键
- 5.8 意图报错
- 6. 开发者高级教程
- 6.1 handlebars模版语言
- 6.2 JavaScript简单介绍
- 6.3 JavaScript使用说明
- 6.4 JavaScript使用案例
- 6.5 JavaScript常见问题
- 7. 快速发布技能
- 8. 帮助中心
- 8.1 常见概念
- 8.2 帮助视频
- 8.3 联系我们