def weather(req): """Returns a string containing text with a response to the user with the weather forecast or a prompt for more information Takes the city for the forecast and (optional) dates uses the template responses found in weather_responses.py as templates """ parameters = req['queryResult']['parameters'] print('Dialogflow Parameters:') print(json.dumps(parameters, indent=4)) # validate request parameters, return an error if there are issues error, forecast_params = validate_params(parameters) if error: print(error, forecast_params) return str(error) # create a forecast object which retrieves the forecast from a external API try: forecast = Forecast(forecast_params) # return an error if there is an error getting the forecast except (ValueError, IOError) as error: print('Forecast error') print(error, forecast_params) return str(error) # If the user requests a datetime period (a date/time range), get the # response if forecast.datetime_start and forecast.datetime_end: response = forecast.get_datetime_period_response() # If the user requests a specific datetime, get the response elif forecast.datetime_start: response = forecast.get_datetime_response() # If the user doesn't request a date in the request get current conditions else: response = forecast.get_current_response() return response
def weather(req): """Returns a string containing text with a response to the user with the weather forecast or a prompt for more information Takes the city for the forecast and (optional) dates uses the template responses found in weather_responses.py as templates """ parameters = req['queryResult']['parameters'] print('Dialogflow Parameters:') print(json.dumps(parameters, indent=4)) # validate request parameters, return an error if there are issues error, forecast_params = validate_params(parameters) if error: return error # create a forecast object which retrieves the forecast from a external API try: forecast = Forecast(forecast_params) # return an error if there is an error getting the forecast except (ValueError, IOError) as error: return error # If the user requests a datetime period (a date/time range), get the # response if forecast.datetime_start and forecast.datetime_end: response = forecast.get_datetime_period_response() # If the user requests a specific datetime, get the response elif forecast.datetime_start: response = forecast.get_datetime_response() # If the user doesn't request a date in the request get current conditions else: response = forecast.get_current_response() return response