Twilio可编程传真TwiML bin接收处理程序错误11200

时间:2018-04-20 22:47:29

标签: twilio twiml fax twilio-twiml

我已经设置了一个TwiML bin来处理我的一个号码上的传入传真。垃圾箱看起来像(如果我没记错的话,现在没有用于编辑现有传真TwiML垃圾箱的仪表板:))

<?xml version="1.0" encoding="UTF-8"?>
<Response>
  <Receive action="my/api/endpoint" methods="POST" storeMedia="false"/>
</Response>
但是,我并不相信这是我的TwiML垃圾箱的问题。进入调试器,我看到11200错误,与服务的连接问题。似乎连接问题与TwiML bin处理程序有关:

  

POST https://handler.twilio.com/fax/received

     

请求消息文本:&#34 ;;将重试,直到2018-04-20T23:07:25.893Z&#34;

     

响应正文:&#34; HTTP检索失败&#34;

这个问题出现在Twilio的一边,对吗? 我还应该检查一下吗?

1 个答案:

答案 0 :(得分:0)

我有同样的错误。

错误只是因为twilio没有从您的操作终结点获得预期的结果。 首先,您应该使用正确执行的action属性返回以下XML

<?xml version="1.0"?>
<Response>
    <Receive action="/api/fax/received/file"/>
</Response>

第二,你应该在/api/fax/received/file返回200 OK回复。这意味着您应该回复有效的回复,确认您将该传真文件设置为twilio,即200响应代码。

在您的情况下:   

现在你应该{2}活跃并且可以从twilio获得<your-domain>/my/api/endpoint,因为你有action="my/api/endpoint"。当twilio调用此端点时,您应该返回200 OK响应,确认您已获得该文件,否则twilio将认为存在错误&#34; HTTP检索失败&#34;。

检查您的action="my/api/endpoint"(/传真/已收到),并确保以200回复​​。

如果编程语言对您无关紧要,那么两个端点的代码在PHP中如下所示。第一种方法(Endpoint)与twilio上的电话号码映射,第二种方法是action属性。这就是我摆脱这个错误的方法。

// 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 
}