2016-12-13 2 views
1

У меня возникли проблемы с выяснением того, как использовать office365 api для получения сообщений с данными conversationId.Извлечь сообщения, отфильтрованные в результате разговора, через API Office365

Скажем, мой conversationId является AAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow=

Я сделаю запрос как

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

Это приводит к 400 ответ, как это:

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

Я попробовал другие вещи, такие как 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

Это правильный ответ на мой вопрос, - но у меня есть продолжение. В настоящее время, используя этот фильтр, я получаю 0 результатов, хотя это реальный диалог. Таким образом, я могу получить сообщение, которое имеет свой диалогId, но когда я фильтрую по цепочке, сообщение не возвращается. У вас есть решение или объяснение? – johncorser

+1

1) вы уверены, что носитель аутентификации для почтового ящика с этим 'ConversationId'? 2) Можете ли вы попробовать обновленную версию api, например. v2 или бета? –

+0

Yup, 2.0 исправляет это. Благодаря! – johncorser

Смежные вопросы