2017-07-09 2 views
2

Je suis en train d'apprendre à écrire des compétences Alexa en utilisant Flask-Ask. Voici le code pour flask_app.py:Alexa Compétence utilisant flask-ask: HTTP 500: ERREUR SERVEUR INTERNE

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() 

Ceci est le code pour les intentions JSON:

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

Ce sont mes exemples: Utterances

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

Mais l'erreur ma ligne de commande est:

[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 montre l'erreur suivante:

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

POST/      500 INTERNAL SERVER ERROR 

Et la réponse du service, après son entrée Enoncé 'start armstrong' à tester est:

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

Ceci est mon premier Alexa Skill.I essaie de le mettre en œuvre en utilisant Flask et flask-ask sur Python. Aide de Pls.

+0

Même ici. Une autre chose étrange à propos de ce bogue est que si vous copiez le JSON généré par le testeur de texte et le collez dans l'onglet JSON du testeur, cela fonctionne réellement. – alpalalpal

+0

@alpalalpal Je vais essayer votre suggestion. –

Répondre

0

On dirait que cela peut poser un problème avec les outils de test Alexa. Voir https://github.com/johnwheeler/flask-ask/issues/152 et https://forums.developer.amazon.com/questions/78372/timestamp-is-sent-in-different-formats.html.

Je peux confirmer que mes compétences fonctionnent sur un appareil Echo et l'onglet JSON dans la section Test de la page d'administration d'Alexa. Mais il échoue à echosim.io et dans l'onglet Texte.

+0

Le projet flask-ask a traité le problème d'horodatage dans la livraison # 152. Et echosim.io semble fonctionner maintenant aussi. – pzzd