问题如何获取电报发送的消息的信息

时间:2019-11-25 10:49:20

标签: telegram telegram-bot php-telegram-bot

我举了一个简单的例子来更好地理解我的问题。

我有这些代码,您可以输入名称和文本,然后使用Get获取值。

一旦收到这些值,程序就会发送一个由我创建的带有sendMessage的电报机器人。

$chat_id =到我创建的电报机器人的聊天ID。

<?php
if(isset($_GET['name'])  && isset($_GET['message'])){
define ('url',"https://api.telegram.org/botTOKEN/");
$name = $_GET['name'];
$message = $_GET['message'];
$chat_id = 'TEST';
function invia($chat_id,$message = ''){
    $url=  url."sendMessage?chat_id=$chat_id&parse_mode=HTML&text=".$message;
    file_get_contents($url);
}




$message = urlencode("Hello $name this is the message :  $message");

invia($chat_id, $message);

}

?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>">
  Name:<br>
  <input type="text" name="name" placeholder="Your Name">
  <br>
  Message:<br>
  <textarea name="message" placeholder="Your Message Here" rows="6" cols="33"></textarea>
  <br><br>
  <input type="submit" value="Submit">
</form>

让我们写例如名称:“ Lorenzo Poggi”和消息:“嗨,这是测试”。

发送后,我将直接在电报机器人的聊天室中接收到消息。

现在的问题是这个,但是如果在example.php页中,由于setWebhook我有关于电报机器人的所有更新,我想得到的文字是测试”(以前通过sendMessage发送的消息文本中,该怎么做?

1 个答案:

答案 0 :(得分:2)

电报响应的结果应该是这样的:

{
  "update_id": 901816057,
  "message": {
    "message_id": 36089,
    "from": {
      "id": 223110107,
      "first_name": "Ğąme",
      "last_name": "Ǿver!",
      "username": "GameO7er"
    },
    "chat": {
      "id": 223110107,
      "first_name": "Ğąme",
      "last_name": "Ǿver!",
      "username": "GameO7er",
      "type": "private"
    },
    "date": 1490493909,
    "text": "Hi, this is a test"
  }
}

您可以记录响应并尝试通过此website对其进行解码 然后,如果您想获取/打印用户消息,则应使用以下方式:

function invia(){
    $url=  url."sendMessage?chat_id=$chat_id&parse_mode=HTML&text=".$message;
    $TelegramResult = file_get_contents($url);
    $UserText = $TelegramResult['message']['text']; // Hi, this is a test
}

您会看到$UserText包含用户发送到机器人的文本。

如果您有任何疑问,请联系我。上面的资源中还显示了我的电报ID,请随时与我联系。