Отправка Фото с описанием в Телеграм

cherus09

Client
Регистрация
10.10.2016
Сообщения
172
Благодарностей
14
Баллы
18
Привет, столкнулся с такой проблемой.
Мне нужно отправить изображение с описанием в Телеграм. Читал документацию ну так толком и не понял как это сделать. Нашел в интернете несколько примеров отправки, но не один способ не работает.
Способы которые я побывал:

1. Способ
C#:
ar bot_id = project.Variables["token_bot"].Value;// токен бота
var chat_id = project.Variables["chat_id"].Value; // ID канала
var str_post = project.Variables["title_tg"].Value + "\r\n" + "\r\n" + project.Variables["text_header"].Value + "\r\n" + "\r\n" + project.Variables["text_tg"].Value; // формируем текст для поста

string File = project.Variables["File_img"].Value;
project.SendInfoToLog(File);


string data = string.Empty;
data += "--8d769bc76365cd4\n";
data += string.Format("Content-Disposition: form-data; name=\"photo\"; filename=\"{0}\"\n", File);
data += "Content-Type: application/octet-stream\n";
data += File;
string resRequest = ZennoPoster.HttpPost(
   "https://api.telegram.org/bot" + bot_id + "/sendPhoto?chat_id=" + chat_id + "&parse_mode=HTML" +"&caption=" + str_post,  //с описанием
     data,
    "multipart/form-data",
    "",
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
    30000,
    "",
    "Mozilla/5.0 (Windows NT 5.1; rv:52.0) Gecko/20100101 Firefox/52.0",
    true,
    5,
    new[] {"Host: api.telegram.org"}
    );
    project.Variables["TgGetResult"].Value = resRequest;

2. Способ
C#:
//картинка c описанием
string img = project.Variables["File_img"].Value;
string strToken = project.Variables["token_bot"].Value;// токен бота
string strChatId = project.Variables["chat_id"].Value; // ID канала
string proxy = "";
string message = project.Variables["text_tg"].Value;
string mode = "&parse_mode=html";

string data = "--8d769bc78125cd4\n";
data += string.Format("Content-Disposition: form-data; name=\"photo\"; filename=\"{0}\"\n", img);
data += "Content-Type: application/octet-stream\n";
data += img;

string resRequest = ZennoPoster.HttpPost(
"https://api.telegram.org/bot" + strToken + "/sendPhoto?chat_id=" + strChatId +"&caption="+ mode + message,
data,"multipart/form-data",proxy,"UTF-8",ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
30000,"","Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0",true,5,
new[] {"Host: api.telegram.org"});
project.Variables["TgGetResult"].Value = resRequest;
3. Способ
C#:
string strToken = project.Variables["token_bot"].Value;
string strChatId = project.Variables["chat_id"].Value;
string parse_mode = "html";
string img = project.Variables["File_img"].Value;
string url_bot = string.Format("https://api.telegram.org/{0}/sendPhoto?chat_id={1}", strToken, strChatId);
string temp = CommonCode.SendPhoto(img, url_bot);
return temp;
к этому способу потребовалось в общий код прописать:

C#:
// Insert your code here
        public static string SendPhoto (string photo, string url_telegram){
var sBoundary = DateTime.Now.Ticks.ToString("x");
var contentType = "multipart/form-data";
string sPostMultiString = "";
// функция сбора данных
Func<string, string, string, string> multiFormDataText = delegate(string key, string value, string boundary) {
var output = string.Format("--{0}\r\n", boundary);
output += string.Format("Content-Disposition: form-data; name=\"{0}\"\r\n\r\n", key);
output += value + "\r\n";
return output;
};
 
// функция сбора данных
Func<string, string, string, string, string, string> multiFormDataFile = delegate(string key, string value, string fileName, string fileType, string boundary) {
var output = string.Format("--{0}\r\n", boundary);
output += string.Format("Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n", key, fileName);
output += string.Format("Content-Type: {0}\r\n\r\n", fileType);
output += string.Format("{0}\r\n", value);
return output;
};
// другие поля
sPostMultiString += multiFormDataText("action", "upload", sBoundary);
// файл
var fileInfo = new System.IO.FileInfo(photo);
sPostMultiString += multiFormDataText("width", fileInfo.Name, sBoundary);
sPostMultiString += multiFormDataFile("photo", fileInfo.FullName, fileInfo.Name, "image/png", sBoundary);
var str = ZennoPoster.HttpPost(url_telegram, sPostMultiString, contentType, Cookies: "", AdditionalHeaders: new string[]{""});
return str;
}
 

cherus09

Client
Регистрация
10.10.2016
Сообщения
172
Благодарностей
14
Баллы
18

backoff

Client
Регистрация
20.04.2015
Сообщения
6 042
Благодарностей
6 475
Баллы
113
все работает. надо просто внимательнее быть, и читать ветку
 

cherus09

Client
Регистрация
10.10.2016
Сообщения
172
Благодарностей
14
Баллы
18
Разобрался, вроде заработало.
 

cherus09

Client
Регистрация
10.10.2016
Сообщения
172
Благодарностей
14
Баллы
18
Может знает кто, как вот такое отправить

70803
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)