Поделиться через


Контекстные надстройки Outlook

Контекстные надстройки — это надстройки Outlook, которые активируются при наличии определенного текста в сообщении или сведениях о встрече. С помощью контекстных надстроек пользователь может инициировать задачи, связанные с почтовым элементом, не выходя из самого элемента. Например, контекстная надстройка может выбрать строку в тексте почтового элемента, который открывает надстройку предложения собрания.

Вы можете указать правила регулярных выражений, чтобы активировать контекстную надстройку при обнаружении совпадения в определенных полях сообщения. Контекстные надстройки активируются только в режиме чтения. Outlook не активирует контекстные надстройки, когда пользователь создает элемент. Существуют и другие сценарии, в которых Outlook не активирует надстройки. Дополнительные сведения см . в разделе Правила активации для надстроек Outlook.

Важно!

Контекстные надстройки Outlook на основе сущностей теперь сняты с учета. В качестве альтернативного решения реализуйте правила регулярных выражений в контекстной надстройке.

Настройка манифеста

Примечание.

Контекстные надстройки Outlook не поддерживаются, если надстройка использует унифицированный манифест для Microsoft 365.

XML-манифест контекстной надстройки должен содержать элемент ExtensionPoint с xsi:type атрибутом .DetectedEntity В элементе <ExtensionPoint> надстройка должна указать правило регулярного выражения с помощью элемента Rule с xsi:type атрибутом ItemHasRegularExpressionMatch.

В следующем примере надстройка активируется всякий раз, когда символ акции включается в текст текущего почтового элемента.

<ExtensionPoint xsi:type="DetectedEntity">
  <Label resid="Context.Label" />
  <SourceLocation resid="DetectedEntity.URL" />
  <Rule xsi:type="ItemHasRegularExpressionMatch" PropertyName="BodyAsPlaintext" RegExName="TickerSymbols" RegExValue="\b(NYSE|NASDAQ|AMEX):\s*[A-Za-z]+\b" />
</ExtensionPoint>

Поддерживаемые символы в правилах регулярных выражений

Outlook вычисляет регулярные выражения на основе правил интерпретатора JavaScript, используемых браузером или элементом управления webview на клиентском компьютере. Для краткости в этой статье используется слово browser для ссылки на элемент управления "браузер или веб-представление". Outlook поддерживает те же специальные знаки, что и все обработчики XML. Они перечислены в следующей таблице. Эти символы можно использовать в регулярном выражении, указав escape-последовательность соответствующего символа.

Знак Описание Escape-последовательность
" Двойная кавычка &quot;
& Амперсанд &amp;
' Апостроф &apos;
< Знак "меньше" &lt;
> Знак "больше" &gt;

Рекомендации по использованию регулярных выражений в правилах

При использовании регулярных выражений помните следующее.

  • Если указать ItemHasRegularExpressionMatch правило в тексте элемента, регулярное выражение должно дополнительно фильтровать текст и не пытаться вернуть весь текст элемента. Использование регулярного выражения, такого как .* попытка получить весь текст элемента, не всегда возвращает ожидаемые результаты.

  • Возвращаемый обычный текст может несколько отличаться в зависимости браузера. Если вы используете правило ItemHasRegularExpressionMatch с таким значением атрибута PropertyName: BodyAsPlaintext, проверьте свое регулярное выражение во всех поддерживаемых надстройкой браузерах.

    Так как в разных браузерах основной текст выбранного элемента считывается разными способами, ваше регулярное выражение должно учитывать мелкие различия, которые могут быть возвращены в составе основного текста. Например, браузеры могут возвращать разрывы строк по-разному. For more information, see W3C DOM Compatibility - HTML.

  • Html-текст элемента немного отличается от классического Outlook для Windows или Outlook на Mac и Outlook в Интернете, на мобильных устройствах или нового Outlook в Windows (предварительная версия). Будьте внимательны, задавая регулярные выражения.

  • В зависимости от клиента Outlook, типа устройства или свойства, к которому применяется регулярное выражение, существуют другие рекомендации и ограничения для каждого из клиентов, которые следует учитывать при разработке регулярных выражений в качестве правил активации. Дополнительные сведения см . в разделе Ограничения для активации и API JavaScript для надстроек Outlook.

Использование результатов регулярных выражений в коде JavaScript

В коде JavaScript надстройки можно получить совпадения с регулярным выражением, используя следующие методы для текущего элемента.

  • GetRegExMatches возвращает совпадения в текущем элементе для всех регулярных выражений ItemHasRegularExpressionMatch , указанных в правиле надстройки.

  • getRegExMatchesByName возвращает строки текущего элемента, соответствующие определенному регулярному выражению, указанному в правиле ItemHasRegularExpressionMatch надстройки.

  • getSelectedRegExMatches возвращает выделенные совпадения в текущем элементе для регулярного выражения, указанного в ItemHasRegularExpressionMatch правиле надстройки.

При оценке регулярных выражений соответствия возвращаются в надстройку в массиве. При использовании метода getRegExMatches идентификатор этого массива соответствует имени регулярного выражения.

Примечание.

Outlook не возвращает совпадения в определенном порядке в массиве. Кроме того, не следует предполагать, что совпадения возвращаются в одном и том же порядке в этом массиве, даже если вы запускаете одну и ту же надстройку на каждом из этих клиентов в одном и том же почтовом ящике.

Ниже приведен пример коллекции правил, содержащей ItemHasRegularExpressionMatch правило с регулярным выражением с именем videoURL.

<Rule xsi:type="RuleCollection" Mode="And">
    <Rule xsi:type="ItemIs" ItemType="Message"/>
    <Rule xsi:type="ItemHasRegularExpressionMatch" RegExName="videoURL" RegExValue="http://www\.youtube\.com/watch\?v=[a-zA-Z0-9_-]{11}" PropertyName="BodyAsPlaintext"/>
</Rule>

Затем getRegExMatches метод вызывается в текущем сообщении для задания переменной videos результатов указанного ItemHasRegularExpressionMatch правила.

const videos = Office.context.mailbox.item.getRegExMatches().videoURL;

См. также