Ключевым отличием является то, что значения 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
.