Как опубликовать в MS-team веб-крючок от Esp8266? - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть ESP8266 и я хочу отправлять сообщения на канал MS-Teams.В будущем я хочу отправить данные о температуре, но сейчас я в порядке с чем угодно.Прямо сейчас я могу подключиться к хосту, но он не будет отправлять какие-либо данные команде, и это не дает ошибок.Он работает без каких-либо проблем от Почтальона и webhook также работает от Python.

Вот мой код:

#include "ESP8266HTTPClient.h"
#include "ESP8266WiFi.h"
#include <ArduinoJson.h>
#include <WiFiClientSecure.h>

void setup() {
  Serial.begin(9600);                                  //Serial connection
  WiFi.begin("", ""); //WiFi connection
  while (WiFi.status() != WL_CONNECTED) { //Wait for the WiFI connection completion 
    delay(500);
    Serial.println("Waiting for connection");
  }
}

void MicrosoftTeams() {
  char host[] = "outlook.office.com"; //Specify request destination";
  WiFiClient client;
  if (client.connect(host, 443)) {
    Serial.println("connected");

    String url = "/webhook/Webhookcode";
    char json[] = "{  \"@context\": 
 \"https://schema.org/extensions\",\"@type\": 
 \"MessageCard\",\"themeColor\": \"0072C6\",\"title\": 
 \"meddelande\",\"text\": \"Hello!!\"}";
    int len = strlen(json);

    String Output = "POST " + url + " HTTP/1.1\r\n" +
                    "Host: " + host + "\r\n" +
                    "Content-Type: application/json\r\n" +
                    "User-Agent: arduino/1.0\r\n" +
                    "Content-Length: " + len + "\r\n" +
                    "\r\n" +
                    json + "\n";

    client.print(Output);
    while (client.available()) {
      String line = client.readStringUntil('\r');
      Serial.print(line);
    }
  }
}

void loop() {
  if (WiFi.status() == WL_CONNECTED) { //Check WiFi connection status
    MicrosoftTeams();
  } else {
    Serial.println("Error in WiFi connection");
  }
  delay(30000); //Send a request every 30 seconds
}

Обновление: Я протестировал следующую функцию, и она работает в этом тестовом примере, но не в реальном случае.Если я изменю WiFiClient на WiFiClientSecure, все перестает работать.

void WifiCliwaySecure()
{
  //Work
      WiFiClient  client;
  const int httpPort = 80;
  // //Doenst work
  //   WiFiClientSecure  client;
  // const int httpPort = 443;
  char host[] = "ptsv2.com";
  if (!client.connect(host, httpPort)) {
    Serial.println("connection failed");
    return;
  }

    String url = "/t/erzs7-1555484154/post";
   Serial.print("Requesting POST: ");
   // Send request to the server:
 String data = "{ \"title\": \"meddelande\",\"text\": \"Hallå alla bk!!\"}";
  client.print(String("POST ") + url + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" +
               "User-Agent: BuildFailureDetectorESP8266\r\n" +
               "Content-Length: " + data.length() + "\r\n" +
               "Content-Type: application/json\r\n" +
               "\r\n" + 
               data +
               "\r\n");
Serial.print("url Send");

   delay(500); // Can be changed
  if (client.connected()) { 
    client.stop();  // DISCONNECT FROM THE SERVER
  }
  Serial.println();
  Serial.println("closing connection");
}
...