senden von Nachrichten im Telegramm-bot mit curl

Ich möchte mir meine bot-Nachricht aus der Datenbank und senden Sie an die Nutzer, Es funktionierte, wenn mein text war nur 1 Wort,aber jetzt funktioniert es nicht und zeigt HTTP BAD REQUEST 400. Ich denke, ich sollte verwenden, curl, aber ich habe nicht gefunden Dokument nützlich für das senden einer langen Nachricht von Telegramm bot.(eigentlich, weil ich bin ein Anfänger in php)

hier ist mein code

$botToken="something";
$website="https://api.telegram.org/bot".$botToken;


$update = file_get_contents("php://input");
$update = json_decode($update, true);

$chatID = $update["message"]["chat"]["id"];
$message = $update["message"]["text"];

define("dbhost", "localhost:3306"); define("dbuser", "sm");
define("dbpass", "sm"); define("database", "sm");

switch ($message){
 case "/get":
  connected($chatID);

break;

 }

function sendMessage($chatID,$message){


$url =$GLOBALS[website]."/sendMessage?chat_id=".$chatID."&text=".$message;

//file_get_contents($url);
    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

    $output = curl_exec($ch);
    curl_close($ch);

   //checkJSON($chatID,$update);

 }

 function connected($chatID){

 $conn = mysql_connect(dbhost,dbuser,dbpass);

 if(! $conn )
 {
   die('Could not connect: ' . mysqli_error());
 }


  mysql_select_db( database );

  $strSQL = "SELECT text FROM bott WHERE id= '1' ";
  $result = mysql_query($strSQL) or die('SQL Error :: '.mysql_error());
   $row = mysql_fetch_assoc($result);
  $message=$row['text'];
  sendMessage($chatID,$message);
  mysql_close($conn);
  }




function checkJSON($chatID,$update){

    $myFile = "log.txt";
    $updateArray = print_r($update,TRUE);
    $fh = fopen($myFile, 'w') or die("can't open file");
    fwrite($fh, $chatID ."\n\n");
    fwrite($fh, $updateArray."\n\n");
    fclose($fh);
  }




?>

dies ist der Fehler, wenn ich mit file_get_contents

[08-Jul-2016 12:27:35 America/Chicago] PHP Warning:     file_get_contents(https://api.telegram.org/bot218048829:AAF7baKISagQfALp4OIPh-   yU_hMOnpFGU0A/sendMessage?   chat_id=98506693&text=Introduction%0D%0AA+COMPUTER+PROCESSOR+such+as+Intel%92s+i486+used+to+cost+around+the+same+as+a+small+car.+Nowadays+a+chip+with+similar+power+is+the+price+of+a+chocolate+bar.%0D%0A): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request
 in /home/sfduiir1/public_html/php.php on line 29

Dieser code senden nichts an den Benutzer.

  • Ist das error-reporting aktiviert? Fehler zeigen?
  • ja, hier ist der Bericht von diesem code
  • 12:05:36 America/Chicago] PHP Deprecated: mysql_connect(): Die mysql-Erweiterung ist veraltet und wird entfernt werden, in der Zukunft: benutze mysqli oder PDO instead in /home/sfduiir1/public_html/php.php on line 44 [08-Jul-2016 12:05:36 America/Chicago] PHP Notice: Use of undefined constant website - angenommen 'website' in /home/sfduiir1/public_html/php.php on line 27
  • und wenn ich file_get_contents ..Es war der Fehler [08-Jul-2016 12:27:35 America/Chicago] PHP Warning: file_get_contents(api.telegram.org/...): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in /home/sfduiir1/public_html/php.php in Zeile 29 @Script47
  • aber den text der Nachricht nicht leer ist
  • Versuchen Sie, utf8 Kodieren die text-Nachricht
  • Und sich bewusst sein, nie öffentlich machen, wirkliche api-Keys und sensiblen Daten auf Ihrem code-Beispiele
  • wie kann ich es ändern auf utf8? @Edu
  • eigentlich ist dies für den test und ich werde es ändern. vielen Dank für Ihre Aufmerksamkeit @Edu
  • utf8_encode($message) php.net/manual/es/function.utf8-encode.php
  • Ich habe den gleichen Fehler! Bad request @Edu
  • Ich fand dieses Thema und er sagte: "dieses problem ist ein Telegramm Fehler"! github.com/eljojo/telegram_bot/issues/19
  • Versuchen utf8_encode(url_encode($Nachricht))
  • warum denken Sie, dass dieser Fehler in der Codierung? @Edu
  • Weil die Prüfung Ihrer url und ändern &text= von &text= ich habe einen 400-Fehler (message nicht utf8-kodiert
  • Hat Ihr host-SSL-Unterstützung?
  • Ich beantwortete Ihre Frage. IMHO senden Sie zuerst nur die Nachricht,und wenn es funktionierte gut als fügen Sie andere codes wie die Interaktion mit der Datenbank. Auf diese Weise troubleshootig ist einfach und Ihre Codierung wird schnell sein.
  • danke @Edu , änderte ich die url zu utf8 mit urlencode(utf8_encode($message))
  • ja, ich verwendet, um zu gehen Schritt für Schritt Debuggen Sie den code, aber ich wusste nicht, was zu tun mit diesem problem.
  • ja, das ssl unterstützt.
  • eigentlich ist Es nicht mein problem lösen. Ich habe diesen code urlencode(utf8_encode($message)) und es funktioniert.
  • Also dann, was ist Ihre eigentliche problem?
  • Es war für die Nachrichtencodierung, war der Fehler aus dieser Zeile $url =$GLOBALS[website]."/sendMessage?chat_id=".$chatID."&text=".urlencode($message); file_get_contents($url); weil ich nicht konvertieren meine Nachricht auf utf8
  • OK, das ist richtig. Telegramm empfängt und sendet ALLE Nachrichten im format utf-8.Alle Abfragen gemacht werden muss unter Verwendung der UTF-8

InformationsquelleAutor Moonlight | 2016-07-08
Schreibe einen Kommentar