我正在使用telegram.php
连接我的机器人。当我使用sendmessage
时,日志中的所有内容都没问题,但机器人没有收到任何信息。
当我检查我的日志时,出现这样的问题:
ok: False
curl_error_code: 51
curl_error: SSL: no alternative certificate subject name matches target host name 'api.telegram.org'
我不知道该怎么办。
答案 0 :(得分:0)
我不知道这个电报机器人,但是我看到它使用了 GuzzleHttp 。
在初始化期间,它不接受任何配置Request::initialize()
public static function initialize(Telegram $telegram)
{
if (!($telegram instanceof Telegram)) {
throw new TelegramException('Invalid Telegram pointer!');
}
self::$telegram = $telegram;
self::setClient(new Client(['base_uri' => self::$api_base_uri]));
}
您应该检查其文档。我看到有很多设置器,它们使您能够覆盖默认设置。
您需要在客户端配置中将\GuzzleHttp\RequestOptions::VERIFY
设置为false
:
$this->client = new \GuzzleHttp\Client([
'base_uri' => 'someAccessPoint',
\GuzzleHttp\RequestOptions::HEADERS => [
'User-Agent' => 'some-special-agent',
],
'defaults' => [
\GuzzleHttp\RequestOptions::CONNECT_TIMEOUT => 5,
\GuzzleHttp\RequestOptions::ALLOW_REDIRECTS => true,
],
\GuzzleHttp\RequestOptions::VERIFY => false,
]);
答案 1 :(得分:0)
要解决此问题,请将此网址复制到浏览器并设置webhook:
https://api.telegram.org/botTOKEN/setWebhook?url=https://yourwebsite.com
错误的解决方案2 让我们按照以下简单步骤操作:
下载此捆绑的根证书:https://curl.haxx.se/ca/cacert.pem 放在服务器的任何位置。 打开php.ini并添加以下行:
curl.cainfo = "[the_location]\cacert.pem"
重新启动您的Web服务器。 而已。 ?