You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel BotMan Studio对接Telegram失败,执行注册命令报404错误求助

解决BotMan Studio对接Telegram时botman:telegram:register命令404错误

看起来你遇到的问题核心是Telegram请求你的webhook URL时返回404,虽然你自己访问Web界面正常,但这里有几个关键的排查点,我帮你梳理下:

1. 先看最明显的问题:Telegram API URL缺少Bot Token

从你的错误信息里能看到请求的URL是https://api.telegram.org/bot/setWebhook?url=https://83255e3c.ngrok.io/botman —— 注意bot后面是空的,正常应该是bot你的Token,比如bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11。这说明你的BotMan配置里没正确设置Telegram Token:

  • 打开.env文件,确认TELEGRAM_BOT_TOKEN字段填了你的Bot Token;
  • 或者检查config/botman/telegram.php里的token配置项,确保它读取了正确的环境变量值。

2. 确认BotMan的Webhook路由能处理POST请求

你自己访问Web界面用的是GET请求,但Telegram的webhook是POST请求,必须确保/botman路由能正确响应POST:

  • 检查routes/web.php里是否有BotMan的路由注册,正常情况下BotMan Studio会自动添加BotMan\BotMan\Routes\Web::register();,如果没有,手动添加POST路由:
    use App\Http\Controllers\BotManController;
    
    Route::post('/botman', [BotManController::class, 'handle']);
    
  • 用curl或Postman测试POST请求:curl -X POST https://83255e3c.ngrok.io/botman,如果返回404,说明路由确实有问题,需要排查路由缓存(执行php artisan route:clear)或者路由优先级的问题。

3. 排除Laravel的CSRF保护拦截

Laravel默认会对web路由的POST请求做CSRF验证,而Telegram的webhook请求不会携带CSRF令牌,这会导致请求被拒绝(可能表现为404或419状态码):

  • 打开app/Http/Middleware/VerifyCsrfToken.php,在$except数组里添加'botman':
    protected $except = [
        'botman',
    ];
    

4. 检查Ngrok的转发状态

虽然你访问Web正常,但偶尔Ngrok会话过期或者端口映射异常也会导致问题:

  • 重启Ngrok,确保命令是ngrok http 8000(对应你Laravel项目运行的端口,比如8000或80);
  • 复制新生成的Ngrok URL,重新执行php artisan botman:telegram:register命令。

5. 手动调用Telegram API测试

如果上面的步骤都试过还是不行,直接手动调用Telegram的setWebhook接口来获取更详细的错误信息:

curl -X POST "https://api.telegram.org/bot你的Token/setWebhook?url=https://你的NgrokURL/botman"

执行后Telegram会返回JSON格式的结果,告诉你具体是URL无效、权限问题还是其他错误,比Laravel的错误提示更直接。

按照这个顺序排查,应该能很快解决问题~

内容的提问来源于stack exchange,提问作者Stepan Kurakin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:55:18