Guía para crear Chatbots para WhatsApp con Yowsup: más clientes sin CRM

Jonathan DueñasFacebook AdsGuia, WhatsApp Chatbot

En esta guia te mostraremos paso a paso como crear chatbots para WhatsApp de forma sencilla y rapida.

La revolución de los chatbots han hecho de estos una herramienta muy poderosa para las empresas. La comunicación con sus usuarios se ha hecho mucho más sencillo, eliminando la necesidad incluso de grandes sitios de atención al cliente.

WhatsApp, siendo este el servicio de mensajería más grande del mercado no podía quedarse atrás, y fue a inicios de Agosto de 2018 que estos anunciaron su nuevo API para WhatsApp Business que permite a los usuarios de esta herramienta crear chatbots de manera directa con el servicio de WhatsApp para las empresas.

Luego de un mes de espera, el API de WhatsApp Business todavía no ha sido liberado al mercado latinoamericano en absoluto, incluso en otros mercados más grandes como el estadounidense, es muy posible que si creas tu cuenta de Facebook Business hoy mismo, no cuentes con la opción de utilizar este API todavía.

Si cuentas con la necesidad de crear chatbots, ya sea para tu negocio o para uso personal, existe otra manera de hacerlo. Aunque esta manera no utiliza todos los beneficios de las cuentas de WhatsApp Business, es una opción que ha estado presente desde hace mucho tiempo y permite crear chatbots tan completos como puedas imaginarte.

Antes de crear nuestro chatbot: Algunos usos de estos para tu negocio

