Alexa skill - получить почтовый адрес клиента node.js - PullRequest
0 голосов
/ 08 декабря 2018

Я не могу понять, как использовать метод для получения почты клиента в 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 - Почему я получаю «Ошибка синтаксического анализа»: неожиданный https токена?2 - Как мне получить ответ от Алекса?

Спасибо!

1 Ответ

0 голосов
/ 10 декабря 2018

Вы можете использовать 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();
...