Contestar los WhatsApp’s recibidos en Python
Ya hemos recibido mensajes de WhatsApp, hemos procesado el mensaje con inteligencia artificial y guardado en la base de datos, ahora vamos a Contestar los WhatsApp’s recibidos en Python, siguiendo estos pasos:
Instalamos las dependencias
cd www2 source env/bin/activate pip install heyoo
enviar(telefonoCliente,respuesta) #RETORNAMOS EL STATUS EN UN JSON return jsonify({"status": "success"}, 200) def enviar(telefonoRecibe,respuesta): from heyoo import WhatsApp #TOKEN DE ACCESO DE FACEBOOK token='EAAwqc28gB6gBAJDnCPlZACcyMExO9erfZApI1p4jANrTbvxXG2rOnUirzW5nNbhbvkNWrI3jAZC4nqiUrn4CgveHEUZAasdcUPq8PlqaA2xHri7foXglWUlfWhEpbFaE6bAxZC8BbzSm3TZACCcTSnrMU9QHGFSEMLv11s4LgQuMuGRFuOwh9qG7PipqrjORtkDq8PKgDXMAZDZD' #IDENTIFICADOR DE NÚMERO DE TELÉFONO idNumeroTeléfono='102089089450810' #INICIALIZAMOS ENVIO DE MENSAJES mensajeWa=WhatsApp(token,idNumeroTeléfono) telefonoRecibe=telefonoRecibe.replace("521","52") #ENVIAMOS UN MENSAJE DE TEXTO mensajeWa.send_message(respuesta,telefonoRecibe)
Todo el codigo seria este
from flask import Flask, jsonify, request app = Flask(__name__) #CUANDO RECIBAMOS LAS PETICIONES EN ESTA RUTA @app.route("/webhook/", methods=["POST", "GET"]) def webhook_whatsapp(): #SI HAY DATOS RECIBIDOS VIA GET if request.method == "GET": #SI EL TOKEN ES IGUAL AL QUE RECIBIMOS if request.args.get('hub.verify_token') == "HolaNovato": #ESCRIBIMOS EN EL NAVEGADOR EL VALOR DEL RETO RECIBIDO DESDE FACEBOOK return request.args.get('hub.challenge') else: #SI NO SON IGUALES RETORNAMOS UN MENSAJE DE ERROR return "Error de autentificacion." #RECIBIMOS TODOS LOS DATOS ENVIADO VIA JSON data=request.get_json() #EXTRAEMOS EL NUMERO DE TELEFONO Y EL MANSAJE telefonoCliente=data['entry'][0]['changes'][0]['value']['messages'][0]['from'] #EXTRAEMOS EL TELEFONO DEL CLIENTE mensaje=data['entry'][0]['changes'][0]['value']['messages'][0]['text']['body'] #EXTRAEMOS EL ID DE WHATSAPP DEL ARRAY idWA=data['entry'][0]['changes'][0]['value']['messages'][0]['id'] #EXTRAEMOS EL TIEMPO DE WHATSAPP DEL ARRAY timestamp=data['entry'][0]['changes'][0]['value']['messages'][0]['timestamp'] #ESCRIBIMOS EL NUMERO DE TELEFONO Y EL MENSAJE EN EL ARCHIVO TEXTO #SI HAY UN MENSAJE if mensaje is not None: from rivescript import RiveScript #INICIALIZAMOS RIVESCRIPT Y CARGAMOS LA CONVERSACION bot = RiveScript() bot.load_file('restaurante.rive') bot.sort_replies() #OBTENEMOS LA RESPUESTA respuesta= bot.reply("localuser",mensaje) respuesta=respuesta.replace("\\n","\\\n") respuesta=respuesta.replace("\\","") #CONECTAMOS A LA BASE DE DATOS import mysql.connector mydb = mysql.connector.connect( host = "localhost", user = "root", password = "", database='novato_chat' ) mycursor = mydb.cursor() query="SELECT count(id) AS cantidad FROM registro WHERE id_wa='" + idWA + "';" mycursor.execute(query) cantidad, = mycursor.fetchone() cantidad=str(cantidad) cantidad=int(cantidad) if cantidad==0 : sql = ("INSERT INTO registro"+ "(mensaje_recibido,mensaje_enviado,id_wa ,timestamp_wa ,telefono_wa) VALUES "+ "('"+mensaje+"' ,'"+respuesta+"','"+idWA+"' ,'"+timestamp+"','"+telefonoCliente+"');") mycursor.execute(sql) mydb.commit() enviar(telefonoCliente,respuesta) #RETORNAMOS EL STATUS EN UN JSON return jsonify({"status": "success"}, 200) def enviar(telefonoRecibe,respuesta): from heyoo import WhatsApp #TOKEN DE ACCESO DE FACEBOOK token='EAAwqc28gB6gBAJDnCPlZACcyMExO9erfZApI1p4jANrTbvxXG2rOnUirzW5nNbhbvkNWrI3jAZC4nqiUrn4CgveHEUZAasdcUPq8PlqaA2xHri7foXglWUlfWhEpbFaE6bAxZC8BbzSm3TZACCcTSnrMU9QHGFSEMLv11s4LgQuMuGRFuOwh9qG7PipqrjORtkDq8PKgDXMAZDZD' #IDENTIFICADOR DE NÚMERO DE TELÉFONO idNumeroTeléfono='102089089450810' #INICIALIZAMOS ENVIO DE MENSAJES mensajeWa=WhatsApp(token,idNumeroTeléfono) telefonoRecibe=telefonoRecibe.replace("521","52") #ENVIAMOS UN MENSAJE DE TEXTO mensajeWa.send_message(respuesta,telefonoRecibe) #INICIAMSO FLASK if __name__ == "__main__": app.run(debug=True)