Outlook Web 插件:有两个 DetectedEntity 不适用于上下文检测

Outlook Web Add-in: Having two DetectedEntity doesn't work for contextual detection

在同一个 outlook web 插件中,我试图添加两个具有不同正则表达式的不同上下文检测。 (每个 RegEx 规则匹配项都有自己的源位置。)

然而,它不起作用。 当前行为是第一个 DetectedEntity 被激活。然而,其他人 不是。

我想知道这是否是上下文检测的局限性。 如果没有,有人可以提供任何示例来检测到超过 1 个实体吗?

这是我的清单:

....
<Hosts>
    <Host xsi:type="MailHost">
      <DesktopFormFactor>
        <!-- DetectedEntity -->
        <ExtensionPoint xsi:type="DetectedEntity">
          <Label resid="ContextLabel1" />
          <SourceLocation resid="DetectedURL1" />
          <Rule xsi:type="RuleCollection" Mode="And">
            <Rule xsi:type="ItemIs" ItemType="Message" />
            <Rule xsi:type="ItemHasRegularExpressionMatch" RegExName="GUID" RegExValue="[0-9A-Fa-f]{8}[-][0-9A-Fa-f]{4}[-][0-9A-Fa-f]{4}[-][0-9A-Fa-f]{4}[-][0-9A-Fa-f]{12}" PropertyName="BodyAsPlaintext" />
          </Rule>
        </ExtensionPoint>
        <ExtensionPoint xsi:type="DetectedEntity">
          <Label resid="ContextLabel2" />
          <SourceLocation resid="DetectedURL2" />
          <Rule xsi:type="RuleCollection" Mode="And">
            <Rule xsi:type="ItemIs" ItemType="Message" />
            <Rule xsi:type="ItemHasRegularExpressionMatch" RegExName="AnotherRegEx" RegExValue="\(Test:.*\)" PropertyName="BodyAsPlaintext" />
          </Rule>
        </ExtensionPoint>
      </DesktopFormFactor>
    </Host>
  </Hosts>
....

这是上下文激活的限制。我建议采取两个步骤来解决这个问题。

首先,可以使用 Or 规则将两个 And 规则组合成一个检测到的实体:

<Rule xsi:type="RuleCollection" Mode="Or">
  <Rule xsi:type="RuleCollection" Mode="And">
    <!-- Additional rules -->
  </Rule>
  <Rule xsi:type="RuleCollection" Mode="And">
    <!-- Additional rules -->
  </Rule>
</Rule>

其次,虽然两个正则表达式将启动相同的源位置 URL,但在 JavaScript 中,可以通过 [=12] 判断用户选择哪个表达式来启动加载项=].此 API 与要求集 1.6 中的 DetectedEntity 扩展点一起引入。

getSelectedRegExMatches returns 键和值以指示选择了哪个表达式和匹配项。如果它们重叠,则可能会返回多个匹配项。文档中有一个示例,但按照您的示例,返回的值将如下所示:

{
  'AnotherRegEx': ['Test: match'],
  'GUID': []
}