У меня была такая же ошибка.
Ошибка возникает только потому, что twilio не получил ожидаемого результата от конечной точки действия. Сначала вы должны вернуть следующий XML-код с атрибутом action
, который вы делаете правильно.
<?xml version="1.0"?>
<Response>
<Receive action="/api/fax/received/file"/>
</Response>
Во-вторых, вы должны вернуть ответ 200 OK на /api/fax/received/file
. Это означает, что вы должны ответить действительным ответом, подтверждающим, что вы получили этот факсимильный файл в twilio, то есть с кодом ответа 200.
В вашем случае:
Теперь у вас должно быть <your-domain>/my/api/endpoint
активным и доступным из twilio, как и у вас action="my/api/endpoint"
. и когда twilio вызывает эту конечную точку, вы должны вернуть ответ 200 OK, подтверждающий, что вы получили файл, в противном случае twilio будет думать, что произошла ошибка «HTTP Retrieval Failure».
проверьте свой _6 _ (/ факс / полученный) и убедитесь, что вы ответили 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
}
person
webDev
schedule
06.06.2018