2016-12-13 17 views
1

conversationIdというメッセージを取得するためにoffice365 APIを使用する方法がわかりません。Office365 API経由でconversationIdによってフィルタリングされたメッセージを取得する

私は

https://outlook.office.com/api/v1.0/me/Messages?$filter=ConversationId%20eq%20AAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow= 

のような要求はこれは、このような400応答をもたらす作ってあげるのが私はconversationIdがAAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow=

あるとしましょう:私は、このような、他のものを試してみました

{ 
    "error": { 
    "code": "RequestBroker-ParseUri", 
    "message": "Syntax error at position 98 in 'ConversationId eq AAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow='." 
    } 
} 

conversationIdをエンコードするURLとしてAAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow%3Dに同じエラーが発生します。

私はまた、単に

https://outlook.office.com/api/v1.0/me/Messages?$filter=ConversationId%20eq%20AAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow 

それを怖がられている文字であるように思われ=を削除しようとしたが、結果は次のエラー

{ 
    "error": { 
    "code": "RequestBroker-ParseUri", 
    "message": "Could not find a property named 'AAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow' on type 'Microsoft.OutlookServices.Message'." 
    } 
} 

に私はまたをいじって試したことURLを大文字にして%20の代わりに+の符号を使用してフィルタ文字列を取得しましたが、一貫して400エラーが返されます。

他のフィールドでフィルタリングすることはできますが、たとえば、

https://outlook.office.com/api/v1.0/me/Messages?$filter=IsRead%20eq%20true 

は、私が期待したとおりにフィルタリングされたメッセージを返します。

ConversationIdフィルタで何が起こっているのでしょうか?

答えて

3

ConversationIdを一重引用符で囲む必要があります。 これは私のリクエストをC言語で鍛造する方法です。

string finalUrl = "https://outlook.office.com/api/beta/me/Messages?$filter=" + HttpUtility.UrlEncode(string.Format("ConversationId eq '{0}'", conversationId)); 
+0

これは私の質問に対する正解ですが、私はフォローアップがあります。現在、そのフィルタを使用しているのは、実際の会話IDですが、結果は0です。だから私は私の会話を持っているメッセージを取ることができます.Id、私はconversationIdによってフィルタリングするとき、メッセージは返されません。あなたはそれについて解決策や説明を持っていますか? – johncorser

+1

1)認証ビーラーがこの「ConversationId」を持つメールボックス用であることを確認しますか? 2)APIの更新版を試すことができますか? v2またはbeta? –

+0

うん、2.0はそれを正しく取得します。ありがとう! – johncorser

関連する問題