Spaces:
Runtime error
Runtime error
from typing import Any, Dict, Text | |
import requests | |
import json | |
from rasa_sdk import Action | |
import os | |
class ActionJoke(Action): | |
def name(self) -> Text: | |
return "action_joke" | |
async def run(self, dispatcher, tracker, domain: Dict[Text, Any]): | |
url = 'https://api.jokes.one/jod?category=knock-knock' | |
headers = {'content-type': 'application/json'} | |
joke=requests.get(url, headers=headers).json()['contents']['jokes'][0]['joke']['text'] | |
#request = requests.get('http://api.icndb.com/jokes/random').json() #make an api call | |
#joke = request['value']['joke'] #extract a joke from returned json response | |
dispatcher.utter_message('Here is a joke to cheer you up!') | |
dispatcher.utter_message(joke) #send the message back to the user | |
return [] | |
class ActionGetWeather(Action): | |
def name(self): | |
return "action_get_weather" | |
def run(self, dispatcher, tracker, domain): | |
city=tracker.get_slot('location') | |
url = f'https://api.openweathermap.org/data/2.5/weather?q={city}&units=metric&appid={os.getenv("OPENWEATHERMAP_API_KEY")}' | |
weather=requests.get(url).json() | |
#response_loc=weather['name'] | |
main=weather['weather'][0]['main'] | |
description=weather['weather'][0]['description'] | |
temp=weather["main"]["temp"] | |
humidity=weather["main"]["humidity"] | |
feels_like=weather["main"]["feels_like"] | |
dispatcher.utter_message(f'Weather in {city}: {main}, {description}, Temp:{temp}, Humidity:{humidity}, Feels like {feels_like}') | |
return [] | |