Alexa Skill с использованием flask-ask: HTTP 500: ВНУТРЕННЯЯ ОШИБКА СЕРВЕРА

Я только учусь писать навыки Alexa с помощью Flask-Ask. Вот код для flask_app.py:

from flask import Flask, render_template
from flask_ask import Ask, statement, question, session
import random

app = Flask(__name__)

ask = Ask(app, "/")

def armstrong(num):

   order = len(str(num))

   num_sum = 0


   temp = num
   while temp > 0:
    digit = temp % 10
    num_sum += digit ** order
    temp //= 10


    if num == num_sum:
        return True
    else:
        return False

@ask.launch

def new_game():

  welcome_msg = render_template('welcome')

  return statement(welcome_msg)



@ask.intent("AnswerIntent", convert = {'first': int} )

def answer(first):

   if armstrong(int(first)):
    msg = render_template('win')
   else:
    msg = render_template('lose')

   return statement(msg)


if __name__ == '__main__':

app.run()

Это код для файла намерений JSON:

{
"intents": [{
  "intent": "AnswerIntent",
        "slots": [{
              "name": "number",
             "type": "AMAZON.NUMBER"
         }]
  }]
}

Это мои образцы высказываний:

AnswerIntent {number}
AnswerIntent My number is {number} 
AnswerIntent Is {number} an armstrong number

Но ошибка в моей командной строке:

[2017-07-09 15:37:07,543] ERROR in app: Exception on / [POST]
Traceback (most recent call last):
File "C:\Users\Sayantan Das\AppData\Local\Programs\Python\Python36\lib\site-    packages\flask\app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\Sayantan Das\AppData\Local\Programs\Python\Python36\lib\site-    packages\flask\app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\Sayantan Das\AppData\Local\Programs\Python\Python36\lib\site-    packages\flask\app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\Sayantan Das\AppData\Local\Programs\Python\Python36\lib\site-    packages\flask\_compat.py", line 33, in reraise
raise value
File "C:\Users\Sayantan Das\AppData\Local\Programs\Python\Python36\lib\site-    packages\flask\app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\Sayantan Das\AppData\Local\Programs\Python\Python36\lib\site-    packages\flask\app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:\Users\Sayantan Das\AppData\Local\Programs\Python\Python36\lib\site-    packages\flask_ask\core.py", line 571, in _flask_view_func
ask_payload = self._alexa_request(verify=self.ask_verify_requests)
File "C:\Users\Sayantan Das\AppData\Local\Programs\Python\Python36\lib\site-    packages\flask_ask\core.py", line 533, in _alexa_request
timestamp = aniso8601.parse_datetime(alexa_request_payload['request']['timestamp'])
 File "C:\Users\Sayantan Das\AppData\Local\Programs\Python\Python36\lib\site-     packages\aniso8601\time.py", line 120, in parse_datetime
isodatestr, isotimestr = isodatetimestr.split(delimiter)
AttributeError: 'int' object has no attribute 'split'
127.0.0.1 - - [09/Jul/2017 15:37:07] "POST / HTTP/1.1" 500 -

ngrok показывает следующую ошибку:

HTTP Requests
-------------

POST /                         500 INTERNAL SERVER ERROR

И ответ службы после ввода высказывания "start armstrong" при тестировании:

    There was an error calling the remote endpoint, which returned HTTP 500 :
    INTERNAL SERVER ERROR

Это мой первый навык Alexa, я пытаюсь реализовать его с помощью Flask и flask-ask на Python. Пожалуйста, помогите.


person Sayantan Das    schedule 09.07.2017    source источник
comment
То же самое. Еще одна странность этой ошибки заключается в том, что если вы скопируете JSON, сгенерированный тестером текста, и вставите его во вкладку JSON тестера, он действительно сработает.   -  person alpalalpal    schedule 10.07.2017
comment
@alpalalpal Я попробую ваше предложение.   -  person Sayantan Das    schedule 10.07.2017
comment
попробуйте снизить версию криптографии до 2.1 в вашем питоне.   -  person Kimi    schedule 02.04.2018


Ответы (1)


Похоже, проблема в инструментах тестирования Alexa. См. https://github.com/johnwheeler/flask-ask/issues/152 и https://forums.developer.amazon.com/questions/78372/timestamp-is-sent-in-different-formats.html.

Я могу подтвердить, что мой навык работает на устройстве Echo и на вкладке JSON в разделе Test на странице администратора Alexa. Но это не удается на echosim.io и на вкладке «Текст».

person pzzd    schedule 10.07.2017
comment
Проект flask-ask решил проблему с отметкой времени в коммите # 152. И echosim.io, похоже, теперь тоже работает. - person pzzd; 19.07.2017