嗨!
我在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>
答案 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。