input: from typing import Dict
  from flask import Flask, request, make_response
  import os
  import json
  import urllib2
  from bs4 import BeautifulSoup
  
  app = Flask(__name__)
  
  def makeWebhookResult(req: Dict) -> Dict:
      result = req.get("result")
      parameters = result.get("parameters") if result else {}
      action = result.get("action") if result else ""
      speech = ""
      
      if action == "productos.sura":
          cliente = parameters.get("tipo_cliente")
          speech = "Buscando productos para " + cliente
          
      elif 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 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 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 action == "coberturas.producto":
          producto = parameters.get("productos")
          speech = "Buscando coberturas del producto: " + producto
      else:
          speech = " "
  
      return {
          "speech": speech,
          "displayText": speech,
          "source": "apiai-onlinestore-shipping"
      }
  
  @app.route('/webhook', methods=['POST'])
  def webhook():
      req = request.get_json(silent=True, force=True)
      res = makeWebhookResult(req)
      res = json.dumps(res, indent=4)
      print(res)
      r = make_response(res)
      r.headers['Content-Type'] = 'application/json'
      return r
  
  if __name__ == '__main__':
      port = int(os.getenv('PORT', 5000))
      print("Starting app on port %d" % port)
      app.run(debug=True, port=port, host='0.0.0.0')
  
  """
  >>> makeWebhookResult({'result': {'action': 'productos.sura', 'parameters': {'tipo_cliente': 'particulares'}}})
  {'speech': 'Buscando productos para particulares', 'displayText': 'Buscando productos para particulares', 'source': 'apiai-onlinestore-shipping'}
  >>> makeWebhookResult({'result': {'action': 'producto.info', 'parameters': {'producto': 'hogar'}}})
  {'speech': 'No encontrado', 'displayText': 'No encontrado', 'source': 'apiai-onlinestore-shipping'}
  >>> makeWebhookResult({'result': {'action': 'planes.salud'}})
  {'speech': 'Seguros Sura Colombia ofrece los siguientes planes de salud: \n', 'displayText': 'Seguros Sura Colombia ofrece los siguientes planes de salud: \n', 'source': 'apiai-onlinestore-shipping'}
  """
output:     
      elif 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"
          else:
              speech = "No se encontraron profesionales para la busqueda especificada."
  