我尝试使用codelab中的示例代码和修改后的设备类型来实现实际操作。当我试图添加一个风扇设备到谷歌智能家居应用程序,我得到了一个错误的反应。
例:(问:把风扇设置为低速)(响应:好,把风扇速度降到慢速。)
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:“速度慢”是我的speed_synonym在speed_name 'Low‘下面。我想它应该回答‘好的,把风扇的速度降到低’,对吗?
Q2:在特征页中,它不支持中文。我发现我可以用一些中文单词来控制设备的行为,比如通过google助手应用程序来控制中文中的“打开风扇”。但我也发现,我不能用一些像“设定风扇速度低”这样的中文单词来改变我的设备state.So,似乎中文不支持对吧?
发布于 2020-01-21 16:15:56
关于你的问题,我不相信你得到了错误的回应。availableFanSpeeds的工作方式是为每种模式创建一个key,并为适合该模式的每种语言创建一组synonyms。因此,speed_name "Low“意味着在您支持的每种语言中都会普遍使用。这意味着平台不一定能在任何地方使用“低”键。
在法语中,它会说:
好的,这是一个很小的问题。
对一个法国用户来说这听起来很奇怪。因此,使用了“同义词”字段,该字段被设计为一组在每种语言中都表示相同意思的单词。使用同义词数组的第一个元素可以创建更好的本地化输出。
文档并不表示对中文的支持,但即使支持中文,也需要创建第二个数组来显示该语言中特定风扇速度的同义词。该平台不为您翻译这些密钥,应该为每种语言提供它们。这允许您提供一些值,这些值可能是像"low“这样的常用单词,但也可以提供任何特定于设备的名称,比如”names模式“,这些名称可能是不可翻译的。
您必须修改数组以添加新的语言代码。我在下面添加法语的同义词。
speeds: [{
speed_name: 'Low',
speed_values: [{
speed_synonym: ['speedslow','speedlow','speedsmall','slow','low','small','minimum'],
lang: 'en'
}, {
speed_synonym: ['faible', 'petite', 'petit'],
lang: 'fr'
}]
},https://stackoverflow.com/questions/59835962
复制相似问题