在我的actions.xml文件中,我可以使用<entity-set>
标签来提供意图参数的清单。对于每个<entity>
,文档指示我可以为identifier
或url
指定一个值。 identifier
和url
有什么区别?如果我使用<parameter-mapping>
,为什么需要一个identifier
标签,但如果我使用url
,为什么不需要标签?
答案 0 :(得分:3)
关键区别在于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说“ hi”,则解析的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
。