Для отправки сообщения с вложением в Одноклассниках по Graph API вы можете использовать метод photos.upload
для загрузки изображения и получения его идентификатора, а затем вставить этот идентификатор в сообщение с помощью метода messages.send
.
Ниже приведен пример кода на C#, демонстрирующий это:
using (var httpClient = new HttpClient()) { // Загрузка изображения var multiForm = new MultipartFormDataContent(); byte[] fileBytes = File.ReadAllBytes("путь_к_изображению"); var fileContent = new ByteArrayContent(fileBytes); multiForm.Add(fileContent, "photo", "photo.jpg"); var uploadResponse = await httpClient.PostAsync("https://api.ok.ru/graph/me/photos/upload", multiForm); var uploadContent = await uploadResponse.Content.ReadAsStringAsync(); var uploadResult = JsonConvert.DeserializeObject<UploadResult>(uploadContent); var photoId = uploadResult.photoId; // Отправка сообщения с вложением var messageParameters = new Dictionary<string, string> { { "access_token", "ваш_токен_доступа" }, { "application_key", "ваш_ключ_приложения" }, { "attachment_type", "photo" }, { "attachment", "{"photoId":"" + photoId + ""}" }, { "text", "Ваш текст сообщения" }, { "recipientId", "id_получателя" } }; var messageResponse = await httpClient.PostAsync("https://api.ok.ru/graph/me/messages/send", new FormUrlEncodedContent(messageParameters)); var messageContent = await messageResponse.Content.ReadAsStringAsync(); var messageResult = JsonConvert.DeserializeObject<MessageResult>(messageContent); var messageThreadId = messageResult.result.messageThreadId; } public class UploadResult { public string photoId { get; set; } } public class MessageResult { public Result result { get; set; } } public class Result { public string messageThreadId { get; set; } }
Вы можете использовать эти примеры кода в своем проекте на C# для отправки сообщений с вложениями в Одноклассниках по Graph API.