2016-10-08 11 views
2

私は、ある質問(キーボードボタン)を1つ1つ質問し、オブジェクトの詳細を保存して、最後に何かが存在するかどうかを調べる電卓を作りたい!phpキーボードボタンで電報ボットを作ってほしい

私はこのコード

<?php 
    require_once ("iphone_class.php"); 

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

    file_put_contents('test.txt', $result); 

    $token = "255676049:AAEv9GbV95Xg2UmzZR4D-0kXbIj73NKnl4o"; 
    $base_url = "https://api.telegram.org/bot{$token}/SendMessage?chat_id="; 
    $chat_id = $result['message']['chat']['id']; 
    $message_from_user = $result["message"]["text"]; 

    function AddtoKeyboard($names) 
    { 
     $ar = array(
      'keyboard' => array(), 
     ); 
     foreach ($names as $name) { 
      $ar2 = array($name); 
      array_push($ar["keyboard"], $ar2); 

     } 
     return $ar; 
    } 

    function get_new_message(){ 
     $message = file_get_contents("php://input"); 
     $result = json_decode($message, true); 
     $message_from_user = $result["message"]["text"]; 
     return $message_from_user; 
    } 

    if ($message_from_user == "موبایل") { 

     $m = array("صفحه ی اصلی", "اندرویدی", "اپل"); 
     $keyb = json_encode(AddtoKeyboard($m)); 
     $rep = file_get_contents($base_url . $chat_id . "&text=" . urlencode("لطفا نوع موبایل مورد نظر را انتخاب کنید: ") 
      . "&reply_markup=" . $keyb); 

     $message_from_user = get_new_message(); 
     file_get_contents($base_url . $chat_id . "&text=" . urlencode($message_from_user)); 

     if ($message_from_user == "اپل") { 

      $iphone = new Iphone(); 

      $m = array("صفحه ی اصلی", "5", "5c", "5s", "se", "6", "6 plus", "6s", "6s plus"); 
      $keyb = json_encode(AddtoKeyboard($m)); 
      $rep = file_get_contents($base_url . $chat_id . "&text=" . urlencode("لطفا مدل موبایل مورد نظر را انتخاب کنید: ") 
       . "&reply_markup=" . $keyb); 
      $message_from_user = get_new_message(); 
      $iphone->setModel($message_from_user); 

      $m = array("صفحه ی اصلی", "16", "64", "128", "256"); 
      $keyb = json_encode(AddtoKeyboard($m)); 
      $rep = file_get_contents($base_url . $chat_id . "&text=" . urlencode("لطفا ظرفیت موبایل مورد نظر را انتخاب کنید: ") 
       . "&reply_markup=" . $keyb); 
      $message_from_user = get_new_message(); 
      $iphone->setCapacity($message_from_user); 

      $m = array("صفحه ی اصلی", "silver", "gray", "gold", "roseGold"); 
      $keyb = json_encode(AddtoKeyboard($m)); 
      $rep = file_get_contents($base_url . $chat_id . "&text=" . urlencode("لطفا رنگ موبایل مورد نظر را انتخاب کنید: ") 
       . "&reply_markup=" . $keyb); 
      $message_from_user = get_new_message(); 
      $iphone->setColor($message_from_user); 

      //TODO check ba database va message dadan quanity 

     }else if ($message_from_user == "اندروید"){ 

     } 


    } else if ($message_from_user == "لپ تاپ") { 


    } else if ($message_from_user == "تبلت") { 

     $text = "ipad"; 

    } else if ($message_from_user == "صفحه ی اصلی") { 

     $m = array("موبایل", "تبلت", "لپ تاپ"); 
     $keyb = json_encode(AddtoKeyboard($m)); 
     $rep = file_get_contents($base_url . $chat_id . "&text=" . urlencode("صفحه ی اصلی") . "&reply_markup=" . $keyb); 

    } else { 

     $text = "hichkodoom"; 
     file_get_contents($base_url . $chat_id . "&text=" . urlencode($text)); 

    } 

    ?> 

を書きましたが、

if ($message_from_user == "موبایل") { 

     $m = array("صفحه ی اصلی", "اندرویدی", "اپل"); 
     $keyb = json_encode(AddtoKeyboard($m)); 
     $rep = file_get_contents($base_url . $chat_id . "&text=" . urlencode("لطفا نوع موبایل مورد نظر را انتخاب کنید: ") 
      . "&reply_markup=" . $keyb); 

     $message_from_user = get_new_message(); 

後にメッセージが最後の答えに更新文句を言わないし、私のPHPファイルを開始し、私は私のオブジェクトのiphoneを失ってから実行します!

+0

何? http://php.net/manual/en/function.error-reporting.phpか、下の回答からその動画を見ていますか? *私が追加するかもしれない笑、非常に長い間生き残ることはありません。 –

+0

私は何もエラーがありません。私の問題はget_new_messageメソッドが正しく動作しない、またはこれを行うための解決策が正しくないです。 – Sia

+0

質問のタイトルを確認してください:1)キーボードボタンとキーボードボタンの関係がわかりません。 2)より一般的なフォームは、「電文ボットが正しく動作しない」 - 質問リストで、タグ(この記事の最初の改訂版のphpを含む)が目立って表示されます。 (あなた(願わくは)あなたがiPhoneを失うことはなかった、あなたはさらに 'Iphone'の新しいインスタンスを手に入れた。) – greybeard

答えて

0

このような新しいメッセージを受け取ることはできません。 (また、あなたのPHPコードは、新しいメッセージのために最初から実行されている行動を観察してきたように)

は、すべてのメッセージについては、PHPのコールバックが再び呼び出されます。 ユーザーからのメッセージを保存して対話したい場合は、データベース内にメッセージを保存し(またはセッション内に保存する)、メッセージを受け取ったら、チャットIDを調べて、 (例えば、過去10分以内のインタラクション)、または最初からやり直したい場合は、

0

はメッセージを区別するために、このようなスイッチケースを使用します。エラー報告から

switch($message_from_user) 
{ 
    case "موبایل": 
    //do something 
    break; 
    case "اندروید": 
    //do something 
    break; 
    case "اپل": 
    //do something 
    break; 

} 
+0

次回にあなたの投稿をフォーマットしてください。私は今度あなたのためにそれをやった。 –

関連する問題