@@ -7,6 +7,16 @@ Implementa una base de datos de mensajes a enviar, usa la MAC address del host q
Los requerimientos del programa son tener Python3 y pip3, para luego instalar los módulos de Flask, sqlite3 y python-arptable. Si no quiere hacerlo manualmente hay un archivo [install.sh](/install.sh).
## Preparación
Para correr el servicio en el servidor simplemente hay que escribir en la consola
```
python3 deploy.py
```
Aclaración: es muy importante que no se borre ninguna carpeta si no va a borrar la base de datos. Al borrar la base de datos los archivos que se estaban por mandar no se mandarán, pero entonces se vuelve indistinto borrar las carpetas.
## Uso
Para enviar mensajes se puede usar dos formas, la forma encriptada o la forma sin encripción, ambas son similares.
...
...
@@ -30,7 +40,7 @@ Aclaración: el Content-Type debe ser multipart/form-data
### myserver.com/msg
Llamando a este link se envían los parámetros de envío del mensaje pasado en data, y se procede a poner en la cola el mensaje. (GET o POST)
Llamando a este link se envían los parámetros de envío del mensaje pasado en data, y se procede a poner en la cola el mensaje. (POST)
- Bajo 'serv' se envía el servicio a usar, por ahora solo hay 'wpp1' correspondiente a WhatsApp
- Bajo 'dest' se envía el número de destino, el formato puede variar dependiendo del servicio y dicho formato será documentado, el de 'wpp1' es el formato internacional sin el '+' y sin espacios ni guiones
...
...
@@ -40,4 +50,37 @@ En caso de que no exista el servicio o este no admita el tipo, se devolverá un
### myserver.com/cons
Por este link se consulta el estado de los mensajes que se quieren enviar, mandando el id bajo 'id' (GET o POST). Se devuelve 'queued' o 'delivered'. Si fue enviado el mensaje se archiva y no puede ser consultado nuevamente.
Por este link se consulta el estado de los mensajes que se quieren enviar, mandando el id bajo 'id' (POST). Se devuelve 'queued' o 'delivered'. Si fue enviado el mensaje se archiva y no puede ser consultado nuevamente.
## Contribuir
Para contribuir con el proyecto se debe popular el archivo `services.py`
La forma de hacer esto consta de lo siguiente:
- Para servicios existentes se pueden agregar tipos de datos, en cuyo caso deberán ser incluidos en la clase `Datatypes` con su respectivo chequeo de validez en `validate`
- Para agregar nuevos servicios se debe hacer una nueva clase que derive de `ServiceBase` e implementar las funciones de dicha clase abstracta. Luego agregar el servicio a `Services` con su validación y expandir `serviceFactory(serv)` para que pueda devolver una instancia de la nueva clase
En el método
python```
@abstractmethod
def send(self,data):
pass
```
data es un dictionario que contiene los datos del pedido guardados en la base de datos
- En 'id' está el id del pedido, que coincide con el nombre del archivo a mandar
- En 'dir' está el nombre del directorio bajo el cual se encuentra el archivo a enviar
- En 'dest' se encuentra el destinatario
- En 'type' se encuentra el formato de lo que queremos mandar
- En 'state' se encuentra el estado del mensaje, que siempre será 'queued' y es completamente irrelevante a la operación
La función retorna un booleano del resultado.
El método
python```
@abstractmethod
def validate(self,datatype):
pass
```
toma un string correspondiente al formato de los datos y retorna un booleano correspondiente a si el servicio soporta o no el tipo de dato. Es una buena práctica usar `Datatypes.validate()` para chequear que el formato existe.