Как вложения сообщений работают в Outlook REST API

это то, что я пытаюсь выполнить:

Сначала я использую бета-версию API.

Итак, я использую конечные точки /api/beta/me/messages/{message_id}/replyall и /api/beta/me/messages/{message_id}/forward. Комментарий ответного/пересылаемого сообщения не задан. В запросе отправляется новое сообщение. Это сообщение содержит именно те вложения, которые я хочу иметь в сообщении. А тело сообщения содержит весь текст сообщения (мы строим свою историю сообщений).

Результатом этого запроса является то, что созданное сообщение ответа/пересылки содержит вложения, которые я отправил, И вложения, которые являются частью сообщения, на которое я отвечаю/пересылаю.

Под вложениями я имею в виду как встроенные файлы, так и прикрепленные файлы.

Тело сообщения построено правильно.

Я также попытался создать черновик, а затем обновить вложения для этого черновика, используя: PATCH /api/v2.0/me/messages/{message_id}, для которого в документации сказано, что я могу указать «одно или несколько доступных для записи свойств сообщения в тело запроса", но почему-то не работает с вложениями сообщений. Но я думаю, даже если он работает с вложениями, он просто добавит вложения, которые я отправляю, и не удалит старые.

Итак, есть ли какой-то параметр, который я могу установить, чтобы я мог выполнить это поведение?

Я попытался отправить запрос на https://outlook.office.com/api/beta/me/messages/{message_id}/createreply, а затем удалите ненужные вложения из возвращенного черновика сообщения. Проблема здесь в том, что эта конечная точка не возвращает вложения. Я также попытался добавить запрос $expand=attachments, но вложения по-прежнему не возвращались.


person D. Gencheva    schedule 22.03.2017    source источник
comment
Я немного потерялся. Удалось ли вам отправить запросы в /reply, /replyall и /forward с вложениями? Я запутался, сделали ли вы это или это то, что вы хотите сделать, но еще не смогли. Если вам удалось это сделать, не могли бы вы рассказать мне, как вы это сделали? Я пытался найти пример того, как отвечать/пересылать вложения, и пока ничего не получил... Спасибо! :)   -  person Luca Bezerra    schedule 22.03.2017
comment
Да, мне удается отвечать/пересылать с вложениями, и в общем случае это работает. В бета-версии остальных API вы также можете отправить сообщение в теле запроса. Ваш запрос должен быть направлен на outlook.office.com/api/beta/me/messages{message_id}/reply Итак, если вы добавите вложения к этому сообщению (как вы сделали бы для конечной точки /sendmail), оно должно работать.   -  person D. Gencheva    schedule 22.03.2017
comment
Это сработало! Большое спасибо! :D Вы знаете, есть ли способ сделать это в стабильных (не бета) версиях API? Или где-нибудь, где я могу найти информацию о том, насколько надежна бета-версия (или каковы их планы на нее)? Еще раз спасибо!   -  person Luca Bezerra    schedule 23.03.2017
comment
Кроме того, что касается вашей попытки удалить вложения черновика сообщения, если вы отправляете GET на outlook.office.com/api/beta/me/messages{msg_id}/attachments/ вы можете увидеть все вложения этого сообщения. Следующее DELETE для outlook.office.com/api/beta/me/messages{msg_id}/attachments/{attachment_id} удаляет это вложение из сообщения. Вам это помогает?   -  person Luca Bezerra    schedule 23.03.2017
comment
Вы почти ответили на свой вопрос ;) Итак, с текущей версией API: 1. Создайте черновик (Отправить в /createreply), который содержит только тело ответного сообщения (Комментарий). Это вернет сообщение, которое вы только что создали (очевидно, без вложений). Получите идентификатор черновика. 2. Используйте это, чтобы создать вложения, которые вы хотите к этому черновику сообщения. (Опубликовать в /messages/{message_id}/attachments) 3. Отправьте черновик сообщения.   -  person D. Gencheva    schedule 23.03.2017
comment
Я еще не мог проверить это, но это имеет смысл! Очень умный совет, ха-ха. Еще раз спасибо, и надеюсь, что вы уже решили свой вопрос :)   -  person Luca Bezerra    schedule 25.03.2017


Ответы (1)


У меня была такая же проблема с вложениями при пересылке/ответе/ответеВсе, и я решил, что лучший способ сделать это - создать новое сообщение со всеми вложениями, которые вы хотите (например, как вы это делаете), а затем просто использовать отправить вызов API, т. е. «https://outlook.office365.com/api/v2.0/me/sendmail' с вашим новым сообщением. Я надеюсь, что это работает для вас!

person Aida Nowzari    schedule 30.03.2017
comment
Отличный вопрос. Вот что вам нужно сделать, если вы хотите, чтобы ответ был в той же ветке: исходное электронное письмо имеет параметр, называемый ConversationId, все, что вам нужно сделать, это получить этот идентификатор и передать его в ответное сообщение, т. е. ваше сообщение должно выглядеть примерно так: var messageFinal = { Message: { ToRecipients: $scope.message.toRecipients, Subject: $scope.message.subject, Body: { ContentType: HTML, Content: $scope.message.content}, ConversationId: $scope.message.ConversationId } }; - person Aida Nowzari; 01.04.2017