Я пытаюсь вернуть данные о погоде из AWS lambda боту Lex. Я столкнулся с ошибкой ключа

import json
from botocore.vendored import requests
#import requests

def weatherfunc(city_name):

    api_key = 'e914e5e16947fe541140de82a88e5888'
    base_url = 'http://api.openweathermap.org/data/2.5/weather?'
    finalurl = base_url + 'appid=' + api_key + '&q=' + city_name

    response = requests.get(finalurl)
    x = response.json()
    y = x['main']
    current_temperature = y['temp']
    current_pressure = y['pressure']
    current_humidiy = y['humidity']
    z = x['weather']
    weather_description = z[0]['description']

    return {
        'current temp': current_temperature,
        'humidity': current_humidiy,
        'pressure': current_pressure,
        'description': weather_description,
        }

 def lambda_handler(event, context):
    city = event['City']
    a = weatherfunc(city)
    return (a)

Я хочу вернуть информацию о погоде своему lex-боту, я обнаружил ошибку: Ответ: {errorMessage: 'City', errorType: KeyError, stackTrace: [Файл /var/task/lambda_function.py, строка 28, в lambda_handler \ n city ​​= событие ['Город'] \ n]}

Пожалуйста, помогите мне устранить ошибку.


person codeNubie    schedule 08.10.2020    source источник


Ответы (2)


Согласно сообщению об ошибке:

  • Вы звоните lambda_handler (в lambda_handler)
  • ... эта функция обнаружила KeyError (errorType: KeyError)
  • ... в line 28, то есть: city = event['City'] (строка 28, city = event ['City'])

Выполнив 30-секундный поиск в Google на KeyError python doc, вы перейдете на этот веб-сайт. документирование KeyError.

Первая соответствующая строка на этом веб-сайте гласит: Raised when a mapping (dictionary) key is not found in the set of existing keys.

person AAAlex123    schedule 08.10.2020

Пожалуйста, проверьте содержание события, переданное в запросе, чтобы правильно получить название города. Если вы извлекаете город из содержимого события lex ... Это может быть так - city = event ['currentIntent'] ['slot'] ['city']. Пожалуйста, обратитесь к содержанию мероприятия.

person Laxmi Singh    schedule 15.10.2020
comment
это лучше как комментарий, чем ответ. - person Uni; 15.10.2020