使用Alexa自定义技能和AWS Lambda函数,我希望能够仅从其帐户中获取用户的姓名。我已经设置了权限和帐户链接,并验证了它可以正常工作。但是,没有可用的python 3.6方法来检索实际用户信息。
此页面上有我需要使用的方法( get_profile_name()): https://github.com/alexa/alexa-skills-kit-sdk-for-python/blob/master/docs/en/SERVICE_CLIENTS.rst#upsserviceclient
但是,它没有提供有关如何在Lambda函数中访问该方法的信息。
我的主要功能运行于:
def lambda_handler(event, context):
事件仅包含来自自定义Alexa技能的用户输入的JSON,其中不包含名称,因此我被困在如何访问具有get_profile_name()的任何内容
我唯一可以找到的例子是: https://forums.developer.amazon.com/questions/181267/new-sdk-and-python-36-progressive-response-sample.html
使用
handler_input.service_client_factory.get_profile_name()
但是我不知道handler_input与我的“事件”有何不同
我认为仅仅获得一个名字会很简单,但这很复杂。有人做过吗?
答案 0 :(得分:0)
请参阅the Alexa Customer Profile API documentation以获取客户的姓名,电子邮件地址和电话号码。
此文档详细介绍了请求过程-以下是此文档中获取电话号码的示例:
Host: api.amazonalexa.com
Accept: application/json
Authorization: Bearer MQEWY...6fnLok
GET https://api.amazonalexa.com/v2/accounts/~current/settings/Profile.name
请注意,您必须获取访问令牌以用作请求的一部分(该页面上还详细介绍了如何获取令牌)。
如果ASK Python SDK不包含对Alexa Customer Profile API的内置支持,则似乎您可以只创建详细的RESTful请求。
答案 1 :(得分:0)
您的代码需要使用两种方法针对您的技能意图提供处理程序类:
can_handle(self, handler_input)
和
handle(self, handler_input)
这是通过参数获取handler_input的方式。
有一个类似的示例here,但要检索地址。