电报api发送消息什么都没回来

时间:2017-10-27 12:29:30

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

我想通过telegram api发送消息,但它不起作用,并且不发送任何消息。这是我到目前为止所尝试的:

function sendTelegram($chatID, $msg) {
echo "sending message to " . $chatID . "\n";

$token = "botxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$getUpdate = "http://api.telegram.org/" . $token . "/getUpdates";

$url = "https://api.telegram.org/" . $token . "/sendMessage?chat_id=" . $chatID;
$url = $url . "&text=" . urlencode($msg);
$ch = curl_init();
$optArray = array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true
);
curl_setopt_array($ch, $optArray);
$result = curl_exec($ch);
curl_close($ch);
}

$msg = "Hi";
$chatID = "88132232";

sendTelegram($chatID, $msg);

我的进步:

  1. 我通过new bot制作了@botfather并获得token
  2. 然后使用我的bot
  3. 向此telegram发送了一条消息
  4. 我在chat id中获得getUpdates
  5.   

    https://api.telegram.org/botxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/getUpdates

    以及send message来自:

      

    https://api.telegram.org/botxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/sendMessage?chat_id=88132232&text=hi

    当我转到这个网址时,它可以找到,但是当我想动态地执行此操作时,它不会给我任何回复sending message to 88132232而没有错误。我搜索并阅读了很多主题,但没有成功,任何想法我错过了什么?在使用curl之前我使用get_file_contents但它也没有用。

2 个答案:

答案 0 :(得分:0)

您设置了CURLOPT_RETURNTRANSFER

  

CURLOPT_RETURNTRANSFER:TRUE,将传输作为curl_exec()返回值的字符串返回,而不是直接输出。

请在$result函数中返回sendTelegram(),并回复它。

function sendTelegram($chatID, $msg) {
    // ...
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}

$result = sendTelegram($chatID, $msg);
echo $result;   // JSON String

答案 1 :(得分:0)

可能你有error,但在curl,你应该得到curl这样的错误:

if(curl_error($ch)){
    echo 'error:' . curl_error($ch);
}

大多数问题都是SSL。得到你的错误并回来。但我测试了你的代码,正如@Sean所说,你的代码工作正常,在php fiddle网站上试试。如果您收到SSL错误,请阅读 this