首页 > 解决方案 > Alexa技能-检索客户邮件地址node.js

问题描述

我无法理解在 Alexa 中使用该方法检索客户邮件的方法

文档说用令牌发出请求。

https://developer.amazon.com/fr/docs/custom-skills/request-customer-contact-information-for-use-in-your-skill.html

然后我做到了:

function AlexaRequest(accessToken){
  Host: api.amazonalexa.com
  Accept: application/json
  Authorization: Bearer +accessToken+
  GET https://api.amazonalexa.com/v2/accounts/~current/settings/Profile.email
}

2 个问题 1 - 为什么我会收到“解析错误”:Unexpected Token https ?2 - 我如何获得 Alexa 的回复?

谢谢 !

标签: alexa

解决方案


您可以使用UpsServiceClient方法获取用户的个人信息。

请按照以下步骤或在此处观看详细教程

第 1 步:在您的意图处理程序中编写此代码

const GreetMeIntentHandler = {
  canHandle(handlerInput) {
    return handlerInput.requestEnvelope.request.type === 'IntentRequest'
      && handlerInput.requestEnvelope.request.intent.name === 'GreetMeIntent';
  },
  async handle(handlerInput) {
    const { requestEnvelope, serviceClientFactory, responseBuilder } = handlerInput;
    const token = requestEnvelope.context.System.user.permissions &&
      requestEnvelope.context.System.user.permissions.consentToken;
      
    if (!token) {
      return handlerInput.responseBuilder
        .speak('Please Provide Permissions!')
        .withAskForPermissionsConsentCard(['alexa::profile:email:read'])
        .getResponse();
    }

    let {deviceId} = requestEnvelope.context.System.device;
    const upsServiceClient = serviceClientFactory.getUpsServiceClient();
    const email = await upsServiceClient.getProfileEmail();
    
    let speechText = `Hello! Your email is ${email}`;

    return handlerInput.responseBuilder
    .speak(speechText)
    .withSimpleCard('Hello World', speechText)
    .getResponse();
    
  },
}

第 2 步:在导出中 添加withApiClient

exports.handler = skillBuilder
  .addRequestHandlers(
    GreetMeIntentHandler
  )
  .addErrorHandlers(ErrorHandler)
  .withApiClient(new Alexa.DefaultApiClient())
  .lambda();


推荐阅读