¿No sabes cómo integrar estas increíbles herramientas en tu negocio? Aquí te presentamos algunas ideas que pueden serte de utilidad antes de entrar de lleno a la construcción de nuestro chatbot para WhatsApp:

    1. Responder mensajes de tus clientes de forma automática: ¿Has notado que las personas te preguntan frecuentemente por algunas cuestiones de tu negocio? En lugar de que tengas que estar respondiendo uno a uno estas preguntas y tardando mucho tiempo en responderlas, un chatbot puede reconocer este tipo de preguntas frecuentes y dar las respuestas que tú desees de forma automática.
    1. Crear pedidos: ¿Cuentas con un restaurante? Un chatbot puede ser una herramienta por la cual los usuarios pueden crear pedidos de forma automática, de forma que no tendrás que tener a alguien en el teléfono a cada momento.
    1. Manejar tu ciclo de compra: Además de realizar ventas, los chatbots pueden manejar otros aspectos de tu ciclo de compra. ¿Cuentas con un nuevo producto u oferta y cuentas con algunos contactos a los que les podría interesar? Un chatbot puede automatizar el proceso de marketing de estos y realizar incluso un proceso de remarketing, recordando a los clientes y generando ventas valiosas.
  • Crear reservaciones: ¿Eres un dentistas, peluquero o mantienes un restaurante familiar? Las personas fácilmente podrían realizar reservaciones a través de tu chatbot en WhatsApp, este tendría toda la información de las reservaciones a la mano y sabría cuando existe un espacio disponible en tu negocio.
  • Estos son solo algunos usos que puedes darle a los chatbots, incluso puedes integrar todos estos en un solo si deseas, las oportunidades que estas te brindan son infinitas.

    Ahora sí, veamos cómo crear un chatbot en WhatsApp paso a paso con Yowsup.

    Requerimientos iniciales

    Lo primero que necesitas para hacer uso de esta guía es no tener miedo al utilizar una terminal de comandos, sea en Windows, Linux o MacOS. Como te fijaras en el transcurso de esta guía, la terminal de comandos es una herramienta muy util y facil de utilizar, no debes de ser un programador o con grandes conocimientos técnicos para poder utilizar esta herramienta.

    En segundo lugar, para crear un chatbot necesitamos de un lugar en donde éste resida y se mantenga corriendo, para esto haremos uso de un servidor linux. No necesitas contar con un gran conocimiento en la administración de servidores o el uso de consolas en linux para crear un chatbot sencillo, sin embargo, si deseas incluir tu chatbot en todo el ciclo de trabajo de tu negocio es recomendable un poco más de conocimiento en esta área.

    Por último lugar, para hacer uso del servicio de WhatsApp necesitaremos de un número telefónico válido. No importa si esta número ya está asociado a una cuenta de WhatsApp, sin embargo te recomendamos que no utilices tu cuenta personal o empresarial de WhatsApp para este servicio. Yowsup es una herramienta de terceros y por ende no cuenta con el soporte total de WhatsApp, lo que puede significar en bloqueos temporales de los números si se utiliza de mala manera.

    Montando los servicios necesarios

    Como te hemos mencionado, lo primero que debemos de hacer para montar nuestro chatbot es un servidor en el que pueda correr constantemente para realizar su trabajo. Puedes montar tu propio servidor físico o utilizar cualquier servicio en la web de VPS (Servidores Virtuales Privados) como AWS de Amazon con precios iniciando con 0.02 USD la hora.

    Durante esta guía haremos uso de la distribución de GNU/Linux de Debian 9 de 64 bits para servidores. Esta distribución del sistema operativo es robusta y de las más populares en el mercado, la mayoría de comandos que utilizaremos pueden ser utilizados en otras distribuciones o puedes fácilmente encontrar su contraparte en estas con una simple búsqueda en la web.

    Luego de montar el servidor, sea este de la manera que sea, deberemos de acceder al mismo para poder instalar todas las herramientas que necesitamos para crear nuestro chatbot. Esto lo haremos por medio de una conexión remota por SSH (Secure Shell), la cual es un tipo de conexión remota de forma segura, de tal forma que todos los datos transmitidos entre el servidor y el cliente es en encriptada tanto en el envío como al recibir datos.

    Para AWS te recomendamos la siguiente versión: Debian AWS. En cuanto a requerimientos técnicos del servidor, Yowsup no necesita grandes recursos. Hemos logrado levantar todo lo necesario para crear un chatbot sencillo en una máquina con 256MB de RAM y un simple núcleo de procesamiento, por lo que para hacer pruebas un simple servidor t1.micro puede serte suficiente.

    Para usuarios de Windows

    Si hemos montado nuestro servidor en un servicio de VPS en la nube, el proveedor nos proveerá de la IP de conexión en conjunto con los datos de autenticación de la misma. Si quieres ingresar a tu servidor desde una máquina corriendo alguna versión moderna de Windows deberemos de hacer uso de Putty.

    Putty es un cliente SSH gratuito y de forma abierta para Windows. Puedes ingresar a la página oficial de descargas y buscar el indicado para tu sistema en el siguiente link: descargar Putty.

    Una vez instalado, lo único que debes de hacer desde Putty es ingresar la IP de tu servidor en la sección de “Host Name”. En el puerto mantén el puerto 22 a menos que tu servidor cuente con otra configuración para conexiones SSH.

    Hecho esto, presiona el botón de “Open” o “Abrir” y un mensaje se te presentará para validar la llave de conexión del servidor. Presiona al botón de “Yes” o “Sí” para validar que la llave del servidor coincida con el servidor al que quieres conectarte.

    Una vez aceptado este mensaje, se te presentará una terminal en la cual deberás ingresar la información de acceso para tu servidor.

    Cuando se te presente el siguiente mensaje ingresa el usuario de acceso de tu servidor:  

    Para el siguiente paso ingresa la contraseña de tu servidor, nota que a medida que escribes con el teclado el cursor no se moverá, esto es normal, simplemente ingresa la contraseña completa y presiona enter.

    Con este simple proceso ya tendrás acceso a tu servidor a partir de la consola y estaremos listo para instalar todo lo necesario para crear nuestro chatbot.

    Para usuarios de Linux y macOS

    En linux y macOS existe una herramienta que nos permite conectarnos de manera directa por medio de SSH a máquinas remotas.

    El proceso es sencillo, lo que debes de hacer es abrir una consola y correr el siguiente comando:

    ssh usuarioServidor@IpServidor

    Luego de este comando deberás de aceptar la llave de conexión para validar que coincide con el servidor al que intentas acceder y finalmente deberás de ingresar la contraseña para el usuario de tu servidor.

    Con esto ya tendremos acceso al servidor y podremos seguir al siguiente paso.

    Instalando herramientas necesarias

    Lo primero que debemos hacer es instalar las dependencias necesarias para yowsup. Esto lo logramos con los siguientes comandos:

    sudo apt update
    sudo apt upgrade
    sudo apt install python2.7 python-pip git

    Aunque Yowsup funciona tanto para python2.6+ o 3.0+, en este caso usaremos python2.7 para loguearse inicialmente. Luego de logearte por medio de Yowsup, puedes hacer uso de la herramienta por medio de python3.0+ si asi lo deseas sin ningún problema.

    Creando Chatbots para WhatsApp con Yowsup

    Yowsup es una librería que te permite crear herramientas sobre el servicio de WhatsApp. Esta librería es libre y mantiene una comunidad activa que la mantiene actualizada y responde fácilmente a las preguntas y problemas que los usuarios encuentran al hacer uso de esta.

    Aunque en la documentación de Yowsup aparece el método de instalación por medio de pip de la siguiente manera:

    
    pip3 install yowsup
    

    o

    <br /> pip2 install yowsup<br />

    En nuestras pruebas hemos encontrado que este método no es del todo válido si queremos realizar cambios de versiones en la librería. Y es que Yowsup hace uso de dos diferentes ambientes para conectarse al servicio de WhatsApp: Android y S40. A medida que WhatsApp actualiza sus versiones en estos sistemas operativos, las versiones permitidas para conectarse a sus servicios van deprecando, de tal manera que es usual que debamos actualizar los parámetros de conexión de estos servicios.

    Yowsup también cuenta con una herramienta de consola por la que podemos realizar una gran cantidad de pruebas y es por esta por la cual podemos loguear nuestro número para poderlo utilizar con la librería. Esta herramienta es llamada yowsup-cli y hace uso de la librería de forma rápida y directa.

    Aunque en la documentación es indicado que esta herramienta puede instalarse de la siguiente manera, para hacer uso de los cambios que haremos en la librería para que funcione, nosotros no la instalaremos de esta manera sino que de otra:

    sudo apt install yowsup-cli
    

    Si hacemos esto tal como lo mencionan en su página de GitHub e intentamos logearnos de la siguiente manera:

    yowsup-cli registration --requestcode sms --phone [CC]XXXXXXX --cc [CC] --mcc [MCC] --mnc [MNC] --env android
    

    Esto nos causa el error de: old_version

    De tal manera que para resolver estos problemas debemos de realizar los siguientes pasos:

    En primer paso debemos de crear una carpeta en la cual mantendremos todo el ambiente de la librería con los cambios que queremos realizar con:

    mkdir chatbot
    

    Y nos movemos dentro de esta carpeta con:

    cd chatbot

    Una vez nos encontramos dentro de esta carpeta debemos de copiar todo el repositorio con la librería y las herramientas que se encuentran extra dentro de esta con el comando de:

    git clone https://github.com/tgalal/yowsup/
    cd yowsup
    

    Dentro de esta carpeta nos encontramos con distintos archivos, si deseas ver cuales archivos son estos lo puedes hacer con el comando:

    ls
    

    Como podemos observar en con este comando, dentro de esta carpeta nos encontramos con otra carpeta también llamada “yowsup”, dentro de esta se encuentra toda la librería y es aquí donde debemos de hacer todos los cambios. Aquí también podemos ver un archivo llamado “yowsup-cli”, este la herramienta que deberemos de utilizar para logearnos, enviar y recibir mensajes.

    Para resolver el problema de “old_version” deberemos de cambiar algunos parámetros en distintos archivos con el siguiente comando:

    nano yowsup/env/env.py
    

    Nano es un editor de texto por medio de consola por el cual podemos editar el archivo de env.py desde la consola de forma remota. El cambio que debemos de hacer en este archivo es el siguiente:

    Buscamos la línea siguiente:

    DEFAULT = "s40"
    

    Y la cambiamos por lo siguiente:

    #DEFAULT = "s40"
    DEFAULT = "android"
    

    Para guardar y salir del editor de nano debemos de presionar Ctrl + x, se nos preguntará si deseamos guardar, presionamos que si y no encontraremos de vuelta al directorio donde nos encontrábamos en la consola de comandos.

    El siguiente archivo que debemos de modificar lo hacemos con:

    nano yowsup/env/env_android.py
    

    En este archivo hacemos los siguientes cambios:

    [signinlocker id=”5116″]

    En primer lugar entramos desde el navegador al siguiente link: línea de conexión. Esta línea cambia a partir de las versiones que pueden conectarse al servicio de WhatsApp. En esta línea nos importan solamente dos objetos, estos son los mostrados en negrita a continuación:

    {<b>"a": "0R9F4U5fzdwVvn06wLe1JA==",</b> "b": "PdA2DJyKoUrwLw1Bg6EIhzh502dF9noR9uFCllGk", "c":"1478194306452L",<b> "d":"2.18.255"</b>, "e":"2.16.12", "f":"2.11.634", "g":"PdA2DJyKoUrwLw1Bg6EIhzh502dF9noR9uFCllGk", "h":"1478194472015L", "i":"PdA2DJyKoUrwLw1Bg6EIhzh502dF9noR9uFCllGk", "j":"1478194472015L"}
    

    Si lees este artículo en una fecha futura, es muy probable que el texto de la página haya cambiado, recuerda acceder al link de la línea de conexión arriba antes de cambiar estos valores, los valores que nos importan de esta línea de conexión siempre serán los que están a la par de “a”: y de “d”.

    Regresamos al editor de nano en la consola de nuestro servidor y hacemos los siguientes cambios:

    Buscamos la línea parecida a la siguiente:

    MD5CLASSES = "ry9Xz6kVioQctwA3G9z62Q=="<br />

    Y la cambiamos con el valor que sigue al valor “a”: de la línea del link pasado. De la siguiente manera:

    _MD5_CLASSES = "0R9F4U5fzdwVvn06wLe1JA=="
    

    Y hacemos lo mismo con la siguiente línea con el valor de “d”:

    _VERSION = "2.12.556"
    

    Quedando, según nuestro ejemplo, de la siguiente manera:

    _VERSION = "2.18.255"
    

    Para aplicar estos cambios para toda la librería debemos ahora correr el siguiente comando:

    sudo python2 setup.py install
    

    Ya con esto estamos listos para finalmente hacer uso de la librería para construir nuestro chatbot.

    Cómo loguearse y hacer uso de Yowsup para WhatsApp

    Para loguear nuestro numero en WhatsApp por medio de Yowsup debemos hacer uso de dos parámetros, siendo el primero:

    ./yowsup-cli registration --requestcode sms --phone [CC]XXXXX --cc [CC] --mcc [MCC] --mnc [MNC]
    

    En donde debemos de hacer los siguientes cambios según el país y el servicio telefónico del que haces uso:

    XXXXX: Número telefónico que deseamos loguear

    [CC]: Codigo del pais, esto lo podemos encontrar en la siguiente lista https://countrycode.org/

    [MCC]: Código móvil del país, esto lo podemos encontrar en la siguiente lista https://en.wikipedia.org/wiki/Mobilecountrycode

    [MNC]: Código de la red, eso lo podemos encontrar en la siguiente lista https://en.wikipedia.org/wiki/Mobilecountrycode

    De tal manera que si por ejemplo, el número que deseamos ingresar es “12345678” , se encuentra en Argentina y es de la red “Personal”, el comando anterior quedaría de la siguiente manera

    ./yowsup-cli registration --requestcode sms --phone 5412345678 --cc 54 --mcc 722 --mnc 034
    

    Con este comando se nos enviará un SMS con un número de validación. Con este número de validación debemos ahora correr el siguiente comando en la consola:

    ./yowsup-cli registration --register [NumValidacion] --phone [CC]XXXXX --cc [CC]
    

    Este comando nos retornara la siguiente información, es vital que la copiemos y la guardemos en otro lugar para luego.

    <span style="font-weight: 400;">status: ok</span>
    <span style="font-weight: 400;">kind: free</span>
    <b>pw: XXXXXXXXXXXXXXX</b>
    <span style="font-weight: 400;">price: $0.99</span>
    <span style="font-weight: 400;">price_expiration: 1536270651</span>
    <span style="font-weight: 400;">currency: USD</span>
    <span style="font-weight: 400;">cost: 0.99</span>
    <span style="font-weight: 400;">expiration: 4444444444.0</span>
    <b>login: XXXXXXXXXX</b>
    <span style="font-weight: 400;">type: new</span>
    

    Los únicos campos necesarios son el de pw y el de login. Estos son nuestros valores para autenticarnos en yowsup y poder hacer uso del servicio de WhatsApp de forma programática.

    El costo que aparece en esta línea de conexión es el viejo costo por suscripción que utilizaba el modelo de WhatsApp antes de ser comprado por Facebook, esto ha cambiado a ser totalmente gratuito, no te asustes por la aparición de este costo en la información de autenticación, el servicio es totalmente gratis.   

    El siguiente paso necesita volver a hacer algunos cambios en la librería, ya que el por el momento, la librería solamente permite loguearse por medio de android pero solo permite enviar y recibir mensajes por medio de s40, de tal manera que debemos de cambiar el archivo de env.py de la siguiente manera:

    <span style="font-weight: 400;">nano yowsup/env/env.py</span>
    

    Y debemos de cambiar las líneas que colocamos anteriormente de:

    <span style="font-weight: 400;">#DEFAULT = "s40"</span>
    <span style="font-weight: 400;">DEFAULT = "android"</span>
    

    Con:

    <span style="font-weight: 400;">DEFAULT = "s40"</span>
    <span style="font-weight: 400;">#DEFAULT = "android"</span>
    

    Guardamos y volvemos a correr el siguiente comando para aplicar los cambios:

    <span style="font-weight: 400;">sudo python2 setup.py install</span>
    

    Con esto ya podemos logearnos y comenzar a enviar mensajes y crear nuestro chatbot sencillo.

    Para loguearnos de forma facil y rapida debemos ahora crear un archivo de configuración con nuestra información de autenticación de la siguiente manera:

    <span style="font-weight: 400;">nano config</span>
    

    Dentro de este nuevo archivo escribimos lo siguiente:

    <span style="font-weight: 400;">cc="[CC]"</span>
    <span style="font-weight: 400;">phone="[CC]xxxxxxxxxx"</span>
    <span style="font-weight: 400;">password="xxxxxxxxxxxxxxx"</span>
    

    Con los valores que anotamos en la parte anterior luego de validar el código del SMS.

    Ya con esto podemos comenzar a enviar mensajes y probar que todo el proceso resultara con éxito de la siguiente manera:

    <span style="font-weight: 400;">./yowsup-cli demos --yowsup --config config</span>
    

    Esto abrirá la herramienta de consola de yowsup, para logearnos de forma rápida ingresamos el siguiente comando en esta nueva consola:

    <span style="font-weight: 400;">/L</span>
    

    Si esto resulta con éxito, para enviar un mensaje a un número podemos correr el siguiente comando:

    <span style="font-weight: 400;">/message send “Numero” “Mensaje”</span>
    

    Una vez hemos probado que todo resulta con éxito, podemos salir de esta consola de yowsup con Ctrl + C.

    Enviar mensajes de WhatsApp desde Python

    Ahora que tenemos todo listo para comenzar a enviar mensajes, esto lo podemos hacer desde consola con el siguiente comando:

    <span style="font-weight: 400;">./yowsup-cli demos --config config -s "Numero" "Mensaje"</span>
    

    Esta línea la puedes correr como un comando de consola desde cualquier lenguaje de programación, por lo que se te hará más fácil incluirlo en tu ciclo de trabajo.

    En Python puedes hacer algo como lo siguiente:

    <span style="font-weight: 400;">call(pathYowsup + "/yowsup-cli demos -c" + pathYowsup + " config"+  " -s "+ num + mensaje, shell=True)</span>
    

    [/signinlocker]

    Y estamos listos, con esto podemos enviar los mensajes que queramos a los números que queramos sin problemas. Esto puede ser incluido en la línea de trabajo de tu negocio para lo que tu decidas.

    Si algún cliente ha hecho alguna transacción y quieres verificar esto a partir de un mensaje que antes lo hacías a partir de SMS, si necesitas enviar cierta información que el usuario ha pedido de tu negocio desde tu página web que le enviabas al correo o para cualquier necesidad de atención al cliente de las personas, todo lo que puedes lograr con esta librería queda simplemente a tu imaginación y necesidades.

    Problemas con la herramienta

    Esta es una de las únicas herramientas que tenemos por el momento, al menos hasta el momento que Facebook decida habilitar finalmente el API de WhatsApp Business para todos, que cuenta con todo el poder de enviar y recibir mensajes, multimedia, crear grupos de usuarios y muchas más opciones en WhatsApp de forma programática.

    Sin embargo, esta sigue siendo una herramienta de terceros que no es soportada directamente por WhatsApp por lo que puede sufrir algunos problemas. Uno de los problemas con el que nos hemos encontrado utilizando este servicio es el de números bloqueados por WhatsApp. No estamos totalmente seguros por que es que sucede esto, personalmente he tenido números funcionando en chatbots con este servicio por más de 2 años sin ser bloqueados. En otros casos los números son bloqueados en menos de un día sin razón aparente, por lo que te recomendamos tengas cuidado.

    Si quieres verificar si tu número fue bloqueado al tener problemas para loguearse lo único que debes de hacer es correr el comando para pedir el SMS de confirmación, si el resultado es el siguiente entonces esto significa que has sido bloqueado temporalmente por WhatsApp:

    WhatsApp Ban:

    <span style="font-weight: 400;">status: fail</span>
    <span style="font-weight: 400;">reason: blocked</span>
    <span style="font-weight: 400;">Login: XXXXXXXX</span>