推荐场景

更新时间:2024-07-18 06:10:56下载pdf

推荐场景 通过场景服务连接设备和用户,赋予设备场景化能力。场景推荐主要包括获取推荐场景列表、获取设备的推荐场景列表、获取推荐场景详情、移除和添加推荐场景在内的相关功能。有关场景推荐业务的介绍,参考 OEM App 场景推荐

获取推荐场景

接口说明

获取推荐场景列表。v5.10.0 及以上版本 SDK 支持该接口。

fun getUnifiedRecommendAll(                          
    relationId: Long,                                
    source: String,                                  
    size: Int = 10,                                  
    withAdded: Boolean = false,                      
    devId: String?,                                  
    recommendSource: String,                         
    callback: IResultCallback<List<RecommendScene>?>?
)                                                    

参数说明

参数 说明
relationId 家庭 ID
source 接口调用来源,目前固定为 TAB
size 可选参数:推荐场景列表的数量。不传默认为 10 条
withAdded 可选参数:是否需要返回已添加的推荐场景。不传默认为 false
devId 可选参数:设备 ID。不需要可传 null
recommendSource 需检索的推荐类型。例如,linkage,energy,warning,用逗号分隔
callback 回调

其中,RecommendScene 的主要属性定义如下:

字段 类型 描述
id Long 推荐场景 ID
recommendId String 推荐场景 ID,推荐使用 recommendId
matchType Int 条件匹配模式:
  • 1:满足所有
  • 0:满足其一
ownerId String 家庭 ID
name String 场景名称
coverIcon String 存储场景图标的 URL
background String 背景图
displayColor String 显示的背景色
recomDescription String 场景推荐描述
recomCoefficient Int 场景推荐系数
hotCount String 推荐热点值
ruleGenre Int 联动类型
conditions List<SceneCondition> 场景的条件列表
actions List<SceneAction> 场景的动作列表

示例代码

ThingHomeSdk.getSceneServiceInstance().recommendService().getUnifiedRecommendAll(
   relationId,                                                     
    "TAB",                                                                       
    10,                                                                          
    false,                                                                       
    null,                                                                        
    "linkage,energy,warning",                                                    
    object : IResultCallback<List<RecommendScene>?> {                          
        override fun onSuccess(result: List<RecommendScene>?) {                  
                                                                                 
        }                                                                        
                                                           
        override fun onError(errorCode: String?, errorMessage: String?) {        
                                                                  
        }                                                                        
    })                                                                            

获取设备的推荐场景

接口说明

获取设备相关的推荐场景列表。v3.29.0 及以上版本 SDK 支持该接口。

fun getRecommendsByDevice(
    relationId: Long,
    deviceId: String,
    size: Int,
    callback: IResultCallback<List<RecommendScene>?>?
)

参数说明

参数 说明
relationId 家庭 ID
deviceId 设备 ID
size 推荐场景的数量。关于数量的限制,参考 场景推荐规则
callback 回调

示例代码

  • v3.34.5 及以上版本 SDK 调用示例:

    ThingHomeSdk.getSceneServiceInstance().recommendService().getRecommendsByDevice(
        relationId, devId, 3,                                                       
        object : IResultCallback<List<RecommendScene>?> {                         
            override fun onSuccess(result: List<RecommendScene>?) {                 
                                                                                
            }                                                                       
            override fun onError(errorCode: String?, errorMessage: String?) {       
                                                                                
            }                                                                       
        })                                                                           
    
  • v3.34.5 以下版本 SDK 调用示例:

    TuyaHomeSdk.getSceneManagerInstance().getRecommendSceneListByDev(homeId, devId, 3, new ITuyaResultCallback<List<SceneBean>>() {
        @Override                                                                                                                  
        public void onSuccess(List<SceneBean> result) {                                                                            
                                                                                                                               
        }                                                                                                                          
                                                                                                                               
        @Override                                                                                                                  
        public void onError(String errorCode, String errorMessage) {                                                               
                                                                                                                               
        }
    });
    

批量获取设备的推荐场景(支持节能和告警推荐)

接口说明

批量获取设备相关推荐场景,支持节能、告警等推荐类型。v5.10.0 及以上版本 SDK 支持该接口。

fun requestRecommendSceneWithDevList(
    relationId: Long,
    devIds: String,
    from: String? = null,
    callback: IResultCallback<DeviceRecommendScene?>?
)

参数说明

参数 说明
relationId 家庭 ID
devIds 设备 ID 列表,以逗号分隔。例如,"6cda1ca75a5a768f5czn9i,6cda1ca75a5a768f5czn9b"
from 可选参数:请求来源。不传默认为 null
callback 回调

