Telegram API: cURL Status prüfen?
ich sende in etwa so automatisierte Nachrichten mithilfe der Telegram API wie der folgende Code. jetzt is ja aber das "Problem", wenn jemand den Bot deaktiviert, an die Person immer noch Nachrichten gesendet werden. das kann bei einer großen Menge an Empfängern ja zu Datenleichen führen. wie kann ich denn prüfen, ob die Nachricht auch wirklich ankommt ?
habe mal die Zeile mit $httpstatus hinzugefügt. damit hätte ich ja den http code aber die Variable ist irgendwie immer leer...
1 Antwort
Ändere zunächst die Reihenfolge deiner Funktionsaufrufe. Erst sollte der Request ausgeführt werden, bevor du den letzten Response Status Code einholst.
$result = curl_exec($ch);
$httpstatus = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
Wenn du dir dazu einmal die Beispiele aus der PHP-Dokumentation anschaust, wird zuvor sogar noch nach aufgetretenen Fehlern geprüft. Man könnte es also auch so schreiben:
$result = curl_exec($ch);
if (!curl_errno($ch)) {
$statusCode = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
if ($statusCode !== 200) {
// not successful ...
}
}
Im Folgenden würde ich zudem nochmals genauer prüfen, was dir die API selbst als Rückmeldung zurückgibt, sollte die Nachricht nicht ankommen. Vielleicht könntest du dich an so ein Feedback ebenso noch anpassen.
Die API Dokumentation ist an dieser Stelle aber leider nicht sehr konkret:
On success, the sent Message is returned.
genauso kann ich da kein sendMessage an mich machen:
sendMessage($bot_id,$admin_chatid,$chatid.' ist inaktiv.');
server log sagt:
PHP Notice: Undefined variable: admin_chatid
Du brauchst wohl eine globale Variable.
$someVariable = "";
function doSomething() {
global $someVariable;
$someVariable = "hello";
}
doSomething();
print $someVariable; // "hello"
danke wie kann ich da jetzt eine Variable erstellen damit ich später prüfen kann ob die gesetzt ist ? das geht in der Funktion ja nicht so einfach wie:
$denied = $chatid;