【问题标题】:Twilio Programmable Fax TwiML bin receive handler error 11200Twilio 可编程传真 TwiML bin 接收处理程序错误 11200
【发布时间】:2018-04-20 22:47:28
【问题描述】:

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

<?xml version="1.0" encoding="UTF-8"?>
<Response>
  <Receive action="my/api/endpoint" methods="POST" storeMedia="false"/>
</Response>

不过,我认为这不是我的 TwiML bin 的问题。进入调试器,我看到 11200 错误,服务连接问题。似乎连接问题与 TwiML bin 处理程序有关:

发布https://handler.twilio.com/fax/received

请求消息文本:“;将重试到 2018-04-20T23:07:25.893Z”

响应正文:“HTTP 检索失败”

问题出在 Twilio 这边,对吧? 还有什么我应该检查的吗?

【问题讨论】:

  • 你从哪里得到handler.twilio.com/fax/received的URL?
  • 我在 Twilio 调试器中看到了它。我的猜测是,当您将其设置为使用 TwiML bin 时,Twilio 服务会调用该 URL
  • 您是否设置了传真号码,以便在传真到达时呼叫您的 TwiML Bin?
  • 我做到了,是的。由于它无法正常工作,因此目前尚未以这种方式设置,但我可以将其改回以进行验证。
  • 如果您想在收到传真时使用您的 TwiML Bin,那么您需要将您号码的传入传真设置指向 TwiML Bin。让我知道这是怎么回事。

标签: twilio twilio-twiml fax


【解决方案1】:

我有同样的错误。

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

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

其次,您应该在/api/fax/received/file 上返回 200 OK 响应。这意味着您应该以有效的响应进行响应,确认您已将该传真文件发送到 twilio,即 200 响应代码。

在你的情况下:

现在您应该有&lt;your-domain&gt;/my/api/endpoint 活动并且可以从 twilio 访问,就像您拥有action="my/api/endpoint" 一样。并且当 twilio 调用此端点时,您应该返回 200 OK 响应以确认您已获取文件,否则 twilio 会认为存在错误“HTTP Retrieval Failure”。

检查您的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 
}

【讨论】:

    猜你喜欢
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多