接口统一的调用异常
报错返回参数:msgCode
名称 | 描述介绍 |
服务器开小差了 | MTOP 接口的兜底报错 |
HSF执行错误 | HSF 接口没有发布到对应环境 |
请求API不存在 | 调用的 mtop 接口不存在 |
请求参数不正确 | 参数填写不正确,请查看文档对照参数 (包括,参数类型不正确 和 参数未填写) |
除前三个报错信息,剩下的报错,都透传至服务端接口 |
如何判断当前页面的环境
if (AI.urlParam().type === 'debug' || AI.urlParam().type === 'localDebug') { // 预发环境 } else { // 线上环境 }
查询食谱推荐列表接口
mtop.alibaba.aicloud.recipe.getRecomandRecipePage
参数
名称 | 参数类型 | 是否必须 | 描述 |
devId | string | 是 | 设备 devId |
productKey | string | 是 | 设备 productKey |
params | object | 是 | 主要参数 |
params.openAccountId | string | 是 | 用户账号的 accountId |
pageInfo | object | 否 | 页码参数 |
pageInfo.pageNum | number | 否 | 当前页码 |
pageInfo.pageSize | number | 否 | 当前页面展示数量 |
示例
// 调用示例 AI.aiRequestMtopProxy({ api: 'mtop.alibaba.aicloud.recipe.getRecomandRecipePage', data: { devId: 'a80171320100009715c507da78000000', // 获取url上的 AI.devId productKey: '306', // 获取url上的 AI.productKey params: JSON.stringify({ openAccountId: "0yl8oK0WFDBwEheQxSMD4g==", enviroment: 1 }), pageInfo: JSON.stringify({ pageNum: 1, pageSize: 10 }) } }).then((res) => { console.log('返回信息', res); }).catch((res) => { console.log('失败返回', res); }); // 返回数据 { "api": "mtop.alibaba.aicloud.recipe.getRecomandRecipePage", "data": { "success": "true", "model": { "success": true, "retValue": { "pageNum": 1, // 第N页 "pageSize": 10, // 一页条数 "total": 5, // 总条数 "list": [ { "contentRecipeId": 1137111, // 内容食谱id "recipeName": "开灯1111", // 食谱名 "collectNum": 0, // 食谱收藏数 "recipeType": 0, // 食谱类型 0视频菜谱 1图文菜谱 "description": "xxxdescription111", // 食谱描述 "functionType": 2, // 功能类型,1 非智能食谱 2智能食谱 "recipeTime": 0, // 食谱制作时间(秒) // 食谱图片地址 "imageUrl": { "img": "www.xxximg111.com", // 默认图片 "large": "www.xxxlarge111.com", // 大图 "medium": "www.xxxmedium111.com", // 中图 "small": "www.xxxsmall111.com" // 小图 } } ] }, "extentions": null }, "statusCode": "200" } }
查询菜谱收藏列表接口
mtop.alibaba.aicloud.recipe.getFavoriteRecipeItem
参数
名称 | 参数类型 | 是否必须 | 描述 |
pageNum | number | 否 | 当前页码 |
pageSize | number | 否 | 当前页面展示数量 |
示例
// 调用示例 AI.aiRequestMtopProxy({ api: 'mtop.alibaba.aicloud.recipe.getFavoriteRecipeItem', data: { pageNum: 1, pageSize: 10 } }).then((res) => { console.log('返回信息', res); }).catch((res) => { console.log('失败返回', res); }); // 返回数据 { "api": "mtop.alibaba.aicloud.recipe.getFavoriteRecipeItem", "v": "1.0", "ret": [ "SUCCESS::调用成功" ], "data": { "success": "true", "msgCode": "null", "msgInfo": "SUCCESS", "model": { "totalCnt": 2, "totalPage": 0, "pageNum": 1, "pageSize": 10, "statusCode": 200, "message": null, "exception": null, "result": [ { "sourceName": null, //源名称 "recipeType": 1, //食谱类型 0 语音食谱 1 图文食谱 "tips": "", //小贴士 "cookTime": null, //制作时长单位秒 "difficulty": null, //难度 "cookStepNum": 1, //总部数 "audioUrl": "这个李子酸看着都会流口水!", //音频地址 图文食谱为描述 "viewCount": 17000, "favorCount": 515, "innerfavorCount":0,//内容中心收藏数 "functionType": 2, // 功能类型,1 非智能食谱 2智能食谱 "tmjlFavorCount": 173, // 天猫精灵收藏数 "intellectRecipe": 1, // 食谱类型(1 普通食谱 2 智能食谱) "commentCount": 0, "score": null, "videoPlayCount": null, "cookedCount": 13, "dishesCount": 13, "rawPageUrl": "https://www.xiachufang.com/recipe/100236532/", //三方连接地址 "tipsAudioUrl": null, "id": 780363, //食谱id "rawId": "100236532", //三方id "source": "xiachufang", //三方源 "sourceId": null, "title": "开胃李子酸", //食谱名称 "category": "audio", "type": "program", "hotScore": null, "commCateId": 80027001, //内容分类 80027001 固定 值 "tppExtendInfo": null, "x1Pv30d": 0, "x1PvTotal": 0, "isCharge": false, //是否收费 "isAudition": false, //是否试看 "resourceId": null, "description": "这个李子酸看着都会流口水!", //描述 "offline": false, //是否上线 "rankLevel": null, "videoUrl": null, "ingredients": [ //食材 { "name": "紫苏叶(超市有卖)", //名称 "weight": "1把" // 用量 } ], "publishTime": "2014-05-18T14:10:30.000Z", //发布时间 "tags": [ //标签 { "commonCateId": null, "id": 94045, //标签id "title": null, "alias": null, "description": null, "isOnline": null, "type": "program", "tagGroup": null } ], "authors": [ //作者 { "source": null, "id": 726699, "title": null, //作者名称 "alias": null, "description": null, "isOnline": null, "type": "program", "gender": null, "authorTypes": [ //作者类型 { "name": "DEFAULT" } ], "cover": null } ], "itemType": null, "valid": null, "cover": { //封面 "img": "https://aicontent.alibabausercontent.com/image-pre/732/732/6cde2c525b3d6a503fbabb5efdb97697.jpg!medium", "large": "https://aicontent.alibabausercontent.com/image-pre/732/732/6cde2c525b3d6a503fbabb5efdb97697.jpg!large", "mediam": null, "medium": "https://aicontent.alibabausercontent.com/image-pre/732/732/6cde2c525b3d6a503fbabb5efdb97697.jpg!medium", "small": "https://aicontent.alibabausercontent.com/image-pre/732/732/6cde2c525b3d6a503fbabb5efdb97697.jpg!small" }, "alias": [ ], "releaseTime": null } ], "extentions": null, "detail": null }, "statusCode": "200" } }
查询是否收藏了该菜谱
mtop.alibaba.aicloud.recipe.searchDetail
参数
名称 | 参数类型 | 是否必须 | 描述 |
params | object | 是 | 参数对象 |
params.id | string | 是 | 食谱 id |
示例
// 调用示例 AI.aiRequestMtopProxy({ api: 'mtop.alibaba.aicloud.recipe.searchDetail', data: { params: JSON.stringify({id: 780368}) } }).then((res) => { console.log('返回信息', res); }).catch((res) => { console.log('失败返回', res); }); // 返回数据 { "api": "mtop.alibaba.aicloud.recipe.searchDetail", "v": "1.0", "ret": [ "SUCCESS::调用成功" ], "data": { "success": "true", "msgCode": "success", "msgInfo": "SUCCESS", "model": { "code": 200, "message": "success", "result": { hasFavorite: true // 是否收藏标志 }, "extendInfo": null }, "statusCode": "200" } }
收藏or取消收藏操作
mtop.alibaba.aicloud.recipe.favoriteRecipeItem
参数
名称 | 参数类型 | 是否必须 | 描述 |
contentRecipeIds | array | 是 | 菜谱id |
isFavorite | boolean | 是 | 是否收藏, true 收藏, false 取消收藏 |
示例
// 调用示例 AI.aiRequestMtopProxy({ api: 'mtop.alibaba.aicloud.recipe.favoriteRecipeItem', data: { contentRecipeIds: JSON.stringify([780368, 780363]), isFavorite: true } }).then((res) => { console.log('返回信息', res); }).catch((res) => { console.log('失败返回', res); }); // 返回数据 { "api": "mtop.alibaba.aicloud.recipe.favoriteRecipeItem", "v": "1.0", "ret": [ "SUCCESS::调用成功" ], "data": { "success": "true",//操作成功标志 "msgCode": "null",//操作结果码 "msgInfo": "SUCCESS",//操作结果信息 "model": { "statusCode": 200, "message": null, "exception": null,//异常信息 "result": { "successIds": [//收藏成功id 780363, 780368 ], "failIds": [//收藏失败id ] }, "extentions": null, "detail": null }, "statusCode": "200" } }
查询食谱关联产品及设备信息接口
mtop.alibaba.aicloud.recipe.getRecipeProductDetailList
参数
名称 | 参数类型 | 是否必须 | 描述 |
devId | string | 是 | 设备 devId |
productKey | string | 是 | 设备 productKey |
params | object | 是 | 主要参数 |
params.openAccountId | string | 是 | 用户账号的 accountId |
params.contentRecipeId | string | 是 | 云食谱Id |
示例
// 调用示例 AI.aiRequestMtopProxy({ api: 'mtop.alibaba.aicloud.recipe.getRecipeProductDetailList', data: { devId: AI.devId, // 获取url上的 devId productKey: AI.productKey, // 获取url上的 productKey params: JSON.stringify({ openAccountId: "0yl8oK0WFDBwEheQxSMD4g==", contentRecipeId: "779736", enviroment: 1 // 环境,1测试,2线上 }) } }).then((res) => { console.log('返回信息', res); }).catch((res) => { console.log('失败返回', res); }); // 返回数据 { "api": "mtop.alibaba.aicloud.recipe.getRecipeProductDetailList", "data": { "success": "true", "model": { "retCode": 200, "success": true, "retValue": [ { "contentRecipeId": 779736, // 内容食谱id "productKey": "306", // 产品key "productName": "智能LED灯泡", // 产品名 // 产品icon图 "productIcon": "https://img.alicdn.com/tfs/TB1yQ7cNgHqK1RjSZJnXXbNLpXa-160-160.png", "businessRecipeId": 7, // 行业食谱id "controlApiName": "alibaba.ailabs.iot.saas.devicecontrol", // 控制接口名 "deviceStatusApiName": "alibaba.ailabs.iot.saas.deviceStatus", // 设备状态接口名 "openAccountId": "xxxxx", // openaccountId // 设备列表 "deviceList": [ { "deviceId": "a80171320100009715c507da78000000" // 设备 Id } ] } ], "extentions": null }, "statusCode": "200" } }
行业设备控制接口
mtop.alibaba.aicloud.recipe.businessDeviceControl
参数
名称 | 参数类型 | 是否必须 | 描述 |
devId | string | 是 | 设备 devId (h5 sdk 自动填写) |
productKey | string | 是 | 设备 productKey (h5 sdk 自动填写) |
params | object | 是 | 主要参数 |
params.openAccountId | string | 是 | 用户账号的 accountId |
params.controlApiName | string | 是 | 控制接口名 |
params.releaseStatus | number | 是 | 1 预发 2线上 |
params.domain | number | 是 | 1 食谱 |
params.payload | object | 是 | 领域参数 |
示例
command 指令支持:启动指令 deviceStart,关闭指令 deviceStop,暂停指令 deviceSuspend
// 调用示例 AI.aiRequestMtopProxy({ api: 'mtop.alibaba.aicloud.recipe.businessDeviceControl', data: { devId: AI.devId, productKey: AI.productKey, params: JSON.stringify({ openAccountId: "0yl8oK0WFDBwEheQxSMD4g==", controlApiName: "alibaba.ailabs.iot.saas.devicecontrol", releaseStatus: 2, releaseVersion: null, domain: 1, payload: JSON.stringify({"businessRecipeId": 100,"command":"deviceStart"}) }) } }).then((res) => { console.log('返回信息', res); }).catch((res) => { console.log('失败返回', res); }); // 返回数据 { "api": "mtop.alibaba.aicloud.recipe.businessDeviceControl", "data": { "success": "true", "model": { "retCode": 200, "success": true, "retValue": true, // 是否成功 true 成功 false 失败 "extentions": null }, "statusCode": "200" } }
错误码:
retCode | message | |
302002 | productKey=13414的产品功能定义不支持属性:workSwitch | |
300003 | 该账号下没有天猫精灵可以推送指令 | |
302007 | 设备处于离线状态 | |
302030 | 音箱不在线,无法推送指令 | |
120010 | 其他食谱正在制作中 | |
120017 | 您食谱操作太快了 |
查询设备食谱制作状态
mtop.alibaba.aicloud.recipe.getDeviceCurrentStatus
参数
名称 | 参数类型 | 是否必须 | 描述 |
devId | string | 是 | 设备 devId (h5 sdk 自动填写) |
productKey | string | 是 | 设备 productKey (h5 sdk 自动填写) |
params | object | 是 | 主要参数 |
params.openAccountId | string | 是 | 用户账号的 accountId |
params.deviceStatusApiName | string | 否 | 设备状态接口名 |
params.releaseStatus | number | 是 | 1 预发 2线上 |
params.domain | number | 是 | 1 食谱 |
params.payload | object | 是 | 领域参数 |
示例
// 调用示例 AI.aiRequestMtopProxy({ api: 'mtop.alibaba.aicloud.recipe.getDeviceCurrentStatus', data: { devId: AI.devId, productKey: AI.productKey, params: JSON.stringify({ openAccountId: "0yl8oK0WFDBwEheQxSMD4g==", deviceStatusApiName: "alibaba.ailabs.iot.saas.deviceStatus", releaseStatus: 2, releaseVersion: null, domain: 1, payload: JSON.stringify({"businessRecipeId": 2}) }) } }).then((res) => { console.log('返回信息', res); }).catch((res) => { console.log('失败返回', res); }); // 返回数据 { "api": "mtop.alibaba.aicloud.recipe.getDeviceCurrentStatus", "data": { "success": "true", "model": { "retCode": 200, // 这里返回的是字符串对像,需要先 JSON.parse 一下 "retValue": { "contentRecipeId": 1137111, // 内容食谱id "currentContentRecipeStepId": 9420204, // 当前食谱步骤id "deviceId": "a80171320100009715c507da78000000", // 设备id "runStatus": 1, // 运行状态,0 停止 1 运行 2 暂停 3 食谱完成 4 中断暂停 "totalTimeleft": 180, // 剩余时间总时间,单位秒 "productName": "智能LED灯泡", // 产品名称 "productKey": "306", // 产品key "controlApiName": "alibaba.ailabs.iot.saas.devicecontrol", // 控制接口名 "deviceStatusApiName": "alibaba.ailabs.iot.saas.deviceStatus", // 设备状态接口名 "businessRecipeId": 100, // 行业食谱id "totalTime": 180 // 总时间,单位秒 "deviceStatus": {"name":"start/开始","value":1} // 设备状态 "interruptErrorInfo": {"code": 302007,"message":"设备处于离线状态"} // 中断错误码 }, "extentions": null }, "statusCode": "200" } }
获取云食谱详情接口
mtop.alibaba.aicloud.recipe.listDataRecipeV2
参数
名称 | 参数类型 | 是否必须 | 描述 |
contentRecipeIds | array | 是 | 食谱Id |
needStep | boolean | 是 | 是否需要获取步骤 |
示例
// 调用示例 AI.aiRequestMtopProxy({ api: 'mtop.alibaba.aicloud.recipe.listDataRecipeV2', data: { contentRecipeIds: JSON.stringify([779712]), needStep: true, params: JSON.stringify({ isProductData: 2 // 2 是线上环境 非2 是预发环境 (默认非2) }) } }).then((res) => { console.log('返回信息', res); }).catch((res) => { console.log('失败返回', res); }); // 返回数据 { "api": "mtop.alibaba.aicloud.recipe.listDataRecipeV2", "data": { "success": "true" "model": { "totalSize": 1, // 总数 "currentPageNum": 0, // 当前页 "pageSize": 0, // 每页数量 "success": true, "data": [ { "batchId": null, // 批次号 "id": 779712, // 菜谱的id "name": "奶黄水晶饼", // 菜谱名称 "type": 1, // 菜谱类型 0 视频 1 图文 "tips": null, // 小贴士 //菜谱描述 "description": "朋友送了这套小巧玲珑的模具给我正好做可以做水蒸饼,而且花纹也很清晰。", "source": "xiachufang", // 菜谱来源 "rawId": "100591900", // 外部系统菜谱id "cookTime": 0, // 菜谱制作时长 单位秒 "difficulty": null, // 菜谱制作难度 "firstCommonCateId": 80027, // 菜谱类型 固定值 "secCommonCateId": 80027001, // 菜谱类型 固定值 "cookStepNum": 9, // 菜谱总步数 "audioUrl": "朋友送了这套小巧玲珑的模具给我正好做可以做水蒸饼,而且花纹也很清晰。",// audio 链接 "audit": 1, // 审核状态 0 未审核 1 审核中 2 审核通过 3 审核不通过 "rawPageUrl": "https://www.xiachufang.com/recipe/100591900/",//三方地址链接 "functionType": 2, // 功能类型,1 非智能食谱 2智能食谱 "steps": [ { "id": 6455563, // 菜谱步骤内部id "recipeId": 779712, // 菜谱id "batchId": null, // 批次号 "name": "1", // 菜谱名称 "source": "xiachufang", // 菜谱来源 "rawId": "1", // 三方菜谱步骤id "description": "将所有粉类过筛与糖粉混合", // 菜谱步骤描述 "orderIndex": 1, // 菜谱步骤顺序 "audioUrl": "将所有粉类过筛与糖粉混合", // 菜谱音频地址 没有音频方文字 "extendInfo": "{\"data_version\":\"2\"}", "tips": null, // 步骤小贴士 "recipeRawId": "100591900", // 菜谱三方id "tipsAudioUrl": null, "operation": null, "coverUrl": { // 菜谱封面 "img": "https://aicontent.alibabausercontent.com/image-pre/732/732/c625fa544601221f106b905aa69e88e9.webp!medium", // 默认封面 "large": "https://aicontent.alibabausercontent.com/image-pre/732/732/c625fa544601221f106b905aa69e88e9.webp!large", // 大图 "mediam": null, "medium": "https://aicontent.alibabausercontent.com/image-pre/732/732/c625fa544601221f106b905aa69e88e9.webp!medium",// 中图 "small": "https://aicontent.alibabausercontent.com/image-pre/732/732/c625fa544601221f106b905aa69e88e9.webp!small"// 小图 }, "videoUrl": { // 菜谱步骤视频 "cover" : { // 封面 "img" : "https://aicontent.alibabausercontent.com/image/732/c4c75437005237ab974a7083bed6e348.webp!medium", "large" : "", "mediam" : "", "medium" : "", "small" : "" }, "defaultUrl" : "", // 默认连接 "height" : 0, "high" : "", "standard" : "", "ultra" : "", "width" : 0 } } ], "alias": [ ], "coverUrl": { // 封面 "img": "https://aicontent.alibabausercontent.com/image-pre/732/732/669a23deebc1f97d34b33f711ef1ec46.jpg!medium",// 默认图片 "large": "https://aicontent.alibabausercontent.com/image-pre/732/732/669a23deebc1f97d34b33f711ef1ec46.jpg!large",// 大图 "mediam": null, "medium": "https://aicontent.alibabausercontent.com/image-pre/732/732/669a23deebc1f97d34b33f711ef1ec46.jpg!medium",// 中图 "small": "https://aicontent.alibabausercontent.com/image-pre/732/732/669a23deebc1f97d34b33f711ef1ec46.jpg!small"// 小图 }, "videoUrl": null, "authorIds": [ { "source": null, "id": 726115, // 作者id "title": "b文惠", // 作者名称 "alias": null, "description": null, "isOnline": null, "type": "program", "gender": null, "authorTypes": [ { "name": "DEFAULT" } ], "cover": null } ], "tagIds": [ { "commonCateId": null, "id": 358242, // 标签id "title": "饼", // 标签名称 "alias": null, "description": null, "isOnline": null, "type": "program", "tagGroup": { "id": 8, // 标签组id "groupName": "测试1", // 标签组名称 "desc": null } } ], "ingredient": [ // 食材 { "name": "糯米粉", // 名称 "weight": "40克" // 用量 }, { "name": "热开水", "weight": "146克" }, { "name": "生粉", "weight": "20克" }, { "name": "植物油", "weight": "2汤匙" }, { "name": "澄粉", "weight": "150克" }, { "name": "糖粉", "weight": "20克" } ], "online": { "name": "ONLINE" }, "copyright": { "name": "YES" }, "publishTime": "2015-11-12T23:54:11.000Z" } ] }, "statusCode": "200" } }
获取云食谱详情步骤列表接口
mtop.alibaba.aicloud.recipe.queryStepsByRecipeIdV2
参数
名称 | 参数类型 | 是否必须 | 描述 |
contentRecipeId | array | 是 | 食谱Id |
示例
// 调用示例 AI.aiRequestMtopProxy({ api: 'mtop.alibaba.aicloud.recipe.queryStepsByRecipeIdV2', data: { contentRecipeId: 779712, params: JSON.stringify({ isProductData: 2 // 2 是线上环境 非2 是预发环境 (默认非2) }) } }).then((res) => { console.log('返回信息', res); }).catch((res) => { console.log('失败返回', res); }); // 返回数据 { "api": "mtop.alibaba.aicloud.recipe.queryStepsByRecipeIdV2", "v": "1.0", "ret": [ "SUCCESS::调用成功" ], "data": { "success": "true", "msgCode": "调用成功!", "msgInfo": "SUCCESS", "model": { "totalSize": 9, "currentPageNum": 0, "pageSize": 0, "message": "调用成功!", "retCode": 200, "success": true, "data": [ { "id": 6455563, //菜谱步骤内部id "recipeId": 779712, //菜谱id "batchId": null, //批次号 "name": "1", //菜谱名称 "source": "xiachufang", //菜谱来源 "rawId": "1", //三方菜谱步骤id "description": "将所有粉类过筛与糖粉混合", //菜谱步骤描述 "orderIndex": 1, //菜谱步骤顺序 "audioUrl": "将所有粉类过筛与糖粉混合", //菜谱音频地址 没有音频方文字 "extendInfo": "{\"data_version\":\"2\"}",//扩展信息 "tips": null, //步骤小贴士 "recipeRawId": "100591900", //菜谱三方id "tipsAudioUrl": null, "operation": null, "coverUrl": { //菜谱封面 "img": "https://aicontent.alibabausercontent.com/image-pre/732/732/c625fa544601221f106b905aa69e88e9.webp!medium", //默认封面 "large": "https://aicontent.alibabausercontent.com/image-pre/732/732/c625fa544601221f106b905aa69e88e9.webp!large", //大图 "mediam": null, "medium": "https://aicontent.alibabausercontent.com/image-pre/732/732/c625fa544601221f106b905aa69e88e9.webp!medium",//中图 "small": "https://aicontent.alibabausercontent.com/image-pre/732/732/c625fa544601221f106b905aa69e88e9.webp!small"//小图 }, "videoUrl": {//菜谱步骤视频 "cover" : {//封面 "img" : "https://aicontent.alibabausercontent.com/image/732/c4c75437005237ab974a7083bed6e348.webp!medium", "large" : "", "mediam" : "", "medium" : "", "small" : "" }, "defaultUrl" : "",//默认连接 "height" : 0, "high" : "", "standard" : "", "ultra" : "", "width" : 0 } } ] }, "statusCode": "200" } }
长链接消息推送
AI.deviceStatusChange({ recipeCallback: resp => { console.error('长链接数据返回', resp) }, errorCallback: (error) => { console.log('stateChange ERROR:', error) } }); // 长链接数据返回 { \"traceId\": \"1234567890abcdefghijkl0123456789\", // 追踪id \"timestamp\": 1547714598977, // 时间戳 \"deviceId\": \"456A23FBEB27EDCF4B945094FD92AB0B\", // 设备Id \"domain\": 1, // 领域:1食谱 \"payload\": { // 领域参数 \"contentRecipeId\": 100, // 内容食谱id \"currentContentRecipeStepId\": 9000, // 当前内容食谱步骤id \"runStatus\": 2, // 运行状态,0 停止 1 运行 2 暂停 3 食谱完成 4 中断暂停 \"timeLeftTotal\": 10, // 剩余时间总时间,单位秒 \"totalTime\": 180, // 总时间,单位秒 \"productName\": "破壁机", // 产品名称 \"productKey\": \"6001\", // 产品key \"controlApiName\": \"alibaba.ailabs.iot.saas.devicecontrol\", // 控制接口名 \"deviceStatusApiName\": \"alibaba.ailabs.iot.saas.deviceStatus\" // 设备状态接口名 \"businessRecipeId\": 100, // 行业食谱id \"deviceStatus\": {\"name\":\"start/开始\",\"value\":1}, // 设备状态 \"interruptErrorInfo\": {\"code\": 302007,\"message\":\"设备处于离线状态\"} // 中断错误码 } }
如下图:云食谱相关长链接返回数据
// 在store/modules/public.js 找到 deviceStatusChange 方法,加上 recipe 逻辑 AI.deviceStatusChange({ callback: resp => { console.log('长链接返回的设备状态:', Object.assign({}, resp.model)); if (resp.recipe) { console.error('recipe', resp) // 云食谱返回数据 // 注:当云食谱的长链接推送过来,返回的数据在 resp.recipe return } // 返回的设备状态,是在这个 resp.model 里面的, }, errorCallback: (error) => { console.log('stateChange ERROR:', error) } });
获取蓝牙连接状态
AI.getMeshConnestStatus() // 获取蓝牙连接状态 false 未连接 true 已连接
获取音箱列表信息
// 获取列表信息 可根据返回的音箱列表中的 online 判断音箱是否在线 AI.getListDeviceBaseInfoWithStatus().then((res) => { console.log('返回信息', res); }).catch((res) => { console.log('失败返回', res); });
云食谱控制 mesh 设备
// 注:controlInfo 是 调用了 "command":"deviceStart" 获取到的数据 // mtop.alibaba.aicloud.recipe.businessDeviceControl // 调用示例 AI.controlMeshDevice({ compareParameters: controlInfo.sigmesh[0].compareParameters, action: controlInfo.sigmesh[0].action, uuid: controlInfo.sigmesh[0].uuid, device: controlInfo.sigmesh[0].device || {} }).then(resp => { AI.cabinet.GenieVue.$toast({ text: 'controlMeshDevice接口成功发送请求' }) console.log('成功发送请求:' + JSON.stringify(result)) }).catch(err => { AI.cabinet.GenieVue.$toast({ text: 'controlMeshDevice接口请求发送失败' }) console.log('请求发送失败:' + JSON.stringify(err)) })
实战示例
// 启动云食谱 startRecipe() { // 调用示例 AI.aiRequestMtopProxy({ api: 'mtop.alibaba.aicloud.recipe.businessDeviceControl', data: { devId: AI.devId, productKey: AI.productKey, params: JSON.stringify({ openAccountId: "0yl8oK0WFDBwEheQxSMD4g==", controlApiName: "alibaba.ailabs.iot.saas.devicecontrol", releaseStatus: 1, releaseVersion: null, domain: 1, payload: JSON.stringify({"businessRecipeId": this.businessRecipeId || 567,"command":"deviceStart", "pushMethod": 1}) }) } }).then((res) => { console.log('返回信息', res); try { window.controlInfo = res.data.model.extentions.controlModel[0]; AI.cabinet.GenieVue.$toast({ text: '启动云食谱成功' + res.data.msgInfo }) } catch (error) { window.controlInfo = {} AI.cabinet.GenieVue.$toast({ text: '启动云食谱失败' + res.data.msgInfo }) } }).catch((res) => { AI.cabinet.GenieVue.$toast({ text: '启动云食谱失败:' + res.data.msgInfo }) console.log('失败返回', res); }); }, // 停止云食谱 stopRecipe() { // 调用示例 AI.aiRequestMtopProxy({ api: 'mtop.alibaba.aicloud.recipe.businessDeviceControl', data: { devId: AI.devId, productKey: AI.productKey, params: JSON.stringify({ openAccountId: "0yl8oK0WFDBwEheQxSMD4g==", controlApiName: "alibaba.ailabs.iot.saas.devicecontrol", releaseStatus: 1, releaseVersion: null, domain: 1, payload: JSON.stringify({"businessRecipeId": this.businessRecipeId || 567,"command":"deviceStop", "pushMethod": 1}) }) } }).then((res) => { AI.cabinet.GenieVue.$toast({ text: '停止云食谱成功' + res.data.msgInfo }) console.log('返回信息', res); }).catch((res) => { AI.cabinet.GenieVue.$toast({ text: '停止云食谱失败' + res.data.msgInfo }) console.log('失败返回', res); }); }, // 云食谱控制mesh设备 controlMeshDevice() { console.log('window.controlInfo', window.controlInfo) if (!AI.cabinet.windvaneIsAvailable()) return console.log('请在天猫精灵app上调用controlMeshDevice方法') try { AI.controlMeshDevice({ compareParameters: window.controlInfo.sigmesh[0].compareParameters, action: window.controlInfo.sigmesh[0].action, uuid: window.controlInfo.sigmesh[0].uuid, device: window.controlInfo.sigmesh[0].device || {} }).then(resp => { AI.cabinet.GenieVue.$toast({ text: 'controlMeshDevice接口成功发送请求' }) console.log('成功发送请求:' + JSON.stringify(result)) }).catch(err => { AI.cabinet.GenieVue.$toast({ text: 'controlMeshDevice接口请求发送失败' }) console.log('请求发送失败:' + JSON.stringify(err)) }) } catch (error) { console.error('控制mesh设备了') } },