Почему я не могу создать собственное намерение, запрашивающее 2 текста?

У меня есть индивидуальное намерение получить 2 текстовых параметра от Google Assistant. Но Ассистент не запускает мое приложение. Я пробовал только с одним, и он работает правильно. Проблема в том, что я добавляю второй текстовый параметр. Я пробовал использовать другой тип данных, и он работает. Например, если я прошу текст и номер, это будет хорошо. Если я прошу текст и время, это тоже сработает. НО, если я прошу текст и текст, то этого не произойдет. Любая помощь здесь, пожалуйста? Это мое намерение в файле actions.xml:

<action intentName="custom.actions.intent.MyName" queryPatterns="@array/MyExampleStrings">
   <!-- Define parameters -->
   <parameter name="textA" type="https://schema.org/Text" />
   <parameter name="textB" type="https://schema.org/Text" />

   <!-- Define fulfillment -->
   <fulfillment urlTemplate="https://my.site.com/{?FirstText,SecondText}">
      <parameter-mapping intentParameter="textA" urlParameter="FirstText" />
      <parameter-mapping intentParameter="textB" urlParameter="SecondText" />
   </fulfillment>
</action>

MyExampleStrings - это что-то вроде этого Bake $ textA с использованием $ textB, например Bake spaghetti with tomat.

Как я уже сказал, он работает с разными типами данных. В следующем примере я изменил второй текст на число, и он работает:

<action intentName="custom.actions.intent.MyName" queryPatterns="@array/MyExampleStrings">
   <!-- Define parameters -->
   <parameter name="textA" type="https://schema.org/Text" />
   <parameter name="textB" type="https://schema.org/Number" /> <--NUMBER!

   <!-- Define fulfillment -->
   <fulfillment urlTemplate="https://my.site.com/{?FirstText,SecondText}">
      <parameter-mapping intentParameter="textA" urlParameter="FirstText" />
      <parameter-mapping intentParameter="textB" urlParameter="SecondText" />
   </fulfillment>
</action>

В этом случае, если я скажу что-то вроде «Запекать спагетти с 4», это сработает. Почему у меня не может быть двух струн ??? Спасибо за вашу помощь


person Ton    schedule 02.11.2020    source источник
comment
Я не знаком с помощью Google, и это не решение, а обходной путь, который может сработать для вас, пока вы не найдете лучший вариант. Почему бы не отправить единый текст и не добавить внутри специальный разделитель? Например, spaghetti @ Tomatoes или что-то в этом роде, и как только вы получите текст в своей деятельности, просто разделите его этим символом и используйте значения.   -  person Dan Baruch    schedule 02.11.2020


Ответы (1)


Я только что попытался воспроизвести проблему, используя приведенный выше пример, но с моей стороны он работает так, как задумано. Оба поля включены как часть поля intent? .Data. Итак, в моем случае это выглядит так:

https://todo.myapp.com/custom-intents?FirstText=Example123&SecondText=Example222

Не могли бы вы подробнее рассказать, как вы получаете параметр запроса?

В качестве общей рекомендации оператор журнала в вашей функции onCreate в Activity должен содержать следующие сведения:

override fun onCreate(savedInstanceState: Bundle?) {
    Timber.tag(TAG).d("======= debugging data =========" + intent?.data)
}

person Diego    schedule 12.11.2020
comment
Вы проверяли это с помощью настоящего Google Assistant или с помощью инструмента тестирования действий приложения? Не получается только в настоящем Ассистенте. Я не могу сейчас дать вам журнал, но он будет выглядеть примерно так, как в следующем комментарии: - person Ton; 12.11.2020
comment
todo.myapp.com/custom-intents?FirstText=Example123%20with%20Example222&SecondText=Example222 - person Ton; 12.11.2020
comment
Понятно. Спасибо за разъяснение по поводу Ассистента. Верно, это известная проблема, и в настоящее время ее исправление продолжается. Я буду держать вас в курсе. - person Diego; 12.11.2020
comment
Спасибо. Как узнать, что это известная проблема? Это где-нибудь опубликовано? - person Ton; 13.11.2020
comment
Еще нет. Я работал в команде Assistant DevRel. Будет держать вас в курсе. - person Diego; 17.11.2020
comment
Большое спасибо, Диего. Что насчет этой проблемы? stackoverflow.com/q/64528702/1363087 Это тоже известная ошибка? - person Ton; 17.11.2020
comment
Не знаю. Посмотрим и на это. - person Diego; 17.11.2020
comment
@Diego, пожалуйста, проверьте эту проблему [stackoverflow.com/questions/65068572/ Является ли это проблемой Google конец или мы что-то упустили с нашей стороны. - person Maverick; 01.12.2020
comment
Это должно быть исправлено. Пожалуйста, попробуйте еще раз. @Rathish, команда изучает это. Следите за обновлениями и, пожалуйста, оставьте комментарий. Спасибо! - person Diego; 01.12.2020