Alexa Lambda函数可获取用户的全名

时间:2018-11-13 05:11:18

标签: python python-3.x aws-lambda alexa alexa-skill

使用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与我的“事件”有何不同

我认为仅仅获得一个名字会很简单,但这很复杂。有人做过吗?

2 个答案:

答案 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,但要检索地址。