我有一个端点,当传真开始接收时会触发该端点。在这里,我有传真的ID,但它需要一些时间才能实际收到,所以我可以下载它的内容。因此,将其视为“接收......收到”流程。
public function endpoint() {
// Here I get notified when started receiving
$fax = $twilio->fax->v1
->faxes($request['FaxSid'])
->fetch();
// $fax->status is receiving
$twimlResponse = new \SimpleXMLElement("<Response></Response>");
$twimlResponse->addChild('Receive');
return response($twimlResponse->asXML())
->header('Content-Type', 'text/xml');
}
使用$fax
,我可以获得它的id并开始以15秒的间隔观察它,但是有问题。我必须快速返回响应,否则Twilio会抛出超时错误。
我尝试创建一个不同的功能:
public function receivedFax($fax) {
$twilio = new Client("XXX", "YYY");
while ($fax->status == 'receiving') {
$fax = $twilio->fax->v1
->faxes($fax->sid)
->fetch();
sleep(15);
}
// do stuff
}
但是,如果我在endpoint()
方法中返回响应之前调用它,因为php不是异步的,它会抛出超时。
处理这种情况的正确方法是什么?