当前位置: 首页 > 知识库问答 >
问题:

POST:laravel中Messenger Bot出现500内部服务器错误

燕禄
2023-03-14

我通过Ngrok URL为我的Facebook页面设置了我的Webhok,并应用了Messenger平台的所有要求,但当我将消息发送到我的Facebook页面时,我遇到以下错误:

POST /Facebook_Messenger_Token 500 Internal Server Error 

在Laravel中的routs文件中,我使用Get和Post函数,如下所示:

Route::get('Facebook_Messenger_Token', 'MessengerController@index');
Route::post('Facebook_Messenger_Token', 'MessengerController@index');

发送消息时,我在storage/app.logs/laravel中收到以下错误:

[2020-06-08 18:44:21] local.ERROR: Undefined variable: id {"exception":"[object] (ErrorException(code: 0): Undefined variable: id at C:\\xampp\\htdocs\\AzadApp\\app\\Http\\Controllers\\MessengerController.php:17)
[stacktrace]

我的公共职能索引:

public function index()
    {
        // here we can verify the webhook.
        // i create a method for that.
        $this->verifyAccess();

        $user    = json_decode($this->getUser($id)); --this is line 17
        $input   = json_decode(file_get_contents('php://input'), true);
        $id      = $input['entry'][0]['messaging'][0]['sender']['id'];
        $message = $input['entry'][0]['messaging'][0]['message']['text'];

        $response = [
            'recipient'     =>  ['id'   => $id ],
            'message'       =>  ['text' => "Thanks for watching {$user->first_name} {$user->last_name}! :)"]
        ];

        $this->sendMessage($response);
    }

请支持和感谢。

共有1个答案

叶举
2023-03-14

$id是在第19行(即第17行之后)定义的

$user=json\u decode($this-

你应该把上面这一行放在第19行之后

$id=$input['entry'][0]['messaging'][0]['sender']['id']

不要向上移动第19行(正如我在评论中所说的),而是向下移动第17行

$id=$input['entry'][0]['messaging'][0]['sender']['id']

正在使用以前定义的$input。

你所要做的就是把第17行移到第19行下面。

所以现在的完整函数应该是这样的:

public function index()
    {
        // here we can verify the webhook.
        // i create a method for that.
        $this->verifyAccess();


        $input   = json_decode(file_get_contents('php://input'), true);
        $id      = $input['entry'][0]['messaging'][0]['sender']['id'];
        $message = $input['entry'][0]['messaging'][0]['message']['text'];
        $user    = json_decode($this->getUser($id));

        $response = [
            'recipient'     =>  ['id'   => $id ],
            'message'       =>  ['text' => "Thanks for watching {$user->first_name} {$user->last_name}! :)"]
        ];

        $this->sendMessage($response);
    }

 类似资料:
  • 我正在为一个web使用flask构建一个api,我已经有了一个数据库,GET请求可以工作,但当我尝试发布时,它会给我这个错误 500内部服务器错误 这是我写的代码 这是我在邮递员上添加的请求 我还使用了一个本地服务器,我查看了其他链接,每个人都在询问日志,如果我没有错,我想我可以从 看法 这是日志的截图:(我想) 到底是什么问题我不明白 编辑:这是完整的代码: 第二次编辑:控制台日志 添加def错

  • 问题内容: 我正在尝试为这个工作中的项目学习AJAX。我有一个网站加载病人正在服用的药物。 我递归调用此AJAX函数,以便它将附加一个包含单种药物和7天历史记录的新表。我在使代码在FF和IE中执行时遇到问题。在chrome中效果很好。我有显示xmlhttp.status的警报,这是我得到的: xmlhttp.status == 500(内部服务器错误)。 我注释掉了所有递归,因此将其范围缩小到了这

  • 我收到以下错误 内部服务器错误 服务器遇到内部错误或配置错误,无法完成您的请求。 请联系服务器管理员,webmaster@strivemedicare.in并告知他们错误发生的时间,以及可能导致错误的任何行为。 有关此错误的详细信息,请参阅服务器错误日志。 此外,尝试使用错误文档处理请求时遇到 500 内部服务器错误错误。

  • 我一直试图在nginx上安装CakePHP,但我遇到了一个死胡同。尝试访问web根目录时,我收到一个500内部服务器错误。我在我的错误中得到了这个错误。日志: PHP消息:PHP致命错误:require():无法打开required'/var/www/html/test/vendor/autoload。php'(include_path='。:/usr/share/php:/usr/share/p

  • 我想用ajax向laravel中的控制器发送post请求。ajax请求发送两个输入参数,我希望controller在数据库中找到包含第一个参数的列,然后使用第二个输入参数设置name属性。但是我在控制台500中有这个错误消息(内部服务器错误)。 Ajax功能: 路线: 控制器功能: 而且我导入csrf无处不在,因为上次当我做AJAX调用我有这个csrf的问题,下面的代码已经修复了我的问题,但现在不

  • 所以我用拉雷维尔和护照,我有问题。当我向我的AuthController@login这是给我一个500内部服务器错误。以下是我的工作内容 我将laragon与apache服务器和mysql一起用于Environment。我可以毫无问题地向我的注册路径发出请求,但我的登录路径一直失败。不确定我错过了什么 这是我的AuthController。php 这是我存储在中的变量。环境文件 这是我的api路由