2016-10-08 25 views
2

我想用php来制作一个电报机器人,一个一个地问一些问题(键盘按钮),并在对象中存储细节,最后回答某些事情是否存在或不存在!我想用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

请在下次格式化你的文章。我这次为你做了。 –

相关问题