Outlook アイテム内の文字列を既知のエンティティとして照合する

メッセージおよび会議出席依頼のアイテムを送信する前に、Exchange Server によりアイテムの内容が解析され、件名と本文から、電子メール アドレス、電話番号、URL など、Exchange にとっての既知のエンティティに似た文字列が特定され、スタンプが付けられます。 メッセージと会議出席依頼は、Exchange Server によって、既知のエンティティにスタンプが付けられた状態で、Outlook の受信トレイに配信されます。

重要

エンティティベースのコンテキスト Outlook アドインは、2024 年第 2 四半期に廃止される予定です。 この機能を廃止する作業は 5 月に開始され、6 月末まで継続されます。 6 月以降、コンテキスト アドインはメール アイテム内のエンティティを検出してタスクを実行できなくなります。 次の API も廃止されます。

中断の可能性を最小限に抑えるために、エンティティ ベースのコンテキスト アドインが廃止された後も、次の機能がサポートされます。

  • オンライン会議アドインによってアクティブ化される [会議に参加 ] ボタンの代替実装が開発されています。 エンティティベースのコンテキスト アドインのサポートが終了すると、オンライン会議アドインは自動的に別の実装に移行して [ 会議に参加 ] ボタンをアクティブ化します。
  • エンティティ ベースのコンテキスト アドインが廃止された後も、正規表現ルールは引き続きサポートされます。 代替ソリューションとして正規表現ルールを使用するように、コンテキスト アドインを更新することをお勧めします。 これらのルールを実装する方法のガイダンスについては、「 正規表現アクティブ化ルールを使用して Outlook アドインを表示する」を参照してください。

詳細については、「 エンティティ ベースのコンテキスト Outlook アドインの廃止」を参照してください。

Office JavaScript API を使用すると、特定の既知のエンティティと一致するこれらの文字列を取得して、さらに処理できます。 さらに、既知のエンティティをアドイン マニフェスト内のルールで指定して、ユーザーがそのエンティティと一致するものを含んだアイテムを表示したときに、Outlook がアドインをアクティブにするように設定することもできます。 その後で、エンティティと一致するものを抽出してアクションを実行することができます。

注:

ライセンス認証規則に依存する Outlook アドイン機能は、アドインで Microsoft 365 用の統合マニフェスト (プレビュー) を使用する場合はサポートされません。

選択されたメッセージや予定からこれらのインスタンスを特定したり抽出したりできるので便利です。 たとえば、Outlook のアドインとして電話番号の逆引き検索サービスを作成できます。 このアドインは、アイテムの件名や本文から電話番号に似た文字列を抽出して逆引き検索を行い、各電話番号の登録所有者を表示させることができます。

このトピックでは既知のエンティティ、既知のエンティティに基づくアクティブ化ルールの例、およびアクティブ化ルール内でエンティティが使用されているかどうかに関係なく、一致するエンティティを抽出する方法を紹介します。

既知のエンティティに対するサポート

Exchange Server は、ユーザーがメッセージや会議出席依頼アイテムを送信した後、それが受信者に配信される前に、アイテム内の既知のエンティティにスタンプを付けます。 そのため、Exchange 内のトランスポートを通過したアイテムだけにスタンプが付けられ、Outlook はユーザーがそのようなアイテムを表示中にそれらのスタンプに基づいてアドインをアクティブにすることができます。 しかし、ユーザーがアイテムを作成している間や、送信済みアイテム フォルダー内のアイテムを表示しているときは、そのアイテムがまだトランスポートを通過していないため、Outlook は既知のエンティティに基づいてアドインをアクティブにすることができません。

同様に、作成中または送信済みアイテム フォルダー内のアイテムはトランスポートを通過しておらず、スタンプが付けられていないため、既知のエンティティを抽出できません。 アクティブ化をサポートしているアイテムの種類の詳細については、「Outlook アドインのアクティブ化ルール」を参照してください。

次の表は、Exchange Server と Outlook でサポートされ、認識されるエンティティ (つまり、「既知のエンティティ」) と、各エンティティのインスタンスのオブジェクト タイプを一覧にしたものです。 これらのエンティティの 1 つとしての文字列の自然言語認識は、大量のデータに対してトレーニングを行った学習モデルに基づきます。 したがって、認識は決定論的ではありません。 認識に関する条件の詳細については、「 既知のエンティティを使用するためのヒント」を参照してください。

