“ Alexa开发人员控制台中的“请求的技能响应出现问题”

时间:2019-01-12 04:08:35

标签: python-3.x alexa alexa-skills-kit alexa-skill flask-ask

情况: 因此,我遵循了senddex在youtube上的名为“ Alexa Skills w / Python and Flask-Ask”的第1部分,第2部分和第3部分的第3个视频简短教程。基本上,当我运行此技能时,alexa将从reddit.com上阅读我的前10个标题/ r / worldnews(不幸的是,这个帖子不能给出8个以上的URL)。

我遇到的错误: 我遵循了所有步骤,并在Amazon Alexa开发站点中对其进行测试时不断出现此错误,并说:“所请求的技能响应有问题”。我遇到的一个问题是alexa开发控制台已在几个月前进行了更新,并且完全不同,因此我不知道是否做错了什么。我看过的所有youtube视频都在旧版本上,该旧版本具有不同的处理方式。我将概述我所做的事情,希望你们能指出我做错了什么。

我尝试过的事情: 我还要提及的是,我曾尝试用return命令替换get_headlines函数的内容,该命令返回alexa的字符串,例如:“有效”。但是我在开发站点上收到了相同的错误消息。所以我猜我的代码很好,但是我可能在alexa开发人员帐户中配置了错误的设置。下面,我提供了为该简单程序完成的每个步骤的图片。

我已经采取的确切步骤:

1)我已经使用pip安装程序安装了flask,flask-ask和unidecode

2)我下载了ngrok来托管我的网站

3)代码:这是我运行过的代码(出于明显的原因,取出我的reddit用户名和密码)。它没有错误,并且首页运行良好。所以我想代码本身没有问题。

from flask import Flask, render_template
from flask_ask import Ask, statement, question, session
import json     
import requests 
import time
import unidecode 

app = Flask(__name__) 
ask = Ask(app, "/big_reader") 

def get_headlines(): # DESCRIPTION: get_headlines function will grab the headlines from redit and then its going "stringify" all the headlines together
    # 1) LOG INTO REDDIT API
    user_pass_dict = {
        'user': 'ENTER_YOUR_REDDIT_USERNAME',#'ENTER_YOUR_USERNAME',
        'passwd': 'YOUR_REDDIT_PASSWORD',
        'api_type': 'json'
    }
    # Requesting a session from api
    sess = requests.Session()
    sess.headers.update( {'User-Agent': 'I am testing Alexa Here'} ) 
    sess.post('https://www.reddit.com/api/login', data=user_pass_dict) 
    time.sleep(1) 

    url = 'https://reddit.com/r/worldnews/.json?limit=10' 
    html = sess.get(url)
    data = json.loads(html.content.decode('utf-8'))
    titles = [] 
    for listing in data['data']['children']:
        titles.append( unidecode.unidecode(listing['data']['title']) ) 
    titles = '...'.join([i for i in titles]) 
    return titles

################################# ALEXA STUFF ###################################################################################################
@app.route('/') 
def homepage():
    return "This is the Homepage"
# A) ALEXA ASKS SOMETHING: 
@ask.launch 
def start_skill():
    welcome_message = 'Sup, You want some news?'
    return question(welcome_message)    

# B) MY RESPONSE: 
@ask.intent("YesIntent")
def share_headlines():
    headlines = get_headlines() 
    headline_msg = 'The current world news headlines are {}'.format(headlines) #string format the headlines?
    return statement(headline_msg)
@ask.intent("NoIntent")
def no_intent():
    bye_text = 'bye'
    return statement(bye_text)

# RUN
if __name__ == '__main__':
    app.run(debug=True)

4)我如何设置ALEXA技能的图片:以下是10张图片,它们准确显示了我的Alexa开发人员网页的外观

https://ibb.co/ZdMdgGF <-我的意图

https://ibb.co/4N4JygL <-我的技能的JSON编辑器屏幕

https://ibb.co/c2HDw8h <-我的界面屏幕是什么

https://ibb.co/BP6ck2L <-我的ngrok运行后的外观:ngrok http 5000

https://ibb.co/3k5J7wZ <-将我的ngrok https地址复制到Alexa端点。

https://imgur.com/H6QGWOo <-我什至尝试在其末尾添加“ / big_reader”。

https://ibb.co/3s3tVQH <-构建成功

https://ibb.co/wgF7GQ4 <-我试图开始大量的读者技能并且出现错误

1 个答案:

答案 0 :(得分:0)

我有同样的问题。

我通过使用// App.jsx export class Test extends Component { _isMounted = false; state = { programs: null }; componentDidMount() { this._isMounted = true; API.callAPI().then(data => { if (this._isMounted) { this.setState({ programs: data.data.programs }); } }); } componentWillUnmount() { this._isMounted = false; } render() { // ... } } // api.js const callAPI = () => { return axios .get("/article", { headers: { Authorization: token } }) .then(response => response.data); }; 将密码降级到2.1.4来解决了该问题