PHP телеграмма бот, sendmessage webhook - PullRequest
0 голосов
/ 09 октября 2018

Я пишу робот-телеграмму. Это мой код, и я хочу, чтобы пользователи получили сообщение, которое они отправляют в бот:

telegram.php:

<?php
 class telegram {

 public $token;

 public function __construct($token)
{
    $this->token =  $token; 
}

    public function recievedText()
{
    $text= json_decode(file_get_contents('php://input'),true);
    return $text;
} 

public function sendMessage($userid,$text)
{
    $url='https://api.telegram.org/bot'.$this->token.'/sendMessage?chat_id='.$userid.'&text='.$text;
    file_get_contents($url)   ;
}
}

?>

index.php:

<?php

require ('config.php');
require('telegram.php');

$telegram = new telegram(TOKEN);
$result = $telegram->recievedText();
$userid = $result->message->from->id;
$text   = $result->message->text;
$telegram->sendMessage($userid,$text)  ;
?>

config.php:

<?php

define('TOKEN','----');
?>

, и я уже установил webhook и проверил SSL моего сайта через этот , и он был установлен,

Я не знаю, в чем проблема, что когда я отправляю сообщение боту, оно не отправляет обратно никакого сообщения!

1 Ответ

0 голосов
/ 10 октября 2018

Вы проверили, есть ли у вас ssl, но вы не проверяете, действительно ли вы его используете.Вы также не проверяете, каков ответ на запрос, который вы делаете

file_get_contents($url)   ;

измените эту строку на:

$requestResponse = file_get_contents($url);
var_dump($http_response_header);
var_dump($requestResponse);

, чтобы увидеть, удастся ли вам сначала отправить запрос.Без ответа Это просто гадание, что может пойти не так.Вы должны увидеть код ответа = 200, если все в порядке, если другой номер не начинается с 2xx, то вы не можете отправить запрос.

Прочитайте о HTTPS-соединениях с file_get_contents () или попробуйте использовать Curl .Подсказка: просто для отладки вы можете пропустить проверку SSL, чтобы, по крайней мере, эта проблема в начале была устранена.Но не забудьте снова включить проверку после отладки!

Если вы выполняете запрос как запрос GET, вам нужно закодировать текст перед тем, как поместить его в URL - используйте: urlencode () длячто.

$url='https://api.telegram.org/bot'.$this->token.'/sendMessage?chat_id='.$userid.'&text='.$text;

изменить на

 $url='https://api.telegram.org/bot'.$this->token.'/sendMessage?chat_id='. urlencode($userid) . '&text='.urlencode($text);

или даже лучше использовать http_build_query () и кодировать таким образом все переменные, кроме $this->token.Данная ссылка имеет простой пример, поэтому я пропущу указание кода.

...