### 3.2.3 词语接龙 #### (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": "525c5c27-0360-44e2-8f89-a20aaadda900", "intents": [{ "parameters": { "service": "ciyu" }, "action": "no_action", "name": "进入词语接龙", "result": { "text": "欢迎来玩词语接龙游戏, 请您说一个词语。如果要结束游戏,请说【退出】;如果要重新开始,请说【再来一局】", "type": "dialog" }, "outputs": [{ "type": "wechat.text", "property": { "text": "欢迎来玩词语接龙游戏, 请您说一个词语。如果要结束游戏,请说【退出】;如果要重新开始,请说【再来一局】" } }, { "type": "dialog", "property": { "text": "欢迎来玩词语接龙游戏, 请您说一个词语。如果要结束游戏,请说【退出】;如果要重新开始,请说【再来一局】", "emotion": "calm" } }], "score": "1.0", "scoreColor": "c4", "is_match": 1, "id": "5329699e-9189-4b23-9086-18453a6fd9c9" }], "meta_process_milliseconds": 32 } } ``` **请求示例成功** (输入正确的词语) * [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": "350dedce-5a97-45c7-b687-efe45ade224d", "intents": [{ "parameters": { "q": "你好", "msgNotCiyu": "这个词语我不知道,请你说一个词语吧", "msgNotMatch": "你说的词语不匹配哦,请再说一个", "msgSysLose": "你好厉害啊!这个我接不上了,你可以跟我说【退出】,也可以继续接", "msgValidMatch": "[微笑] 你说的词语我也知道,加1分,我说:", "service": "ciyu" }, "action": "sys.action.ciyujielong/play", "name": "玩词语接龙", "result": { "isCiyu": true, "isValidMatch": true, "ciyuToMatch": "好玩", "score": 1, "beatPercent": 1, "totalNumUserSay": 1, "prevCiyu": "好玩", "text": " [微笑] 你说的词语我也知道,加1分,我说:好玩。 ", "type": "dialog" }, "outputs": [{ "type": "dialog", "property": { "text": " 你说的词语我也知道,加1分,我说:好玩。 ", "emotion": "like" } }, { "type": "wechat.text", "property": { "text": " [微笑] 你说的词语我也知道,加1分,我说:好玩。 " } }], "score": "1.0", "scoreColor": "c4", "is_match": 1, "id": "180b0e51-f3b7-4153-91d8-b70bc92893fd" }], "meta_process_milliseconds": 51 } } ``` **请求示例失败** (输入不匹配的词语) * [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": "c9087e2e-3840-4f9b-910a-3454b9ea0d15", "intents": [{ "parameters": { "q": "哈哈", "ciyuToMatch": "好玩", "score": "1", "msgNotCiyu": "这个词语我不知道,请你说一个词语吧", "msgNotMatch": "你说的词语不匹配哦,请再说一个", "msgSysLose": "你好厉害啊!这个我接不上了,你可以跟我说【退出】,也可以继续接", "msgValidMatch": "[微笑] 你说的词语我也知道,加1分,我说:", "prevCiyu": "好玩", "totalNumUserSay": "1", "service": "ciyu" }, "action": "sys.action.ciyujielong/play", "name": "玩词语接龙", "result": { "isCiyu": true, "ciyuToMatch": "好玩", "score": 1, "beatPercent": 1, "totalNumUserSay": 2, "prevCiyu": "好玩", "text": " 你说的词语不匹配哦,请再说一个,接龙【好玩】 ", "type": "dialog" }, "outputs": [{ "type": "dialog", "property": { "text": " 你说的词语不匹配哦,请再说一个,接龙【好玩】 ", "emotion": "sad" } }, { "type": "wechat.text", "property": { "text": " 你说的词语不匹配哦,请再说一个,接龙【好玩】 " } }], "score": "1.0", "scoreColor": "c4", "is_match": 1, "id": "180b0e51-f3b7-4153-91d8-b70bc92893fd" }], "meta_process_milliseconds": 42 } } ``` **请求示例重置游戏** (再来一局重置游戏然后开始) * [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": "6b985d6e-5b0a-4011-a6d5-31608f0cd59c", "intents": [{ "parameters": { "score": "1", "totalNumUserSay": "1", "service": "ciyu" }, "action": "no_action", "name": "再次进入词语接龙", "result": { "text": " 你上一局一共进行了1轮接龙,答对1个!欢迎你再次来玩, 请你说一个词语。如果要结束游戏,请说【退出】;如果要重新开始,请说【再来一局】", "type": "dialog" }, "outputs": [{ "type": "dialog", "property": { "text": " 你上一局一共进行了1轮接龙,答对1个!欢迎你再次来玩, 请你说一个词语。如果要结束游戏,请说【退出】;如果要重新开始,请说【再来一局】", "emotion": "calm" } }, { "type": "wechat.text", "property": { "text": " 你上一局一共进行了1轮接龙,答对1个!欢迎你再次来玩, 请你说一个词语。如果要结束游戏,请说【退出】;如果要重新开始,请说【再来一局】" } }], "score": "1.0", "scoreColor": "c4", "is_match": 1, "id": "ef9ed971-7633-47d4-9f53-58b59a8e6406" }], "meta_process_milliseconds": 33 } } ``` **请求示例退出** (退出游戏,返回统计分数) * [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": "957462d8-2d93-4d4c-94a0-6de28195ddd6", "intents": [{ "parameters": { "msgGoodJob": "非常好,再接再厉哦!", "msgBadJob": "继续努力,成绩还有待提高哦!", "msgQuit": "谢谢你参与词语接龙游戏", "msgDirectQuit": "好,下次再来玩吧!", "service": "ciyu" }, "action": "no_action", "name": "退出词语接龙", "result": { "text": " 好,下次再来玩吧! ", "type": "dialog" }, "outputs": [{ "type": "wechat.text", "property": { "text": " 好,下次再来玩吧! " } }, { "type": "dialog", "property": { "text": " 好,下次再来玩吧! ", "emotion": "positive" } }], "score": "1.0", "scoreColor": "c4", "is_match": 1, "id": "2b37cedf-135e-47d2-b11d-a76312248311" }], "meta_process_milliseconds": 31 } } ``` **详细参数说明** | 名称 | 类型 | 说明 | | :--- | :--- | :--- | | service | String | 服务名称 | | q | String | 识别的内容 | | msgNotCiyu | String | 不是词语的缺省描述 | | msgNotMatch | String | 词语没有匹配上一条词语的缺省描述 | | msgSysLose | String | 机器人被打败的缺省描述 | | msgValidMatch | String | 匹配正确的缺省描述 | | isCiyu | Boolean | 判断是否为词语,是则为 true | | isValidMatch | Boolean | 判断词语是否和上一个匹配,是则为 true | | CiyuToMatch | String | 要接龙的词语 | | score | Integer | 当前得分 | | beatPercent | Integer | 当前打败了多少用户,单位百分数 | | totalNumUserSay | String | 用户目前为止说了几轮 | | prevCiyu | String | 上一个词语 | | msgGoodJob | String | 退出游戏时当用户分数较高的鼓励 | | msgBadJob | String | 退出游戏时当用户分数较低的鼓励 | | msgQuit | String | 退出游戏时的提示语 | | msgDirectQuit | String | 直接退出游戏的提示语 | **指令清单** | 指令名称 | 范例 | | :--- | :--- | | 唤醒| 词语接龙| | 进行接龙游戏| 白天| | 跳过| 跳过| | 再来一局| 再来一局| | 退出| 退出|