Что такое {@url} в шаблонах URL действий приложения action.xml? - PullRequest
2 голосов
/ 09 мая 2019

В моем файле actions.xml я могу предоставить инвентарь для параметров своего намерения, используя теги <entity-set>. Для каждого <entity> документы указывают, что я могу указать значение для identifier или url. В чем разница между identifier и url? Зачем мне нужен тег <parameter-mapping>, если я использую identifier, а не если я использую url?

1 Ответ

3 голосов
/ 09 мая 2019

Ключевым отличием является то, что значения identifier экранированы URL. Например:

<intent name="actions.intent.SOME_INTENT">
  <parameter name="param.name">
    <entity-set-reference entitySetId="identifier_entity_set">
  </parameter>
  <fulfillment urlTemplate="https://app.com/{param_value}">
    <parameter-mapping intentParameter="param.name" urlParameter="param_value" />
  </fulfillment>
</intent>
<entity-set entitySetId="identifier_entity_set">
  <entity identifier="escaped/url/path" name="hi">
</entity-set>

Если пользователь говорит «привет» для param.name, разрешенный urlTemplate будет: https://app.com/escaped%2Furl%2Fpath.

<intent name="actions.intent.SOME_INTENT">
  <parameter name="param.name">
    <entity-set-reference entitySetId="url_entity_set">
  </parameter>
</intent>
  <fulfillment urlTemplate="{@url}" />
<entity-set entitySetId="url_entity_set">
  <entity url="https://app.com/not/esacaped/url/path" name="bye">
</entity-set>

Если пользователь говорит «пока» для param.name, разрешенный шаблон urlTemplate будет: https://app.com/not/esacaped/url/path.

Также обратите внимание, что если в вашем urlTemplate есть {@url}, вы не должны включать <parameter-mapping> для него; предполагается, что у вас есть ровно один <entity-set> со значениями url.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...