Как получить аргументы правильного типа в Google Actions SDK?

API действий Google, похоже, находит правильный шаблон в моем намерении и привязывается к нужному типу, но не возвращает данные проанализированного типа. Например, если у меня есть намерение, определенное ниже в файле action.json:

   {
     "description": "",
      "initialTrigger": {
        "intent": "RepeatIntent",
        "queryPatterns": [
          {
            "queryPattern": "say $SchemaOrg_Number:mynumber"
          },
          {
            "queryPattern": "say $SchemaOrg_Date:mydate"
          },
          {
            "queryPattern": "say $SchemaOrg_Time:mytime"
          }
        ]
      },
      "httpExecution": {
        "url": "https://myurl/repeat"
      }
    }

и я ввожу в симулятор "в моем действии, скажем, завтра", я получаю следующие аргументы:

"arguments": [
    {
        "name": "mydate",
        "raw_text": "tomorrow",
        "text_value": "tomorrow"
    },
    {
        "name": "trigger_query",
        "raw_text": "say tomorrow",
        "text_value": "say tomorrow"
    }
]

Обратите внимание, что SDK действий правильно идентифицировал "завтра" как тип "$SchemaOrg_Date" и привязал его к переменной mydate, однако он не вернул элемент "date_value" в возвращаемом json, как указано. в документации. Я ожидал, что элемент «date_value» будет содержать проанализированную структуру даты (согласно документу).

То же самое верно и для чисел, хотя они ведут себя немного иначе. Например, если я использую фразу "в моем действии скажем пятьдесят", я получу следующие аргументы:

"arguments": [
    {
        "name": "mynumber",
        "raw_text": "50",
        "text_value": "50"
    },
    {
        "name": "trigger_query",
        "raw_text": "say fifty",
        "text_value": "say fifty"
    }
]

Обратите внимание, что $SchemaOrg_Number было распознано, и «пятьдесят» было правильно проанализировано до «50», но int_value не было заполнено в аргументе json согласно документации.

Google активно анализирует эти сложные типы и задокументировал, что они должны быть возвращены, поэтому я не хочу заниматься их разбором самостоятельно. Есть мысли, будет ли это исправлено в ближайшее время?


person Scott Daniel    schedule 26.01.2017    source источник


Ответы (1)


Пакет SDK для действий не поддерживает NLU для действий. Вы должны использовать свой собственный NLU. Если у вас нет собственного NLU, мы рекомендуем использовать API.AI.

person Leon Nicholls    schedule 26.01.2017
comment
Я видел тот же ответ, опубликованный в другом месте, но он не соответствует документации Google. Могу ли я предположить, учитывая ваш титул, что ваш ответ представляет собой официальную позицию Google? Будет ли документация обновлена, чтобы отражать фактическую работу API? Кажется, половина обработки НЛП уже выполняется Google, но результатов просто нет. Я разрабатываю фреймворк (в Go) и не хочу дублировать функциональность, которую Google может поддерживать, поэтому любые разъяснения будут действительно полезны. Спасибо, - person Scott Daniel; 27.01.2017
comment
Насколько я знаю, документы верны. Можете ли вы указать, где вы считаете, что это несовместимо. - person Leon Nicholls; 27.01.2017
comment
Леон, спасибо за ответ. См. раздел «Аргументы» справочника по HTTP-запросу developers.google.com/actions/reference. /conversation#Inputs Документы ссылаются на int_value, bool_value, date_value, time_value и location_value и говорят, что они должны быть возвращены, когда встречается соответствующее значение $SchemaOrg_XXXXX. Они никогда не заполняются в JSON (см. мой вопрос выше). Типы указаны правильно, поэтому Google занимается НЛП, но фактические значения никогда не предоставляются. Мне нужно понять, если это по дизайну. - person Scott Daniel; 28.01.2017
comment
И raw_text, и text_value будут поддерживаться в дальнейшем, верно? Не только raw_text? - person Lawrence Kesteloot; 02.02.2017