- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 python 开发一个 Web 服务,该服务将作为自定义 Alexa Skill 的后端逻辑运行。我正在使用 Flask、flask-ask(Alexa Skill Kit) 和 MySQL 扩展来开发此 Web 服务。
此 Alexa Skill 将允许用户预订 parking 位、检查 parking 场是否已满并查找 parking 位。
我还有一个本地数据库,其中存储了所有 parking 相关信息。
我遇到的问题是只能返回查询的第一个结果。
这是我的 intent 之一的代码:
'''This is a Web Service for the *** Parking skill'''
author__ = '*****'
import logging
from flaskext.mysql import MySQL
from flask import Flask, render_template
from flask_ask import Ask, statement, question
mysql = MySQL()
app = Flask(__name__)
app.config.from_object(__name__)
app.config['MYSQL_DATABASE_USER'] = '*****'
app.config['MYSQL_DATABASE_PASSWORD'] = '*****'
app.config['MYSQL_DATABASE_DB'] = '*****'
app.config['MYSQL_DATABASE_HOST'] = '*****'
mysql.init_app(app)
ask = Ask(app, "/")
logging.getLogger("flask_ask").setLevel(logging.DEBUG)
@ask.intent('AvailableParking')
def available(occupancy):
#converts the inputted occupancy variable into all caps, to match the DB schema
occupancy = occupancy.upper()
#creates cursor variable that connects to DB
cursor = mysql.connect().cursor()
#connects to db and executes SQL query that displays all garages where the OCCUPANCY field matches the users slot input (OPEN OR CLOSED)
cursor.execute("SELECT GARAGE_NAME FROM GARAGES WHERE OCCUPANCY = %s", (occupancy,))
#returns the first row of the query results
data = cursor.fetchone()
data = data[0]
return statement(data)
这按预期工作。即使总共有 3 个 parking 场,Alexa 在触发 intent 时也会说“Lot A”。
我想使用MySQL方法cursor.fetchall()代替cursor.fetchone,如下所示:
data = cursor.fetchall()
return statement(data)
但我收到错误:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1741, in handle_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/usr/local/lib/python2.7/dist-packages/flask_ask/core.py", line 767, in _flask_view_func
result = self._map_intent_to_view_func(self.request.intent)()
File "/home/ngrok/ngrok/FETCHALLRETURN", line 46, in available
return statement(data)
File "/usr/local/lib/python2.7/dist-packages/flask_ask/models.py", line 188, in __init__
super(statement, self).__init__(speech)
File "/usr/local/lib/python2.7/dist-packages/flask_ask/models.py", line 51, in __init__
'outputSpeech': _output_speech(speech)
File "/usr/local/lib/python2.7/dist-packages/flask_ask/models.py", line 402, in _output_speech
xmldoc = ElementTree.fromstring(speech)
File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 1311, in XML
parser.feed(text)
File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 1651, in feed
self._parser.Parse(data, 0)
TypeError: Parse() argument 1 must be string or read-only buffer, not tuple
{"context": {"System": {"apiAccessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjEifQ.eyJhdWQiOiJodHRwczovL2FwaS5hbWF6b25hbGV4YS5jb20iLCJpc3MiOiJBbGV4YVNraWxsS2l0Iiwic3ViIjoiYW16bjEuYXNrLnNraWxsLmY2NDViYTgxLTZmM2QtNDZlNi04MDM1LTI1MTBlYTg5ODNkYiIsImV4cCI6MTUzMTE1MzIxMiwiaWF0IjoxNTMxMTQ5NjEyLCJuYmYiOjE1MzExNDk2MTIsInByaXZhdGVDbGFpbXMiOnsiY29uc2VudFRva2VuIjpudWxsLCJkZXZpY2VJZCI6ImFtem4xLmFzay5kZXZpY2UuQUhFRzdPQ0RLN01TNkdFWkhYTUlTUlFXRkNNTktKVUxHTk1GTkdSVFlWSFk0WFZMSkVWUzRZTFFGSjVFSDVRR0YyREVYQTVVVjI0UzJHNFJNU0tYWFpHVjZFRDY0RktJWkpHVVQyWURVRlZZTzVLVUZLSENDUzVPWUdPTDI3NUU1QjRGRU1XTk5VRVAzUkxPSENFNzRUVTdLSDZBIiwidXNlcklkIjoiYW16bjEuYXNrLmFjY291bnQuQUg0T1FZSVBSQ1NRVEZaR1pIWkVRSFpCU1RISDI1VUE2MjYyNFY1WTdDWTdCSzZDWU9RWjdJN1BMV0s0Tzc0RFpVSzRBMkw0MlpQUjRQV1lFRlJIVzY2MlRPVlVEM1BCT1c0UkxRSjNFSFpVWllTTzM2VkM0NkMzRVdHT1ZPRFlVSVNWNzNPRVRHUkJEUkFTRjc0NEg3VFcyR0pYM01FN0kyWVNGQkFTNjNOUUFGNzNCVUJHUlRSSU5ZQ0tIM0dPWjZZVjNVS0tRM0xZMlFJIn19.WPKBopJc_WAxHJdHsYg6bgqYhEahsIzwCsBm3EUPWdKmqzSmjPTudJH-58a0VndsGc32CxARDhmShy1RxsSGUwacXr-Hb1sMlkHcrKV-I6dUFA9JXgGOHP92WyDBe4NcmZd2evEHGSAlWr7mW3cPpjUKax7INsSWqbziNGneP5DWV7T6FA6S3G-h5BBiX5rVx2SBcfYZ-1ixCom5GvQa8Xe77CGg2zwugd9oIvib6Q9JLfYQrmWcg9qBYfnKfaQsQNYg6I_OJ5fL5YcCmfq5FtfPpPL-k3UWvSiZwFqwch-AUNzu35csmLw9BF3JbVXPxPr-o70OlVWxmOeVEnYAzA", "apiEndpoint": "https://api.amazonalexa.com", "application": {"applicationId": "amzn1.ask.skill.f645ba81-6f3d-46e6-8035-2510ea8983db"}, "device": {"deviceId": "amzn1.ask.device.AHEG7OCDK7MS6GEZHXMISRQWFCMNKJULGNMFNGRTYVHY4XVLJEVS4YLQFJ5EH5QGF2DEXA5UV24S2G4RMSKXXZGV6ED64FKIZJGUT2YDUFVYO5KUFKHCCS5OYGOL275E5B4FEMWNNUEP3RLOHCE74TU7KH6A", "supportedInterfaces": {}}, "user": {"userId": "amzn1.ask.account.AH4OQYIPRCSQTFZGZHZEQHZBSTHH25UA62624V5Y7CY7BK6CYOQZ7I7PLWK4O74DZUK4A2L42ZPR4PWYEFRHW662TOVUD3PBOW4RLQJ3EHZUZYSO36VC46C3EWGOVODYUISV73OETGRBDRASF744H7TW2GJX3ME7I2YSFBAS63NQAF73BUBGRTRINYCKH3GOZ6YV3UKKQ3LY2QI"}}}, "request": {"error": {"message": "An exception occurred while dispatching the request to the skill.", "type": "INVALID_RESPONSE"}, "locale": "en-US", "reason": "ERROR", "requestId": "amzn1.echo-api.request.a7699e3a-71b3-4cf5-8d23-63e45c86a957", "timestamp": "2018-07-09T15:20:12Z", "type": "SessionEndedRequest"}, "session": {"application": {"applicationId": "amzn1.ask.skill.f645ba81-6f3d-46e6-8035-2510ea8983db"}, "new": false, "sessionId": "amzn1.echo-api.session.7c96f3f4-c78f-4c10-9535-9e1e9fe8a21e", "user": {"userId": "amzn1.ask.account.AH4OQYIPRCSQTFZGZHZEQHZBSTHH25UA62624V5Y7CY7BK6CYOQZ7I7PLWK4O74DZUK4A2L42ZPR4PWYEFRHW662TOVUD3PBOW4RLQJ3EHZUZYSO36VC46C3EWGOVODYUISV73OETGRBDRASF744H7TW2GJX3ME7I2YSFBAS63NQAF73BUBGRTRINYCKH3GOZ6YV3UKKQ3LY2QI"}}, "version": "1.0"}
{}
127.0.0.1 - - [09/Jul/2018 15:20:12] "POST / HTTP/1.1" 200 -
查询结果以元组形式返回,如果不进行一些格式化,显然无法直接返回到 Alexa。
有人知道如何将查询的所有结果返回给 Alexa 吗?
最佳答案
我正在编写一个应用程序,其扩展与您相同,除了 sqlalchemy 和使用 sqlite 之外。我的查询作为对象返回,所以我要么:
关于python - 将所有查询结果返回至 Alexa Skill,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51252852/
我正在研究 Alexa 技能(用于 Echo),并且我从一开始就研究了 Alexa 技能套件。 现在,我对 Alexa 语音服务感到困惑。我已经阅读了亚马逊上的文档,但无法更好地理解它。 请指导什么是
我正在尝试为 Alexa 创建一项技能,根据我选择的 tg 类别重现 .mp3 文件。我声明我从未使用过 node.js 并且我看过一门关于如何创建 alexa 技能的类(class)。到目前为止,我
是否可以远程触发 Alexa,即我有一个场景,应根据移动应用程序上的某些操作触发 Alexa,并且所提供的响应将由 echo dot 读出。 瓦伦 最佳答案 如果用户不与支持 Alexa 的设备交互,
在 Alexa 中创建技能时,每个插槽最多可以添加多少个值? 由于担心将原始用户对话记录为输入的技能,AMAZON.LITERAL 似乎已被弃用。 如果无法记录用户原始输入,我有大量可能的值可用作输入
我正在尝试编写我的第一个 Alexa 技能,但应用程序流程有点困惑,甚至阅读了有关对话委托(delegate)等的所有文档。我真的很喜欢一些建议。 我追求的流量 "Alexa, start Movie
我已经使用 aws lamda 函数创建了示例技能。我已经使用模拟器测试了技能,效果很好。我想测试 Alexa 应用程序的技能。 有人可以提及从头开始测试 Alexa 应用程序技能的步骤吗? 最佳答案
我已经使用 aws lamda 函数创建了示例技能。我已经使用模拟器测试了技能,效果很好。我想测试 Alexa 应用程序的技能。 有人可以提及从头开始测试 Alexa 应用程序技能的步骤吗? 最佳答案
我正在开发节点中的 Alexa 技能,我想知道如何对我的代码进行单元测试。我正在使用亚马逊发布的alexa sdk。 我找到了很多库来实现这一点,但它们似乎是在 alexa sdk 可用之前开发的。
我正在尝试在 Amazon Alexa 中创建一个简单的调查技巧,Alexa 向用户提出问题,然后他们以他们喜欢的任何方式(开放式)做出回应。例如,如果 Alexa 询问“你会做饭吗?”,用户可能会以
是否有任何方法可以在 Alexa 技能中显示像“阅读更多”这样的超链接?我试图在我的自定义 Alexa 技能中显示超链接,但找不到任何方法来实现它 最佳答案 超链接现在作为 APL 的一部分提供支持它
我正在尝试开发 Alexa 技能,我需要获取相对时间,例如:“ 5 分钟前 ”。 我为我的技能定义了一个时间段,它接受像 5 minutes 这样的时间, 6.30 am或 4 in the morn
我正在开发一项 Alexa 技能,我会在其中停下来获取水果名称。但是,如果我说诸如“苹果的成本是多少”之类的话,其中插槽值带有撇号,Alexa 似乎无法识别撇号。解决方法是说“一个苹果的成本是多少”之
如何为Alexa技能创建通用插槽?这样我就可以创建自己的Todo应用程序,它将识别自由格式的文本。 最佳答案 Alexa blog announced a List Skill API。如上所述,新技
如果我告诉 Alexa 以某些语言(中文、俄语等)或表情符号发出文本,它不会对用户说什么。 Alexa API 是否有办法指示字符串在发出之前或之后将转换为空/无声?或者,有没有办法在 Alexa 之
我想在我的网站/移动应用程序中使用 amazon alexa api。鉴于我开发了我的自定义技能,我想知道是否可以使用以及如何集成 alexa。 最佳答案 您可以使用 Alexa 语音服务。您需要收集
我打算根据自己的技能调用指定的电话号码。 例如 Me: Alexa, ask to find the customer service number Alexa: Sure, the custome
自定义技能已创建但未发布。 我可以在服务模拟器中对其进行测试。 当我尝试从门户网站 ( http://alexa.amazon.com/ ) 或手机上的 Alexa 应用程序将技能添加到我的设备时,搜
我一直在进行 alexa 开发,最近遇到了前所未有的情况。在尝试启用新技能测试时,我在 上收到以下错误测试 标签 : There was a failure enabling your skill,
我正在重写与 Particle.io API 通信的 Alexa 技能。这次我使用 ask-cli 来管理上传。所以到目前为止我的基本流程是: “问新”以创建入门技能和 lambda “请求部署”以创
我使用 PHP 创建了自定义技能和 https 端点。我已经在它正在运行的模拟器上测试了技能。我能够在 alexa android 应用程序上看到我的技能,并且我已经启用了它。但未得到有效响应。 最佳
我是一名优秀的程序员,十分优秀!