Php 从http请求获取输入数组-Twilio

Php 从http请求获取输入数组-Twilio,php,laravel,twilio,Php,Laravel,Twilio,第一次这样做。我很难完成这个任务。现在已经三天了。我将php Twilio/sdk转换为Laravel,并成功地将带有Twilio api的文本发送到我的手机。我现在正在考虑如何接收回复文本 (我为此尝试了laravel软件包,他们只发送文本,没有收到回复) 我的代码有错误 Undefined index: From 如果我把标题移到我的视图中,我会得到一个呜呜声错误 我还尝试用 $name = in_array(Input::get('name'), $people) ? Input::ge

第一次这样做。我很难完成这个任务。现在已经三天了。我将php Twilio/sdk转换为Laravel,并成功地将带有Twilio api的文本发送到我的手机。我现在正在考虑如何接收回复文本

(我为此尝试了laravel软件包,他们只发送文本,没有收到回复) 我的代码有错误

Undefined index: From
如果我把标题移到我的视图中,我会得到一个呜呜声错误

我还尝试用

$name = in_array(Input::get('name'), $people) ? Input::get('name') : 'default'; 
这是我的接收函数

public function getReceiveSMS() {
    // make an associative array of senders we know, indexed by phone number
$people = array(
    "1111111111"=>"Curious George",
    "1111111111"=>"Boots",
    "1111111111"=>"Virgil",
    "1111111111"=>"Stephen",
);

// if the sender is known, then greet them by name
// otherwise, consider them just another monkey
if(!$name = $people[$_REQUEST['From']]) {
    $name = "Monkey";
}

// now greet the sender
header("content-type: text/xml");
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";

return View::make('account.sms.receive-sms');
}
}
公共函数getReceiveSMS(){
//制作一个我们知道的发送者的关联数组,按电话号码索引
$people=数组(
“1111111”=>“好奇的乔治”,
“1111111”=>“靴子”,
“1111111”=>“维吉尔”,
“1111111”=>“Stephen”,
);
//如果知道发件人,请直呼其姓名
否则,认为他们只是另一只猴子
如果(!$name=$people[$\u请求['From']]){
$name=“Monkey”;
}
//现在问候寄件人
标题(“内容类型:text/xml”);
回音“\n”;
返回视图::make('account.sms.receive sms');
}
}
这是我的看法

@extends('layout.main')

@section('content')

<Response>
    <Message><?php echo $name ?>, thanks for the message!</Message>
</Response>


@stop
@extends('layout.main'))
@节(“内容”)
,谢谢你的留言!
@停止

我不知道Twilio的API,但似乎错误只是基本的PHP,而且Laravel远没有普通PHP那么宽松,这意味着未定义的变量和索引将像致命错误一样停止处理,这让您望而却步

如果事实上发送者可能是未知的,并且当这种情况发生时,将永远不会设置来自的
索引,则以下操作应防止您的代码触发
通知

// if the sender is known, then greet them by name
// otherwise, consider them just another monkey
if(!isset($_REQUEST['From']) || !$name = $people[$_REQUEST['From']]) {
    $name = "Monkey";
}
对于格式不正确的XML,请尝试以下操作,而不是简单的
视图::make()


您如何发送此请求?我的意思是包含电话号码的输入的名称是什么?因为这里您假设这个输入的名称是“From”!这就是你希望Twilio呼叫的控制器?我想您正在尝试在浏览器中测试它。它需要一个名为
的请求参数,该参数来自您尚未提供的
。此外,您不太可能扩展layout.main,
Response
元素应该是您返回的所有内容。是的,我使用的是routes和此控制器,它具有发送功能和接收功能。我的目标是在浏览器中测试它并使其正常工作。扩展layout.main只不过是我整个应用程序的一个模板。这听起来像是你在说放弃html,把它放在控制器和路由中。Twilio的代表告诉我“您希望确保您的消息URL返回XML,而不是HTML。Twilio无法理解HTML。”如果是这种情况,那么我将如何以及在何处呈现接收函数和xml以获得回复。twilio代表还说,要接收SMS,您需要为您的twilio电话号码配置消息URL。消息url是@DaveMorrissey,如果我只是在浏览器中测试它,如何提供from。我是否需要创建另一个表单,该表单的输入类型与我在发送文本时所做的类似,然后将其传递给我的路径,该路径会抓住我的控制器?我用我的代码替换了你的代码,但仍然收到了一个呼呼错误。这是一个链接,我认为有一些带有标题的东西把它扔掉了。至少未定义的索引错误似乎消失了。现在出现了“开始和结束标记不匹配”,这意味着XML格式不正确。我认为这与标题没有任何关系,但我们需要查看其余代码以进一步帮助您。smscocontroller.php Routes send sms view receive smsviewhttp://laravel.io/bin/Y554V 导航到路线您是否尝试过在接收视图开始时不添加注释?此外,请尝试从XML视图中删除标题声明,并查看是否可以将其以纯文本形式打印,然后通过XML验证器运行它。最后,请参阅编辑后的答案,了解更改Laravel标题的正确方法。感谢您的修订和帮助。我认为这解决了标题问题,因为我现在在视图中有了响应。但是我从视图中得到一个未定义的$name。
return Response::view('account.sms.receive-sms', compact('name'))->header('Content-Type', 'text/xml');