其中,DeviceRecommendScene 的类型是一个 Map 结构,key 是设备 ID,valueList<RecommendSceneData>,其中 RecommendSceneData 主要属性定义如下:

字段 类型 描述
recommendId String 推荐 ID
libraryId String 模板 ID
name String 场景名称
jumpType String 跳转类型
jumpUrl String 跳转地址
recommendSource String 推荐来源
  • energy:节能
  • linkage:场景推荐
  • warning:告警
background String 背景图
displayColor String 纯背景色

示例代码

ThingHomeSdk.getSceneServiceInstance().recommendService().requestRecommendSceneWithDevList(relationId, devIds, null,
    object : IResultCallback<DeviceRecommendScene?> {                                                               
        override fun onSuccess(result: DeviceRecommendScene?) {                                                     
                                                                                               
        }                                                                                                           
                                                                                        
        override fun onError(errorCode: String?, errorMessage: String?) {                                           
                                                                                             
        }                                                                                                           
    })                                                                                                               

批量获取设备的推荐场景

接口说明

批量获取设备相关推荐场景。v3.34.5 及以上版本 SDK 支持该接口。

fun requestRecommendSceneWithDeviceIds(
    relationId: Long,
    devIds: String,
    source: Int,
    callback: IResultCallback<ArrayList<RecommendPlainScene?>?>
)

参数说明

参数 说明
relationId 家庭 ID
devIds 设备 ID 列表,以逗号分隔。例如,"6cda1ca75a5a768f5czn9i,6cda1ca75a5a768f5czn9b"
source 来源
  • 1:表示来自设备列表
  • 2:表示来自设备详情,该值尚未起效
callback 回调

示例代码

ThingHomeSdk.getSceneServiceInstance().recommendService().requestRecommendSceneWithDeviceIds(relationId, devIds, 1,
            object : IResultCallback<ArrayList<RecommendPlainScene?>?> {
                override fun onSuccess(result: ArrayList<RecommendPlainScene?>?) {
                  
                }
                override fun onError(errorCode: String?, errorMessage: String?) {
                  
                }
    })

获取推荐场景详情

接口说明

获取推荐场景详细数据。v3.34.5 及以上版本 SDK 支持该接口。

fun requestRecommendDetail(
  relationId: Long,
  sceneId: String,
  callback: IResultCallback<RecommendScene?>?
)

参数说明

参数 说明
relationId 家庭 ID
sceneId 推荐场景 ID,即 RecommendScenerecommendId 字段
callback 回调

示例代码

ThingHomeSdk.getSceneServiceInstance().recommendService().requestRecommendDetail(
    relationId, recommendId,                                                     
    object : IResultCallback<RecommendScene?> {                                
        override fun onSuccess(result: RecommendScene?) {                        
                                                 
        }                                                                        
                                          
        override fun onError(errorCode: String?, errorMessage: String?) {        

        }                                                                        
    })                                                                            

添加推荐场景

接口说明

在推荐场景详情内,可以通过添加操作来将推荐场景保存为场景。

添加完成后,需要重新刷新推荐场景列表和普通场景列表。一旦推荐场景保存成普通场景后就不再推荐,同时普通场景列表多了一条记录。v3.21.0 及以上版本 SDK 支持该接口。

fun handleRecommend(                    
    relationId: Long,                   
    sceneId: String,                    
    action: String,                     
    sceneData: NormalScene?,            
    callback: IResultCallback<Boolean?>?
)                                       

参数说明

参数 说明
relationId 家庭 ID
sceneId 推荐场景 ID,即 RecommendScenerecommendId 字段
action 保存或添加(save)推荐场景
sceneData 编辑区的场景数据
callback 回调

