private async Task TellJoke()
{
    try
    {
        var http = new HttpClient();
        http.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/plain"));
        var response = await http.GetAsync("https://icanhazdadjoke.com/");
        string joke = await response.Content.ReadAsStringAsync();
        await GUIOutput(joke, true);
    }
    catch
    {
        await GUIOutput("I'm sorry, I couldn't retrieve the informations from the web.", true);
    }

    state = AssistantState.BACKGROUND_DEFAULT;
}

This functionality is implemented by a single function called TellJoke: this function operates in a similar way to the ones used in the "Inspire me" functionality (it uses a web API to obtain a random joke) but in this case it retrieves directly the text of the joke (instead of JSON data with lots of parameters), making it possible to use only one function instead of two like in the other case.