Интеграция Amazon Lex в AWS Lambda

1
задан Muneeb Rehman 18 March 2019 в 00:34
поделиться

1 ответ

Вам придется учесть разницу между Лексом и Алекса. Наиболее заметными различиями являются форматы запросов и ответов.

Существенные различия, о которых следует помнить:

  1. Основные различия между форматами и передачей sessionAttribtues и slots.
  2. У Lex есть 4 встроенных slotTypes, которые Alexa не использует (пока?): AMAZON.EmailAddress,, AMAZON.Percentage, AMAZON.PhoneNumber, AMAZON.SpeedUnit и AMAZON.WeightUnit. ( Ссылка. )
  3. Lex всегда пропускает полный пользовательский ввод через inputTranscript. Алекса нет.
  4. Alexa предоставляет resolutions для значений слотов, но заполняет фактическое значение слотов необработанными данными, извлеченными из ввода.
  5. Lex автоматически разрешит значение слота, если для этого установлены синонимы slotType.

После работы с ними обоими довольно часто, и часто имея дело с этим, я предпочитаю Лекса, а не Алекса. Я обнаружил, что Lex проще и обеспечивает больше свободы для разработчика и контроля, даже если вы должны соответствовать ограничениям каждого из выходных каналов Lex.

Сравнить форматы запросов / ответов:

Формат Alexa JSON
Формат Lex JSON [1131 ]

Пример запроса Alexa:

{
  "version": "1.0",
  "session": {
    "new": true,
    "sessionId": "amzn1.echo-api.session.[unique-value-here]",
    "application": {
      "applicationId": "amzn1.ask.skill.[unique-value-here]"
    },
    "attributes": {
      "key": "string value"
    },
    "user": {
      "userId": "amzn1.ask.account.[unique-value-here]",
      "accessToken": "Atza|AAAAAAAA...",
      "permissions": {
        "consentToken": "ZZZZZZZ..."
      }
    }
  },
  "context": {
    "System": {
      "device": {
        "deviceId": "string",
        "supportedInterfaces": {
          "AudioPlayer": {}
        }
      },
      "application": {
        "applicationId": "amzn1.ask.skill.[unique-value-here]"
      },
      "user": {
        "userId": "amzn1.ask.account.[unique-value-here]",
        "accessToken": "Atza|AAAAAAAA...",
        "permissions": {
          "consentToken": "ZZZZZZZ..."
        }
      },
      "apiEndpoint": "https://api.amazonalexa.com",
      "apiAccessToken": "AxThk..."
    },
    "AudioPlayer": {
      "playerActivity": "PLAYING",
      "token": "audioplayer-token",
      "offsetInMilliseconds": 0
    }
  },
  "request": {}
}

Пример запроса Lex:

{
  "currentIntent": {
    "name": "intent-name",
    "slots": {
      "slot name": "value",
      "slot name": "value"
    },
    "slotDetails": {
      "slot name": {
        "resolutions" : [
          { "value": "resolved value" },
          { "value": "resolved value" }
        ],
        "originalValue": "original text"
      },
      "slot name": {
        "resolutions" : [
          { "value": "resolved value" },
          { "value": "resolved value" }
        ],
        "originalValue": "original text"
      }
    },
    "confirmationStatus": "None, Confirmed, or Denied (intent confirmation, if configured)"
  },
  "bot": {
    "name": "bot name",
    "alias": "bot alias",
    "version": "bot version"
  },
  "userId": "User ID specified in the POST request to Amazon Lex.",
  "inputTranscript": "Text used to process the request",
  "invocationSource": "FulfillmentCodeHook or DialogCodeHook",
  "outputDialogMode": "Text or Voice, based on ContentType request header in runtime API request",
  "messageVersion": "1.0",
  "sessionAttributes": { 
     "key": "value",
     "key": "value"
  },
  "requestAttributes": { 
     "key": "value",
     "key": "value"
  }
}
0
ответ дан Jay A. Little 18 March 2019 в 00:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: