Нашел интересную библиотеку для работы с telegram. так то все хорошо работает кроме фото. Долго ковырялся перед тем как написать этот пост . И теперь мое терпение лопнуло и я прошу помощи друзья. Вобщем проблема заключается в следующем . (самое смешное что при первом запуске все работало ,я даже создал файл worked wersion , чтобы исключить смерть скетча от детских пальчиков.) В библиотеке за отправку фото отвечает несколько функций , а именно Код (C++): String UniversalTelegramBot::sendPhotoByBinary( const String& chat_id, const String& contentType, int fileSize, MoreDataAvailable moreDataAvailableCallback, GetNextByte getNextByteCallback, GetNextBuffer getNextBufferCallback, GetNextBufferLen getNextBufferLenCallback) { #ifdef TELEGRAM_DEBUG Serial.println(F("sendPhotoByBinary: SEND Photo")); #endif String response = sendMultipartFormDataToTelegram("sendPhoto", "photo", "img.jpg", contentType, chat_id, fileSize, moreDataAvailableCallback, getNextByteCallback, getNextBufferCallback, getNextBufferLenCallback); #ifdef TELEGRAM_DEBUG Serial.println(response); #endif return response; } UniversalTelegramBot::sendPhotoByBinary костыль для следующей Код (C++): String UniversalTelegramBot::sendMultipartFormDataToTelegram( const String& command, const String& binaryPropertyName, const String& fileName, const String& contentType, const String& chat_id, int fileSize, MoreDataAvailable moreDataAvailableCallback, GetNextByte getNextByteCallback, GetNextBuffer getNextBufferCallback, GetNextBufferLen getNextBufferLenCallback) { String body; String headers; const String boundary = F("------------------------b8f610217e83e29b"); // Connect with api.telegram.org if not already connected if (!client->connected()) { #ifdef TELEGRAM_DEBUG Serial.println(F("[BOT Client]Connecting to server")); #endif if (!client->connect(TELEGRAM_HOST, TELEGRAM_SSL_PORT)) { #ifdef TELEGRAM_DEBUG Serial.println(F("[BOT Client]Conection error")); #endif } } if (client->connected()) { String start_request; String end_request; start_request += F("--"); start_request += boundary; start_request += F("\r\ncontent-disposition: form-data; name=\"chat_id\"\r\n\r\n"); start_request += chat_id; start_request += F("\r\n" "--"); start_request += boundary; start_request += F("\r\ncontent-disposition: form-data; name=\""); start_request += binaryPropertyName; start_request += F("\"; filename=\""); start_request += fileName; start_request += F("\"\r\n" "Content-Type: "); start_request += contentType; start_request += F("\r\n" "\r\n"); end_request += F("\r\n" "--"); end_request += boundary; end_request += F("--" "\r\n"); client->print(F("POST /")); client->print(buildCommand(command)); client->println(F(" HTTP/1.1")); // Host header client->println(F("Host: " TELEGRAM_HOST)); // bugfix - https://github.com/witnessmenow/Universal-Arduino-Telegram-Bot/issues/186 client->println(F("User-Agent: arduino/1.0")); client->println(F("Accept: */*")); int contentLength = fileSize + start_request.length() + end_request.length(); #ifdef TELEGRAM_DEBUG Serial.println("Content-Length: " + String(contentLength)); #endif client->print(F("Content-Length: ")); client->println(String(contentLength)); client->print(F("Content-Type: multipart/form-data; boundary=")); client->println(boundary); client->println(F("")); client->print(start_request); #ifdef TELEGRAM_DEBUG Serial.print("Start request: " + start_request); #endif if (getNextByteCallback == nullptr) { while (moreDataAvailableCallback()) { client->write((const uint8_t *)getNextBufferCallback(), getNextBufferLenCallback()); #ifdef TELEGRAM_DEBUG Serial.println(F("Sending photo from buffer")); #endif } } else { #ifdef TELEGRAM_DEBUG Serial.println(F("Sending photo by binary")); #endif byte buffer[512]; int count = 0; while (moreDataAvailableCallback()) { buffer[count] = getNextByteCallback(); count++; if (count == 512) { // yield(); #ifdef TELEGRAM_DEBUG Serial.println(F("Sending binary photo full buffer")); #endif client->write((const uint8_t *)buffer, 512); count = 0; } } if (count > 0) { #ifdef TELEGRAM_DEBUG Serial.println(F("Sending binary photo remaining buffer")); #endif client->write((const uint8_t *)buffer, count); } } client->print(end_request); #ifdef TELEGRAM_DEBUG Serial.print("End request: " + end_request); #endif readHTTPAnswer(body, headers); } closeClient(); return body; } Вообщем в процессе ее выполнения есп думает секунд 10 , видимо ждет ответа от апи и вроде говорит что все отправлено и великолепно ,но ничего бот не присылает . Я думаю что проблема в том что апи просто не понимает что я ему отправляю . либо я как то не правильно формирую запрос . HELP!!! уже всю голову сломал. Прилагаю библиотеку проверьте , даже пример не работает.
Вся загвоздка в том ,что ничего не приходит в ответ . в этой библиотеке предусмотрен вывод ответа от апи , при включеном дебаге. видимо какой-то косяк с multipart data form , наверное разделитель не правильно читается ,ладно буду ковыряться дальше .