Ошибка обработчика приема приемника TwiML-приемника программируемого факса Twilio 11200

Я установил корзину TwiML для обработки входящих факсов на один из моих номеров. Корзина выглядит так (если я правильно помню, панели инструментов для редактирования существующих ящиков TwiML для факсов пока нет :))

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

Однако я не считаю, что это проблема с моей корзиной TwiML. Заходя в отладчик, вижу 11200 ошибок, проблемы с подключением к сервису. Кажется, проблема с подключением связана с обработчиком bin TwiML:

ОПУБЛИКОВАТЬ https://handler.twilio.com/fax/received

Текст сообщения запроса: "; будет повторять попытку до 2018-04-20T23: 07: 25.893Z"

Тело ответа: «Ошибка получения HTTP»

Проблема на стороне Twilio, верно? Что еще я должен проверить?


person crunk1    schedule 20.04.2018    source источник
comment
Откуда взять URL handler.twilio.com/fax/received?   -  person philnash    schedule 24.04.2018
comment
Я видел это в отладчике Twilio. Я предполагаю, что служба Twilio вызывает этот URL-адрес, когда вы настроили его для использования корзины TwiML.   -  person crunk1    schedule 25.04.2018
comment
Вы настроили номер своего факса, чтобы он звонил в TwiML Bin, когда приходит факс?   -  person philnash    schedule 26.04.2018
comment
Я сделал, да. В настоящее время он не настроен таким образом, поскольку не работает, но я могу изменить его, чтобы проверить.   -  person crunk1    schedule 26.04.2018
comment
Если вы хотите использовать свою TwiML Bin при получении факса, вам необходимо указать настройки входящего факса вашего номера в TwiML Bin. Сообщите мне, как это происходит.   -  person philnash    schedule 26.04.2018


Ответы (1)


У меня была такая же ошибка.

Ошибка возникает только потому, что 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