我已经设置了一个TwiML箱,用于处理我的一个号码上的传入传真。垃圾箱看起来像(如果我没记错的话,还没有用于编辑现有传真 TwiML 垃圾箱的仪表板:))
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Receive action="my/api/endpoint" methods="POST" storeMedia="false"/>
</Response>
但是,我不认为这是我的TwiML垃圾箱的问题。进入调试器,我看到 11200 错误,服务连接问题。似乎连接问题与 TwiML 垃圾箱处理程序有关:
发布 https://handler.twilio.com/fax/received
请求消息文本:";将重试直到 2018-04-20T23:07:25.893Z">
响应正文:"HTTP 检索失败">
问题在特维利奥这边,对吧? 还有什么我应该检查的吗?
我有同样的错误。
该错误只是因为 twilio 没有从您的操作终端节点返回预期结果。 首先,您应该返回以下 XML,其中包含您正确执行action
属性
<?xml version="1.0"?>
<Response>
<Receive action="/api/fax/received/file"/>
</Response>
其次,您应该在/api/fax/received/file
上返回 200 OK 响应。这意味着您应该以有效的响应进行响应,确认您已将该传真文件发送到twilio,即200响应代码。
在您的情况下:
现在,您应该<your-domain>/my/api/endpoint
活动状态,并且可以像action="my/api/endpoint"
一样从twilio访问。 当 Twilio 调用此端点时,您应该返回 200 OK 响应,确认您获得了该文件,否则 twilio 会认为存在错误"HTTP 检索失败"。
检查您的action="my/api/endpoint"
(/fax/received),并确保回复 200。
如果编程语言对您无关紧要,那么我在两个端点上的代码在 PHP 中如下所示。第一种方法(终结点)与 twilio 上的电话号码映射,第二种方法是操作属性。这就是我摆脱该错误的方式。
// this is /api/incoming/fax endpoint and I on twilio i have put this URL on the phone number
// this method will be called via /api/incoming/fax when any incoming fax
public function incomingFax(Request $request){
$twimlResponse = new SimpleXMLElement("<Response></Response>");
$recieveEl = $twimlResponse->addChild('Receive');
$recieveEl->addAttribute('action', '/api/fax/received/file');
return response($twimlResponse->asXML(), 200)
->header('Content-Type', 'text/xml');
}
// this is /api/fax/received/file endpoint which will be called by twilio
//always return 200
public function receivedFaxFile(Request $request)
{
$inputs = $request->all();
$from = $inputs['From'];
$media_url = $inputs['MediaUrl'];
if(isset($inputs['MediaUrl'])&&isset($inputs['To'])){
$thread = Thread::where(array("out_did"=>$to))->latest()->first();
$slack = new Slack(config("app.slack_access_key"));
$this->sendAttachment($from,$to,$media_url,$thread->thread_ts);
}
return response('', 200); // should return 200
}