示例代码

  • v3.34.5 及以上版本 SDK 调用示例:

    ThingHomeSdk.getSceneServiceInstance().recommendService().handleRecommend(
        relationId, sceneId, "save", normalScene,                             
        object : IResultCallback<Boolean?> {                                
            override fun onSuccess(result: Boolean?) {                        
                                                                              
            }                                                                 
                                                                              
            override fun onError(errorCode: String?, errorMessage: String?) { 
                                                                              
            }                                                                 
        })                                                                     
    
  • v3.34.5 以下版本 SDK 调用示例:

    final SceneBean bean = new SceneBean();                                                                                     
    bean.setActions(smartSceneBean.getActions());                                                                               
    bean.setBackground(smartSceneBean.getBackground());                                                                         
    bean.setCode(smartSceneBean.getCode());                                                                                     
    bean.setConditions(smartSceneBean.getConditions());                                                                         
    bean.setEnabled(smartSceneBean.isEnabled());                                                                                
    bean.setStickyOnTop(smartSceneBean.isTop());                                                                                
    bean.setId(smartSceneBean.getId());                                                                                         
    bean.setName(smartSceneBean.getName());                                                                                     
    bean.setMatchType(smartSceneBean.getMatchType());                                                                           
    bean.setBoundForPanel(smartSceneBean.isBoundForPanel());                                                                    
    bean.setPreConditions(smartSceneBean.getPreConditions());                                                                   
    bean.setNewLocalScene(smartSceneBean.isNewLocalScene());                                                                    
    bean.setLocalLinkage(smartSceneBean.isLocalLinkage());                                                                      
    bean.setStickyOnTop(smartSceneBean.isTop());                                                                                
    bean.setHotCount(smartSceneBean.getHotCount());                                                                             
    bean.setDisplayColor(smartSceneBean.getCoverColor());                                                                       
    bean.setCoverIcon(smartSceneBean.getCoverIcon());                                                                           
                                                                                                                            
    TuyaHomeSdk.getSceneManagerInstance().recommendSceneSave(homeId, Long.parseLong(bean.getId()), bean, new IResultCallback() {
        @Override                                                                                                               
        public void onError(String code, String error) {                                                                        
        }                                                                                                                       
                                                                                                                            
        @Override                                                                                                               
        public void onSuccess() {                                                                                               
        }                                                                                                                       
    });                                                                                                                          
    

移除推荐场景

接口说明

在推荐场景详情内,可以通过该接口将不感兴趣的推荐场景从推荐场景列表中移除。

移除成功后,需要重新刷新推荐场景列表,该推荐场景不再推荐。v3.21.0 及以上版本 SDK 支持该接口。

fun handleRecommend(                    
    relationId: Long,                   
    sceneId: String,                    
    action: String,                     
    sceneData: NormalScene?,            
    callback: IResultCallback<Boolean?>?
)                                       

参数说明

参数 说明
relationId 家庭 ID
sceneId 推荐场景 ID,即 RecommendScenerecommendId 字段
action 取消或者移除(remove)推荐场景
sceneData 编辑区的场景数据,可传参 null
callback 回调

示例代码

  • v3.34.5 及以上版本 SDK 调用示例:

    ThingHomeSdk.getSceneServiceInstance().recommendService().handleRecommend(
        relationId, sceneId, "remove", null,                                  
        object : IResultCallback<Boolean?> {                                
            override fun onSuccess(result: Boolean?) {                        
                                                                              
            }                                                                 
                                                                              
            override fun onError(errorCode: String?, errorMessage: String?) { 
                                                                              
            }                                                                 
        })                                                                     
    
  • v3.34.5 以下版本 SDK 调用示例:

    TuyaHomeSdk.getSceneManagerInstance().recommendSceneRemove(homeId, sceneId, null, new IResultCallback() {
        @Override                                                                                            
        public void onError(String code, String error) {                                                     
        }                                                                                                    
                                                                                                         
        @Override                                                                                            
        public void onSuccess() {                                                                            
        }                                                                                                    
    });                                                                                                       
    

对推荐场景不感兴趣

接口说明

在推荐场景详情内,将不感兴趣的推荐场景从推荐场景列表中移除。

移除成功后,需要重新刷新推荐场景列表,该推荐场景不再推荐。v5.5.0 及以上版本 SDK 支持该接口。

fun dislikeRecommend(
  relationId: Long,
  recommendId: String,
  recommendSource: String,
  callback: IResultCallback<Boolean>?
)

参数说明

参数 说明
relationId 家庭 ID
recommendId 推荐场景 ID,即 RecommendScenerecommendId 字段
recommendSource 推荐来源,即 RecommendScenerecommendSource 字段。例如,energy,或 linkage,又或 warning
callback 回调

示例代码

ThingHomeSdk.getSceneServiceInstance().recommendService().dislikeRecommend(
    relationId,                                                            
    recommendId, // 从推荐的场景模型中获取,RecommendScene.getRecommendId              
    "linkage", // 从推荐的场景模型中获取,RecommendScene.getRecommendSource            
    object : IResultCallback<Boolean> {                                    
        override fun onSuccess(result: Boolean) {                          

        }                                                                  

        override fun onError(errorCode: String?, errorMessage: String?) {  
                                                                           
        }                                                                  
    })