Я пытаюсь отладить небольшой навык Alexa, созданный с помощью фреймворка flask-ask. Моя проблема в том, что я продолжаю получать ошибку 400 при простом LaunchRequest. Соответствующая функция намерения такова:
@ASK.launch
def launch():
"""Welcome & ask for users intent."""
APP.logger.debug('LAUNCHING SESSION')
return question(render_template('welcome'))
Когда я запускаю сервер локально в режиме отладки (туннелируется через ngrok) и делаю простой запрос на запуск («start my_skills_name»), flask регистрирует два запроса:
$ python main.py app --run
INFO:werkzeug: * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
INFO:werkzeug:127.0.0.1 - - [18/Feb/2018 12:47:43] "POST / HTTP/1.1" 400 -
INFO:werkzeug:127.0.0.1 - - [18/Feb/2018 12:47:44] "POST / HTTP/1.1" 200 -
Сообщение журнала от функции намерения никогда не отображается.
Когда я использую навык с помощью zappa и делаю zappa tail
, я вижу второй запрос (SessionEndedRequest). Это возвращает код состояния 200, но, похоже, вызывает некоторое исключение:
"request":{
"type":"SessionEndedRequest",
"requestId":"<1234>",
"timestamp":"2018-02-18T11:54:46Z",
"locale":"de-DE",
"reason":"ERROR",
"error":{
"type":"INVALID_RESPONSE",
"message":"An exception occurred while dispatching the request to the skill."
}
}
Функция для этого запроса снова очень проста:
@ASK.session_ended
def session_ended():
APP.logger.debug('ENDING SESSION')
return statement('bye')
Сообщение журнала не отображается, и ошибка остается прежней, даже если я удаляю эту функцию и вообще не обрабатываю SessionEndedRequests.
Я немного не понимаю, что здесь может происходить. Запросы действительно доходят до моего сервера, что говорит о том, что сам навык настроен правильно. Похоже, что они каким-то образом не перенаправляются к правильным функциям намерений, но, поскольку я полностью полагаюсь на декоратор ask.intent
, я понятия не имею, как это исправить. Может ли кто-нибудь дать мне подсказку?