エンティティの種類 認識に関する条件 オブジェクトの種類
Address 米国の住所。 たとえば、"1234 メイン ストリート、レドモンド、WA 07722" などです。 一般に、住所を認識するには、米国の住所の構造に従う必要があり、ほとんどには街路番号、街路名、都市、州、郵便番号といった要素が存在します。 住所は 1 行または複数行で指定できます。 JavaScript String オブジェクト
連絡先 自然言語の認識による、人に関する情報の参照。 連絡先の認識は、状況によりさまざまな方法で行われます。 たとえば、メッセージの最後にある署名や、人の名前の近くに現れる電話番号、住所、メール アドレス、URL などの情報です。 Contact オブジェクト
EmailAddress SMTP メール アドレス。 JavaScript String オブジェクト
MeetingSuggestion イベントまたは会議への参照。 たとえば、Exchange では、次のテキストが会議の提案として認識されます。 MeetingSuggestion オブジェクト
PhoneNumber 米国の電話番号。 たとえば、(235) 555-0110 などです。 PhoneNumber オブジェクト
TaskSuggestion メールに含まれる実行可能な文。 たとえば、"スプレッドシートを更新してください" などです。 TaskSuggestion オブジェクト
Url ネットワーク ロケーションと Web リソースの識別子を明記した Web アドレス。 Exchange Serverは、Web アドレスのアクセス プロトコルを必要とせず、リンク テキストに埋め込まれている URL をエンティティのUrlインスタンスとして認識しません。 Exchange Serverは、次の例と一致します。www.youtube.com/user/officevideoshttps://www.youtube.com/user/officevideos JavaScript String オブジェクト

次の図では、Exchange Serverと Outlook がアドインの既知のエンティティをサポートする方法と、既知のエンティティでアドインが実行できる操作について説明します。 エンティティの利用方法について詳しくは、「 アドインでのエンティティの取得」と「 エンティティの存在に基づくアドインのアクティブ化」をご覧ください。

Outlook アドインでの既知のエンティティのサポートと使用。

エンティティを抽出するためのアクセス許可

JavaScript コードでエンティティを抽出したり、特定の既知のエンティティの存在に基づいてアドインをアクティブ化したりする場合は、アドイン マニフェストで適切なアクセス許可を要求しておきます。

既定の制限付きアクセス許可を指定すると、アドインで 、MeetingSuggestion、または TaskSuggestion エンティティをAddress抽出できます。 他のエンティティのいずれかを抽出するには、マニフェストで 読み取り項目読み取り/書き込みアイテム、または 読み取り/書き込みメールボックス のアクセス許可を指定します。

次の例では、マニフェストで 読み取り項目 のアクセス許可を要求します。

<Permissions>ReadItem</Permissions>

Outlook アドインのアクセス許可の詳細については、「Outlook アドインの アクセス許可について」を参照してください。

アドインでのエンティティの取得

ユーザーが表示しているアイテムの件名または本文に、Exchange と Outlook が既知のエンティティとして認識できる文字列が含まれている限り、これらのインスタンスはアドインで使用できます。既知のエンティティに基づいてアドインがアクティブ化されていない場合でも使用できます。 適切なアクセス許可を使用すると、 メソッドまたは getEntitiesByType メソッドを使用getEntitiesして、現在のメッセージまたは予定に存在する既知のエンティティを取得できます。

メソッドは getEntities 、アイテム内のすべての既知のエンティティを含む Entities オブジェクトの配列を返します。

特定の種類のエンティティに関心がある場合は、 メソッドを getEntitiesByType使用して、必要なエンティティのみの配列を返します。 EntityType 列挙型は抽出可能なすべての既知のエンティティの種類を表します。

を呼び出 getEntitiesした後、オブジェクトの対応するプロパティを Entities 使用して、エンティティ型のインスタンスの配列を取得できます。 エンティティの型により、配列内のインスタンスは単なる文字列であることも、特定のオブジェクトにマップできることもあります。

たとえば、前出の図のように、アイテムのアドレスを取得するには、getEntities().addresses[] により返される配列にアクセスします。 プロパティは Entities.addresses 、Outlook が郵便アドレスとして認識する文字列の配列を返します。 同様に、 プロパティは Entities.contacts 、Outlook が連絡先情報として認識するオブジェクトの Contact 配列を返します。 表 1 に、サポートされる各エンティティのインスタンスのオブジェクト型を示します。

以下の例では、メッセージ内で見つかった住所を取得する方法を示します。

// Get the address entities from the item.
const entities = Office.context.mailbox.item.getEntities();
// Check to make sure that address entities are present.
if (null != entities && null != entities.addresses && undefined != entities.addresses) {
   //Addresses are present, so use them here.
}

エンティティの存在に基づくアドインのアクティブ化

既知のエンティティを利用するもう 1 つの方法は、現在表示されているアイテムの件名または本文に 1 つまたは複数の種類のエンティティが存在するかどうかに基づいて Outlook にアドインをアクティブ化させる方法です。 これを行うには、アドイン マニフェストでルールを指定 ItemHasKnownEntity します。 EntityType 単純型は、ルールでサポートされるさまざまな種類の既知のエンティティをItemHasKnownEntity表します。 アドインがアクティブ化されたら、前のセクション「 アドインでのエンティティの取得」で説明したように、目的のエンティティのインスタンスを取得することもできます。

必要に応じて、ルールに正規表現を ItemHasKnownEntity 適用して、エンティティのインスタンスをさらにフィルター処理し、エンティティのインスタンスのサブセットでのみアドインをアクティブ化できます。 たとえば、"98" で始まるワシントン州の郵便番号を含むメッセージの中の街路住所エンティティを検出するフィルターを指定できます。 エンティティ インスタンスにフィルターを適用するには、ItemHasKnownEntity 型の 要素で Rule and FilterName 属性を使用RegExFilterします。

他のアクティブ化ルールと同様に、複数のルールを指定してアドインのルール コレクションを作成できます。 次の例では、ルールとルールの 2 つのルールに対して "AND" 操作をItemIsItemHasKnownEntity適用します。 このルール コレクションにより、現在のアイテムがメッセージである場合に、Outlook がそのアイテムの件名または本文から住所を認識すると、アドインがアクティブ化されます。

<Rule xsi:type="RuleCollection" Mode="And">
   <Rule xsi:type="ItemIs" ItemType="Message" />
   <Rule xsi:type="ItemHasKnownEntity" EntityType="Address" />
</Rule>

次の例では、現在の項目を使用 getEntitiesByType して、前の規則コレクションの結果に変数 addresses を設定します。

const addresses = Office.context.mailbox.item.getEntitiesByType(Office.MailboxEnums.EntityType.Address);

ItemHasKnownEntity の規則の例では、現在のアイテムの件名または本文に URL があり、文字列の大文字と小文字に関係なく、URL に "youtube" という文字列が含まれている場合は常にアドインをアクティブにします。

<Rule xsi:type="ItemHasKnownEntity" 
    EntityType="Url" 
    RegExFilter="youtube"
    FilterName="youtube"
    IgnoreCase="true"/>

次の例では、現在の項目を使用 getFilteredEntitiesByName(name) して、前の規則の正規表現に一致する結果の配列を取得する変数 videosItemHasKnownEntity 設定します。

const videos = Office.context.mailbox.item.getFilteredEntitiesByName(youtube);

既知のエンティティを使用するためのヒント

アドインで既知のエンティティを使用する場合に知っておくべきいくつかの事実と制限があります。 ルールを使用 ItemHasKnownEntity するかどうかに関係なく、既知のエンティティの一致を含むアイテムをユーザーが読み取るときにアドインがアクティブ化されている限り、次のことが適用されます。

  • 文字列が英語の場合にのみ、既知のエンティティである文字列を抽出できます。

  • アイテム本文の最初の 2,000 文字から既知のエンティティを抽出できます。2,000 を超える文字からは抽出できません。 このサイズ制限は、機能とパフォーマンスの必要性のバランスを取るのに役立ちます。これにより、大きなメッセージや予定内の既知のエンティティのインスタンスを解析して特定することで、Exchange Serverと Outlook が低下することはありません。 この制限は、アドインがルールを指定 ItemHasKnownEntity するかどうかとは無関係であることに注意してください。 アドインでこのような規則が使用されている場合は、このセクションの後半で Outlook on Windows と Mac のルール処理の制限にも注意してください。

  • メールボックスの所有者以外の誰かが計画した会議である予定からエンティティを抽出できます。 会議ではない予定表アイテムや、メールボックス所有者が編成した会議からエンティティを抽出することはできません。

  • 種類の MeetingSuggestion エンティティは、予定ではなくメッセージから抽出できます。

  • アイテム本文に明示的に存在する URL を抽出することはできますが、HTML のアイテム本文のハイパーリンク テキストに埋め込まれている URL を抽出することはできません。 明示的な ItemHasRegularExpressionMatch URL と埋め込み URL の両方を取得するには、代わりにルールを使用することを検討してください。 PropertyName として、および RegExValue として URL に一致する正規表現を指定BodyAsHTMLします。

  • 送信済みアイテム フォルダー内のアイテムからエンティティを抽出することはできません。

さらに、 ItemHasKnownEntity ルールを使用する場合は、次のことが適用され、アドインがアクティブになると想定されるシナリオに影響する可能性があります。

  • ルールを ItemHasKnownEntity 使用する場合は、マニフェストで指定された既定のロケールに関係なく、Outlook が英語のエンティティ文字列と一致することを想定しています。

  • アドインが Outlook on Windows または Mac で実行されている場合、Outlook は、その制限を超える本文の残りの部分ではなく、アイテム本文の最初のメガバイトにルールを適用 ItemHasKnownEntity することを想定しています。

  • ルールを ItemHasKnownEntity 使用して、[ 送信済み アイテム] フォルダー内のアイテムのアドインをアクティブ化することはできません。

関連項目