Webhook <Redirect> 在 Twilio 之后无效



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

  • 一个呼叫进来,我的服务器被twilio击中,请求是有效的根据docs
  • webhook返回一个带有重定向到另一个端点的Twiml,以便排队调用。
  • 在此端点上,webhook无效。

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

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

[Edit1]

漩涡是这样的

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

重定向到该url后,请求返回一个403错误。

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

<?php
namespace AppHttpMiddleware;
use Closure;
use IlluminateHttpResponse;
use TwilioSecurityRequestValidator;
class TwilioRequestValidator
{
/**
* Handle an incoming request.
*
* @param IlluminateHttpRequest $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(),您只需要body参数。查询字符串参数已经在request->fullUrl()中处理了。

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