input: 
  def generate_speech_response(json_request: dict) -> dict:
      """
      Generates a JSON response containing a 'speech' field with the text to be spoken by the voice assistant.
      The function processes the JSON request to extract necessary parameters and construct the speech response 
      based on the action specified in the request.
      
      >>> generate_speech_response({"result": {"action": "productos.sura", "parameters": {"tipo_cliente": "empresas"}}})
      {'speech': 'Buscando productos para empresas', 'displayText': 'Buscando productos para empresas', 'source': 'apiai-onlinestore-shipping'}
      
      >>> generate_speech_response({"result": {"action": "producto.info", "parameters": {"producto": "hogar"}}})
      {'speech': '<div_content_of_the_web_page>', 'displayText': '<div_content_of_the_web_page>', 'source': 'apiai-onlinestore-shipping'}
      """
      result = json_request.get("result")
      parameters = result.get("parameters")
      speech = ""
      
      if result.get("action") == "productos.sura":
          cliente = parameters.get("tipo_cliente")
          speech = "Buscando productos para " + cliente
          
      elif result.get("action") == "producto.info":
          producto = parameters.get("producto")
          if producto == "hogar":
              url = "https://www.sura.com/soluciones-personas/seguro-hogar.aspx"
              r = urllib2.urlopen(url).read()
              soup = BeautifulSoup(r, 'html.parser')
              contenido = soup.find_all("div", class_="textRightColumn")
              if len(contenido) == 0:
                  speech = "No encontrado"
              else:
                  speech = str(contenido[0])
          else:
              speech = "Buscando informacion del producto " + producto
              
      elif result.get("action") == "planes.salud":
          url = "https://api.segurossura.com.co/public/v1/directory/products"
          myResponse = requests.get(url)
          if myResponse.ok:
              jData = json.loads(myResponse.text)
          speech = "Seguros Sura Colombia ofrece los siguientes planes de salud: \n"
          for plan in jData:
              speech += "\n" + plan["nombreField"].title()
              
      elif result.get("action") == "info.especialistas":
          producto = parameters.get("plan-salud")
          ciudad = parameters.get("ciudad")
          especialidad = parameters.get("especialidad")
          url = "https://api.segurossura.com.co/public/v1/directory/search/" + producto + "/" + ciudad + "?speciality=" + especialidad + "&firstname=&secondname=&firstlastname=&secondlastname="
          myResponse = requests.get(url)
          if myResponse.ok:
              jData = json.loads(myResponse.text)
          speech = "Los profesionales que coinciden con tu busqueda son: \n"
          for medico in jData:
              speech += "\n" + medico["nombreField"] + "\n Direccion: " + medico["direccionField"].title() + "\n Telefono: " + medico["telefonoField"] + "\n"
              
      elif result.get("action") == "coberturas.producto":
          producto = parameters.get("productos")
          speech = "Buscando coberturas del producto: " + producto
      else:
          speech = ""
  
      return {
          "speech": speech,
          "displayText": speech,
          "source": "apiai-onlinestore-shipping"
      }
  
output:     import urllib2
      from bs4 import BeautifulSoup
      import requests
      import json