[英]google smart home trait-Fanspeed- speed_synonym doesn't work
我嘗試使用 codelab 中的示例代碼和修改后的設備類型進行練習。 當我嘗試將風扇設備添加到 google 智能家居應用程序時,我收到了錯誤響應。
例如:(問:設置風扇速度低)(回應:OK,descreasing風扇轉速speedslow)
app.onSync(async (body, headers) => {
console.log('onSync');
return {
requestId: body.requestId,
payload: {
agentUserId: agentId,
devices: [{
id: 'fan',
type: 'action.devices.types.FAN',
traits: [
'action.devices.traits.OnOff',
'action.devices.traits.FanSpeed',
//'action.devices.traits.Mode',
],
name: {
name: 'Fan',
},
deviceInfo: {
manufacturer: 'AAA',
model: 'BBB-Fan1',
hwVersion: '1.0',
swVersion: '1.0.1',
},
willReportState: true,
attributes: {
availableFanSpeeds: {
speeds: [{
speed_name: 'Low',
speed_values: [{
speed_synonym: ['speedslow','speedlow','speedsmall','slow','low','small','minimum'],
lang: 'en'
}]
},{
speed_name: 'Medium',
speed_values: [{
speed_synonym: ['medium','speed medium'],
lang: 'en'
}]
},{
speed_name: 'High',
speed_values: [{
speed_synonym: ['speed fast','speed high','speed big','fast','high','big','maximum'],
lang: 'en'
}]
}],
ordered: true
},
reversible: true,
Q1: 'speedslow' 是我在 speed_name 'Low' 下面的 speed_synonym。 我認為它需要響應“好的,將風扇速度降低到低”之類的答案。對嗎?
Q2:在traits頁面中,它不支持中文。 我發現我可以使用一些中文詞來控制設備行為,例如通過谷歌助手應用程序以中文顯示“打開風扇”。 但是我也發現我不能用一些中文詞,比如“設置風扇速度為低”來改變我的設備狀態。所以好像不支持中文吧?
關於您的問題,我認為您不會收到錯誤響應。 availableFanSpeeds
工作方式是為每種模式創建一個key
,並為適合該模式的每種語言創建一組synonyms
。 因此, speed_name
"Low" 旨在在您支持的每種語言中普遍使用。 這意味着平台不一定在任何地方都使用“低”鍵。
在法語中,它會說:
好的,diminution de la vitesse du ventilateur à low
這對法國用戶來說聽起來很奇怪。 因此,使用了“同義詞”字段,該字段被設計為在每種語言中表示相同事物的單詞數組。 使用同義詞數組的第一個元素可用於創建更好的本地化輸出。
該文檔不顯示對中文的支持,但即使支持,您也需要創建第二個數組來顯示該語言中特定風扇速度的同義詞。 平台不會為您翻譯這些密鑰,應為每種語言提供它們。 這允許您提供可能是諸如“low”之類的常見詞以及任何特定於設備的名稱(例如可能無法翻譯的“Not Fast™ mode”)的值。
您必須修改數組以添加新的語言代碼。 下面我添加法語的同義詞。
speeds: [{
speed_name: 'Low',
speed_values: [{
speed_synonym: ['speedslow','speedlow','speedsmall','slow','low','small','minimum'],
lang: 'en'
}, {
speed_synonym: ['faible', 'petite', 'petit'],
lang: 'fr'
}]
},
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.