我跟随amazon's guide创建了一个可以访问Alexa的python应用程序。我已获得访问/刷新令牌,并尝试使用AVS打开HTTP2连接。
由于我在python中这样做,我已经利用requests库管理我所有的HTTP连接。但是,我似乎无法通过与AVS建立连接的第一步。我认为问题只是我的请求中的语法,因为我不确定如何在HTTP调用中表示get请求的某些元素。具体来说,
要建立下行通道流,客户端必须在打开与AVS的连接后10秒内向/ {{API version}} /指令发出GET请求。请求应如下所示:
1 :method = GET
2 :scheme = https
3 :path = /{{API version}}/directives
4 authorization = Bearer {{YOUR_ACCESS_TOKEN}}
首先,说明部分说明
...在用AVS打开连接的10秒内
这是从GET请求到/API version/directives
的单独调用吗?如果是这样,那会是什么样子?
然后,对于/API version/directives
的实际调用,我的代码看起来像这样(Python):
def establishDownstream():
url = "https://avs-alexa-na.amazon.com/v20160207/directives"
foo = "Bearer " + ACCESS_KEY
payload = {"authorization" : foo}
g = requests.get(url, params=payload)
我的理由是,由于它是requests.get()
来电,:method = GET
会被处理,因为网址以https://
开头,:scheme = https
被占用照顾,网址本身就照顾好路径(如果我错了,再次纠正我)。然后,我只需将访问密钥作为值传递给authorization
,我通过params
执行此操作。但是,这不会导致任何成功(具体的错误消息是requests.exceptions.SSLError: EOF occurred in violation of protocol (_ssl.c:590)
)。
我真的不知道这里发生了什么。我在网上找到的关于HTTP请求协议的所有指南都是以块形式构建它们的请求,而不是通过python库,因此我没有任何示例可以解决。
感谢任何帮助!