2016-03-22 7 views
1

Команда sendPhoto требует фотографии аргументов, определяемой как InputFile или String.Telegram BOT Api: как отправить фотографию с помощью C#?

API-интерфейс док говорит:

фото отправить. Вы можете передать file_id как String, чтобы отправить фотографию , которая уже находится на серверах Telegram, или загрузить новую фотографию, используя multipart/form-data. И

InputFile

Этот объект представляет содержимое файла, который будет загружен. Должно быть отправлено с использованием multipart/form-data обычным способом, который файлы загружен через браузер.

ответ

1

Я не C# Developer, но я создал этот код, используя Postman, он использует RestSharp Lib

var client = new RestClient("https://api.telegram.org/bot%3Ctoken%3E/sendPhoto"); 
var request = new RestRequest(Method.POST); 
request.AddHeader("postman-token", "7bb24813-8e63-0e5a-aa55-420a7d89a82c"); 
request.AddHeader("cache-control", "no-cache"); 
request.AddHeader("content-type", "multipart/form-data; boundary=---011000010111000001101001"); 
request.AddParameter("multipart/form-data; boundary=---011000010111000001101001", "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"photo\"; filename=\"[object Object]\"\r\nContent-Type: false\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"chat_id\"\r\n\r\n2314123\r\n-----011000010111000001101001--", ParameterType.RequestBody); 
IRestResponse response = client.Execute(request); 

Просто настроить его, и он должен работать.

1

здесь является рабочим, параметризованным примером кода:

using System.Linq; 
using System.IO; 
using System.Text; 
using System.Net.Http; 
using System.Threading.Tasks; 

namespace ConsoleApplication 
{ 
    public class Program 
    { 
     public static void Main(string[] args) 
     { 
      SendPhoto(args[0], args[1], args[2]).Wait(); 
     } 

     public async static Task SendPhoto(string chatId, string filePath, string token) 
     { 
      var url = string.Format("https://api.telegram.org/bot{0}/sendPhoto", token); 
      var fileName = filePath.Split('\\').Last(); 

      using (var form = new MultipartFormDataContent()) 
      { 
       form.Add(new StringContent(chatId.ToString(), Encoding.UTF8), "chat_id"); 

       using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read)) 
       { 
        form.Add(new StreamContent(fileStream), "photo", fileName); 

        using (var client = new HttpClient()) 
        { 
         await client.PostAsync(url, form); 
        } 
       } 
      } 
     } 
    } 
} 
Смежные вопросы