2016-11-21 9 views
0

Я пробовал большинство решений здесь, но не мог понять, почему мой звонок не достигает другой стороны. Хотя Твилио говорит, что как входящие, так и исходящие были успешно завершены.Twilio вызывает возврат «Произошла ошибка приложения»

Вот необходимая часть моего кода

from flask import Flask 
from flask import request, Response 

@app.route('/makeACall', methods=['POST']) 
def exchange_voice(): 
    account_sid = "XXXX" 
    auth_token = "XXXX" 
    client = TwilioRestClient(account_sid, auth_token) 
    call = client.calls.create(
    to="+1857XXX", 
    from_="+1510XXX", 
    url="cloudserver.com/answerWithXML", 
    method='POST' 
) 
    print(call.sid) 

@app.route("/answerWithXML", methods=['GET', 'POST']) 
def sendBackXML(): 
    resp = twilio.twiml.Response(); 
    resp.say("Welcome!"); 

//Was originally sending str(resp) as in docs 

    return Response(resp, content_type="application/xml") 

Отладчик дает

  • "11200 - HTTP извлечения провал" для возвращаемого ответа
  • "12100 - Документ сбой синтаксического анализа", когда str (resp) был возвращен
+0

Что происходит, когда вы просто делаете запрос GET на свой «answerWithXML» маршрут в браузере? Вы также импортируете библиотеку 'twilio' (я вижу только импорт для Flask)? – philnash

+0

@philnash Да, импорт twilio правильно добавлен. Я пропустил их здесь. Когда я возвращал str (resp), запрос GET отображался «Welcome!». Звонки не прошли даже тогда. Однако обмен сообщениями работает отлично. –

+0

Мне интересно, можем ли мы звонить с пробными аккаунтами. Поскольку я тестировал API, я не обновил его до полной учетной записи. –

ответ

0

Twilio разработчик евангелист здесь.

Я не совсем уверен, что здесь происходит. Ваш первый вариант должен работал, то есть, с помощью следующего кода:

@app.route("/answerWithXML", methods=['GET', 'POST']) 
def sendBackXML(): 
    resp = twilio.twiml.Response(); 
    resp.say("Welcome!"); 
    return str(resp); 

Вы можете попробовать это снова и убедиться, что когда вы делаете запрос POST к вашей локальной версии кода, который возвращает XML обратно, что выглядит следующим образом:

<Response> 
    <Say>Welcome!</Say> 
</Response> 

Если вы это получили, попробуйте еще раз позвонить из Twilio. Если нет, то обновите сообщение об ошибке, и я попытаюсь снова помочь.

+0

спасибо за ваш ответ. Я попытался напечатать ответ в функции sendBackXML(). В моих журналах я 1-й получил ** «Функция просмотра не возвращала ответ» **, и звонок получил сообщение с сообщением ** «Произошла ошибка приложения» **. 50-х после того, как звонок был разрезан, XML был напечатан точно так же, как указано выше. Нужно ли мне возвращать какое-либо значение в функции «exchange_voice»? –

+0

Затем я попытался использовать файл voice.xml Twilio. 'call = client.calls.create (url =" http://demo.twilio.com/docs/voice.xml ", to =" + 185xx ", от _ =" + 151xx ")' Это тоже дало такая же ошибка. –

+0

Хорошо, странно, у вас, похоже, есть символ пробела нулевой ширины в URL-адресе Twilio. Когда я копирую и вставляю его в браузер, я получил 'https: // demo.twilio.com/docs/voice.x% E2% 80% 8C% E2% 80% 8Bml'. Поэтому попробуйте: https://demo.twilio.com/docs/voice.xml – philnash