Mit curl sieht das so aus:
Code: Alles auswählen
curl -X POST 'https://api.telegram.org/bot123456789:Alkbldpfkbdp123456789/sendMessage?chat_id=123456789&text="Testtest"'
Umgesetzt in FPC wird daraus:
Code: Alles auswählen
uses
fphttpclient;
procedure Tbot.SendMessage(txt : string);
var
httpClient : TFPHTTPClient;
begin
try
httpClient := TFPHTTPClient.Create(nil);
try
txt := 'https://api.telegram.org/bot123456789:Alkbldpfkbdp123456789/sendMessage?chat_id=123456789&text=' + txt;
txt := httpClient.Get(txt);
except
WriteLn('Keine Verbindung zu Telegram');
end;
finally
httpClient.Free;
end;
end;
Nun möchte ich eine Bilddatei per Telegram verschicken. In curl sieht das so aus:
Code: Alles auswählen
curl -X POST https://api.telegram.org/bot123456789:A ... /sendPhoto -F chat_id=123456789 -F photo="@/home/pi/test.jpg"
Anscheinend verwendet curl hier die ID und den Pfad zur Datei als Argumente, so richtig hab ich den Unterschied zu obiger Schreibweise nicht verstanden.
Ich könnte das jetzt in FPC so umsetzen wie für Text:
Code: Alles auswählen
txt := 'https://api.telegram.org/bot123456789:Alkbldpfkbdp123456789/sendPhoto?chat_id=123456789&photo=' + imgfile;
txt := httpClient.Get(txt);
Ähm, geht leider nicht.
Wie muss ich den Dateipfad übergeben, dass die Datei mit gesendet wird? Oder muss ich die Datei erst einlesen und dann als Stream ausgeben?