Google умный дом черта-Fanspeed- Speed_synonym не работает - PullRequest
0 голосов
/ 21 января 2020

Я попытался использовать пример кода из codelab и изменил тип устройства для практики. Когда я попытался добавить устройство с вентилятором в приложение Google Smart Home, я получил сообщение об ошибке.

Пример: (спросить: установить низкую скорость вращения вентилятора) (ответ: ОК, уменьшение скорости вращения вентилятора до 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» - это мой синоним скорости ниже псевдонима «low». Я думаю, что нужно ответить на ответ типа «ОК, уменьшив скорость вращения вентилятора до низкого». Правильно?

Q2: На странице черты он не поддерживает китайский язык. Я обнаружил, что могу использовать некоторые китайские слова для управления поведением устройства, например «Открыть вентилятор» на китайском языке, через приложение google assistant. Но я также обнаружил, что не могу использовать некоторые китайские слова, такие как «Установить низкую скорость вращения вентилятора», чтобы изменить состояние моего устройства. Так что, похоже, китайский язык не поддерживает, верно?

1 Ответ

0 голосов
/ 21 января 2020

Что касается ваших вопросов, я не верю, что вы получаете сообщение об ошибке. Способ работы availableFanSpeeds заключается в создании key для каждого режима и набора synonyms для языка, подходящего для этого режима. Таким образом, speed_name "Низкий" предназначен для универсального использования на всех языках, которые вы поддерживаете. Это означает, что платформа не всегда может использовать ключ «Низкий» повсеместно.

На французском языке тогда будет сказано:

ОК, уменьшение значения - низкий уровень вентиляции - низкий уровень

Что бы звучало странно для французского пользователя. Таким образом, используется поле «синонимы», которое предназначено для набора слов, означающих одно и то же в каждом языке. Использование первого элемента массива синонимов может быть использовано для создания лучшего локализованного вывода.

Документация не показывает поддержку китайского, но даже если бы это было так, вам нужно было бы создать второй массив, который показывает синонимы для конкретной скорости вентилятора c на этом языке. Платформа не переводит эти ключи для вас, они должны быть предоставлены для каждого языка. Это позволяет вам указывать значения, которые могут быть общими словами, такими как «low», а также любыми именами устройств c, такими как «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'
  }]
},
...