如何使用ngrok工作获取Telegram webhook?

时间:2018-03-06 17:49:41

标签: telegram telegram-bot ngrok php-telegram-bot telegram-webhook

我正在开发Telegram机器人并希望使用ngrok来接收来自webhook的消息。

设置webhook有效。当我将可公开访问的域设置为URL时,实际上我得到了预期的消息。现在,当我知道代码正在运行时,我想将消息从ngrok服务器传送到我的本地VM。

$ ngrok http telegrambot.sandbox.loc:80
ngrok by @inconshreveable                                                                                                                    (Ctrl+C to quit)

Session Status                online                                                                                                                         
Session Expires               7 hours, 59 minutes                                                                                                            
Version                       2.2.8                                                                                                                          
Region                        United States (us)                                                                                                             
Web Interface                 http://127.0.0.1:4040                                                                                                          
Forwarding                    http://0955b8f3.ngrok.io -> telegrambot.sandbox.loc:80                                                                         
Forwarding                    https://0955b8f3.ngrok.io -> telegrambot.sandbox.loc:80                                                                        

Connections                   ttl     opn     rt1     rt5     p50     p90                                                                                    
                              0       0       0.00    0.00    0.00    0.00

好。现在我设置webhook并得到像

这样的回复
{
    "ok":true,
    "result":{
        "url":"https://a200f5f7.ngrok.io",
        "has_custom_certificate":false,
        "pending_update_count":0,
        "max_connections":40
    }
}

ngrok的CLI输出:

HTTP Requests                                                                                                                                                
-------------                                                                                                                                                

POST /                         502 Bad Gateway                                                                                                               
POST /                         502 Bad Gateway                                                                                                               
POST /                         502 Bad Gateway                                                                                                               
POST /                         502 Bad Gateway 

我没有获得任何奖励。然后我将主机名添加到/etc/hosts

127.0.0.1       telegrambot.sandbox.loc

现在我

HTTP Requests                                                                                                                                                
-------------                                                                                                                                                

POST /                         405 Not Allowed                                                                                                               
POST /                         405 Not Allowed                                                                                                               
POST /                         405 Not Allowed                                                                                                               
POST /                         405 Not Allowed                                                                                                               
POST /                         405 Not Allowed                                                                                                               
POST /                         405 Not Allowed                                                                                                               
GET  /favicon.ico              404 Not Found                                                                                                                 
GET  /                         200 OK           

如何正确设置和使用ngrok并将Telegram机器人的消息转发到本地系统?

其他信息:

我还尝试让ngrok在我公开访问的服务器上工作。该域受SSL保护,我不需要为生产系统进行此转发。我只是想知道它是如何工作的。

ngrok http mybot.myserver.com:80

输出:

ngrok by @inconshreveable                                                                                                                                                                                                    (Ctrl+C to quit)

Session Status                online
Session Expires               7 hours, 56 minutes
Version                       2.2.8
Region                        United States (us)
Web Interface                 http://127.0.0.1:4040
Forwarding                    http://22cf6597.ngrok.io -> mybot.myserver.com:80
Forwarding                    https://22cf6597.ngrok.io -> mybot.myserver.com:80

Connections                   ttl     opn     rt1     rt5     p50     p90
                              0       0       0.00    0.00    0.00    0.00

结果(有和没有/etc/hosts条目)似乎都没问题:

HTTP Requests
-------------

POST /                         200 OK
POST /                         200 OK
POST /                         200 OK
POST /                         200 OK

但似乎仍然没有触发定义的URI。

1 个答案:

答案 0 :(得分:3)

你可以试试这个:

ngrok http telegrambot.sandbox.loc:80 -host-header=telegrambot.sandbox.loc