【问题标题】:Alexa Lambda function to get user's full name获取用户全名的 Alexa Lambda 函数
【发布时间】:2019-04-15 21:14:54
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    请查看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 请求。

    【讨论】:

      【解决方案2】:

      您的代码需要为您的技能意图提供处理程序类,并使用两种方法:

      can_handle(self, handler_input)
      

      handle(self, handler_input)
      

      这是通过参数获取 handler_input 的方式。

      有一个类似的例子here,但要检索地址。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-15
        • 2020-05-23
        • 1970-01-01
        • 2018-03-29
        • 1970-01-01
        • 1970-01-01
        • 2017-07-19
        • 1970-01-01
        相关资源
        最近更新 更多