尝试从我的网络代码段获取响应时,Twilio返回500内部服务器错误

时间:2015-09-20 22:51:16

标签: twilio

嗨!

我在Laravel中安装了Twilio并在路线上运行了下面的代码(虽然我也在Controller中使用相同的代码在一个函数中复制了它)

现在我没有使用命名空间或尝试访问该类的任何问题,因为它在使用该方法时不会出现错误。

该片段就像这样简单:

Route::match(array('GET', 'POST'), '/incoming', function()
{
  $twiml = new Services_Twilio_Twiml();
  $twiml->say('Hello - your app just answered the phone. Neat, eh?', array('voice' => 'alice'));
  $response = Response::make($twiml, 200);
  $response->header('Content-Type', 'text/xml');
  return $response;
});

所以我收到了我的电话号码,然后转到Twilio页面并添加到手机绑定到此代码段所在网址的网址

有点像www.maweb.con / incoming

然后我从厨房打电话(这应该没有什么区别大声笑)然后我收到来自Twilion的电子邮件错误说当他们“去”那个URL来检索信息时他们得到的只是一个内部服务器错误500。

我对错误的细节深表不满,我发现了这个:

<abbr title="Illuminate\Session\TokenMismatchException">TokenMismatchException</abbr> in 

我熟悉这种错误,当您尝试通过Ajax片段发送参数时也会发生这种错误。你需要在中间件的VerifyToken php文件中做一个例外,但是我现在不知道参数是什么,因为它必须使用Twiml库而且上帝知道那里有什么,它是一个黑盒子。

我没有要求twilio。我刚刚通过composer安装它,但就像我说的那样,它确实识别了类services_twilio_twlim。在访问该URL时尝试获取响应时出错。

对于不基于我所包含的框架的Web:

<?php
    header("content-type: text/xml");
    echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
require_once('twilio-php-master/Services/Twilio.php');

?>
<Response>
    <Say>Hello Monkey</Say>
</Response>

1 个答案:

答案 0 :(得分:1)

因此,我希望在使用Twilio应用程序时可以帮助其他人:

首先,Twilio太棒了,我很喜欢它,但当然,需要知道如何处理所有事情:

您需要知道编码方案之间的关键重要性:您可能正在使用PHP框架,或者您可能正在编写本机PHP而不使用任何MVC

  • 如果您使用的是Laravel,则需要通过以下方式导入该类:

    使用Services_Twilio_Twiml;

我觉得你已经通过Composer安装了Twilio类。

如果您不在框架上,只需执行旧的require_once(Twilio.php文件的路径),例如Twilio-php-master / Services / Twilio.php

现在,这个问题让我陷入了一段时间。

即使您在Twilio页面上正确输入了URL并且您的电话已正确配置为指向它,如果您使用的是Laravel,因为Twilio通过POST发送其数据(默认情况下),Laravel中针对XSS的令牌保护将通过VerifyCSSR中间件文件阻止它。 由于您无法看到正在发布的值,因此您无法将它们添加到例外中,您的应用程序将无法运行。 因此,您需要通过URL查询发送它,即将其更改为HTTP GET。