Ваш код не выполняется, потому что объект event
заполнен {'Date': 'Feb 22'}
, но ваш код ожидает гораздо большего.Таким образом, происходит сбой, когда вы пытаетесь проанализировать этот JSON, пытаясь получить доступ к currentIntent
:
date_input = event['currentIntent']['slots']['Date']
Вы не можете передать любой context
в вашу Lambda при тестировании с консоли какон автоматически заполняется AWS.Кроме того, контекст используется только в очень специфических случаях, поэтому я бы не беспокоился об этом сейчас.
Однако вы можете передать event
в качестве аргумента, и есть много способов сделать это.Самый простой способ сделать это вручную - перейти на Lambda Console AWS, нажать «Тест», и, если вы еще не настроили тестовое событие, появится следующий экран
Теперь в раскрывающемся списке вы можете выбрать свое событие, и AWS заменит его для вас, например:
Теперь вы можете настроить событие так, как вам нужно.
После сохранения и нажатия кнопки «Тест» объект event
будет заполнен предоставленным JSON.
Другой вариантэто проверка примеров событий, опубликованных источниками событий , так что вы можете просто получить любое событие JSON и настроить его соответствующим образом.
Я взял для вас пример события Lex, которыйвыглядит следующим образом:
{
"messageVersion": "1.0",
"invocationSource": "FulfillmentCodeHook or DialogCodeHook",
"userId": "user-id specified in the POST request to Amazon Lex.",
"sessionAttributes": {
"key1": "value1",
"key2": "value2",
},
"bot": {
"name": "bot-name",
"alias": "bot-alias",
"version": "bot-version"
},
"outputDialogMode": "Text or Voice, based on ContentType request header in runtime API request",
"currentIntent": {
"name": "intent-name",
"slots": {
"slot-name": "value",
"slot-name": "value",
"slot-name": "value"
},
"confirmationStatus": "None, Confirmed, or Denied
(intent confirmation, if configured)"
}
}
Используйте это как ваше мероприятие, и вы сможете протестировать его соответствующим образом.