C# で Managed EWS API を使用して、電子メール/カレンダー クライアントを実装しています。更新を処理するために、プル通知を使用しています。定期的なシリーズの「削除」イベントを適切に処理する方法を見つけようとしています。このイベントは、シリーズをごみ箱フォルダーに移動すると表示されるため、技術的には移動イベントです。
定期的なシリーズを扱う場合、取得するイベントは常に定期的なマスター用です。マスター ID と繰り返し情報を使用して、関心のある個々の発生をすべて同期することにより、「追加」ケースを正常に実装しましたが、削除/削除ケースを把握できませんでした。
これまでに 2 つの主なアプローチを調査しました。
1) 変更キーの再利用を試みます。定期的なシリーズでは、すべてのインスタンスの変更キーは同じです。そこで、変更キーが一致する予定をキャッシュで検索してみました。ただし、このシナリオでは変更キーは一致しません。イベントを取得するまでに、シリーズはごみ箱フォルダーに移動され、新しい変更キーがあるためです。
2) 移動/削除イベントの定期的なマスターを使用して、キャッシュにある予定にバインドし、これらの発生の一意の ID に基づいて削除を試みます。これは #1 と同じ理由で機能しません。イベントを取得するまでに、シリーズは既に移動されており、すべてのイベントに新しい ID が割り当てられています。そのため、ルックアップの新しい ID はどれも、私が持っている古い ID と一致しません。
完全を期すために、イベントで OldItemId を使用しましたが、予想どおり、この ID でバインドを実行することはできません。そのアイテムはサーバーに存在しなくなったためです。
要するに、定期的なシリーズのゴミ箱への移動イベントを実際の元の定期的なシリーズにリンクする方法を見つけることができませんでした。これは不可能ですか、それとも何か不足していますか?
ここで、定期的な予定のマスター ID のプロアクティブなキャッシュをテストします。つまり、同期する予定ごとに、それがシリーズの一部であるかどうかをテストし、そのシリーズの繰り返しマスターの ID を読み込みます。次に、削除/移動イベントを取得すると、イベントの OldItemId をキャッシュされた定期的なマスター状態にリンクし、関連するすべてのオカレンスを削除できるはずです。