Z0RAN
@Z0RAN

Почему в сообщении от ESP в телеграм не получается жирный шрифт?

Добрый день, не приходит жирный шрифт в пост телеграм канала от платы ESP8266.
POST запрос, формат multipart/form-data (там ещё файл передаётся),

используемый код здесь

void setup() {
  Serial.begin(115200);

  // подключение к WIFI

  // инициализация SD карты

  sendPhoto("example.jpg", "просто текст\n<b>жирный текст</b>");
}

void sendPhoto(const char* filePath, const String& caption) {
  WiFiClientSecure client;
  client.setInsecure();

  if (!client.connect("api.telegram.org", 443)) {
    Serial.println("Connection failed");
    return;
  }

  String boundary = "----ESP8266Boundary";

  // Подготовка POST-запроса
  String postData = "--" + boundary + "\r\n";
  postData += "Content-Disposition: form-data; name=\"chat_id\"\r\n\r\n";
  postData += String(telegramChatId) + "\r\n";

  postData += "--" + boundary + "\r\n";
  postData += "Content-Disposition: form-data; name=\"caption\"\r\n\r\n";
  postData += caption + "\r\n"; // Используем HTML

  postData += "--" + boundary + "\r\n";
  postData += "Content-Disposition: form-data; name=\"photo\"; filename=\"" + String(filePath) + "\"\r\n";
  postData += "Content-Type: image/jpeg\r\n\r\n";

  File imageFile = SD.open(filePath, FILE_READ);
  if (!imageFile) {
    Serial.println("File not found");
    return;
  }

  long contentLength = postData.length() + imageFile.size() + String("\r\n--" + boundary + "--\r\n").length();

  client.print("POST /bot" + String(telegramBotToken) + "/send-message.html HTTP/1.1\r\n");
  client.print("Host: api.telegram.org\r\n");
  client.print("Content-Type: multipart/form-data; boundary=" + boundary + "\r\n");
  client.print("Content-Length: " + String(contentLength) + "\r\n");

  // parse mode HTML, Markdown тоже не работает
  client.print("parse_mode: HTML\r\n");
  client.print("\r\n");

  // Отправка начальных частей POST-запроса
  client.print(postData);

  // Отправляем файл по частям
  const int bufferSize = 512;
  uint8_t buffer[bufferSize];

  while (imageFile.available()) {
    int bytesRead = imageFile.read(buffer, bufferSize);
    client.write(buffer, bytesRead);
  }

  imageFile.close();

  // Завершение POST-запроса
  client.print("\r\n--" + boundary + "--\r\n");

  // Чтение ответа от сервера
  String responseLine = client.readStringUntil('\n'); // Первое сообщение
  Serial.println("Server response: " + responseLine); // Серверный ответ

  client.stop(); // Завершаем соединение
} // loop пустой



В сообщении приходит картинка example.jpg и текст:

просто текст
<b>жирный текст</b>


При использовании Markdown тоже приходит текст с разметкой.

Подскажите, пожалуйста, что у меня в коде не так?
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы