在 Twilio 中 <Redirect> 之后 Webhook 无效

Webhook not valid after <Redirect> in Twilio

我正在尝试在 twilio 中测试工作流程,工作流程是这样的:

除此第二个端点之外的所有端点都得到了正确验证。在验证这样的重定向时,是否需要考虑任何特殊情况?

如果重要的话,我正在使用 laravel。

[编辑 1]

twiml 看起来像这样

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Say></Say>
    <Redirect>https://example.com/webhook/call/handle-incoming-call?Enqueue=1</Redirect>
</Response>

重定向到 url 请求后 returns 出现 403 错误。

为了验证,我在 laravel 中的路由中间件中使用了以下代码。

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Response;
use Twilio\Security\RequestValidator;

class TwilioRequestValidator
{
    /**
     * Handle an incoming request.
     *
     * @param \Illuminate\Http\Request $request
     * @param \Closure $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        // Be sure TWILIO_TOKEN is set in your .env file.
        // You can get your authentication token in your twilio console https://www.twilio.com/console
        $requestValidator = new RequestValidator(env('TWILIO_TOKEN'));

        $requestData = $request->toArray();

        // Switch to the body content if this is a JSON request.
        if (array_key_exists('bodySHA256', $requestData)) {
            $requestData = $request->getContent();
        }
        $isValid = false;

        if ($request->hasHeader('X-Twilio-Signature')) {
            $isValid = $requestValidator->validate(
                $request->header('X-Twilio-Signature'),
                $request->fullUrl(),
                $requestData
            );
        }


        if ($isValid) {
            return $next($request);
        } else {
            return new Response('Invalid Request', 403);
        }
    }
}

谢谢。

此处为 Twilio 开发人员布道师。

而不是使用 request->toArray() 其中 returns 所有参数,您只需要主体参数。查询字符串参数已在 request->fullUrl().

中处理

请尝试 request->post() 获取 POST 数据。