Publicando en Drupal a través del correo

Publicar en drupal mediante correo
Cuando utilizamos el CMS Drupal este nos brinda varias posibilidades para enriquecer nuestro sitio con contenido. Podemos utilizar los contenidos predefinidos que vienen con él o crear los nuestros propios acordes a nuestras necesidades. Para después a la hora de publicar nuevo contenido en nuestro sitio tenemos que acceder a este, dirigirnos a la sección de contenidos, seleccionar el tipo de contenido que vamos a crear, introducir los datos y salvar el contenido. Y si les dijera que hay otra vía que incluso puede ser más sencilla para muchas personas (sobre todo para las personas que no están muy familiarizadas con la gestión de contenidos en Drupal) o que se nos puede plantear como solución ante ciertas situaciones.

A continuación veremos cómo  configurar todo para poder a través del envío de correos a una cuenta que gestionará nuestro sitio web publicar contenidos en este sin tener que entrar para nada. Para esto tenemos que tener instalados los siguientes módulos (les pongo además las versiones utilizadas al momento de escribir este artículo):

 Una vez tenemos activados los módulos (es importante que en la sección de Mailhandler hayamos activado también el módulo Mailhandler PHP IMAP) nos dirigimos a configurar el módulo Mailhandler. Para esto vamos hacia Estructura -> Mailhandler Mailboxes, y una vez ahí damos clic en agregar. Ahora debemos llenar los campos con la información requerida, esta es diferente según los parámetros de configuracion de la cuenta de correo que vayamos a utilizar:

Administrative title: mi primer mailbox
Protocol: IMAP
Folder: INBOX
Domain: imap.gmail.com
Port: 993
Username: nombredeusuario@gmail.com
Password: contraseña
Extra commands: /ssl/novalidate-cert

Por defecto si tenemos activado el módulo Mailhandler PHP IMAP en la sección More Settings (más configuraciones) en la parte de Retrieval library debemos de tener seleccionado PHP IMAP, sino debemos seleccionarlo. Una vez terminado damos en salvar y damos entonces en Test connection para probar la conexión con la cuenta de correo. Si configuramos todo bien esto nos debe devolver como respuesta un mensaje de que pudo realizar la conexión y otro con  la cantidad de mensajes que tiene la cuenta.

Mailhandler conexión correcta
Ahora vamos a crear nuestro Feed importer, (debemos haber activado también el módulo Feeds Admin UI) para eso nos dirigimos a Estructura -> Feeds Importers -> Add importer. Una vez ahí introducimos un nombre y una descripción y damos en create. Ahora tenemos que configurar un conjunto de parámetros que definirán que es lo que vamos a importar y cómo lo vamos a hacer.

Empezemos entonces con la primera sección Basic settings:

Configuraciones básicas

En esta sección  es recomendable especificar cada que tiempo se va a verificar que hay nuevos contenidos a importar, en este caso se estableció que verifique tan frecuente como sea posible. En caso de que el tiempo seleccionado sea menor que el que tiene configurado por defecto el Cron, debemos configurar este (en próximos artículos veremos como hacerlo).

En la sección Fetcher -> Change seleccionamos Mailhandler fetcher ya que va a ser la vía por la que vamos a acceder al nuevo contenido a importar y damos en salvar.

En la sección Mailhandler fetcher lo dejamos como está por defecto (All), pues a veces cuando seleccionamos Nodes only que es la opción que deberiamos escoger puede dar problemas y no leer correctamente los correos.

En la sección Parser -> Change seleccionamos Mailhandler IMAP stream parser y guardamos.

En la sección Mailhandler IMAP stream parser dejamos como Authentication plugin -> "From" address authentication. En Available commands (comandos disponibles) podemos ver los comandos disponibles de los que vamos a hacer uso en otra sección, por defecto viene status, pero podemos habilitar otros comandos disponibles o crear los nuestros propios poniendo poniendo simplemente el nuevo comando en una línea debajo del que ya esta y así sucesivamente.

En la sección Processor -> Change dejamos la opción seleccionada Node processor ya que lo que vamos a crear son nuevos nodos.

En la sección Node processor -> Settings seleccionamos en Bundle -> Article que es el tipo de nodo que vamos a crear. Los demás valores los dejamos como vienen por defecto pues ya está seleccionado que lo que vamos a hacer es insertar nuevos nodos y no queremos actualizar nodos existentes. Como autor podemos dejar anonymous o escribir otro usuario que tenemos que tener creado en nuestro sitio y que queramos que aparesca como autor de los nuevos contenidos que importemos.

En la sección Node processor -> Mapping es en dónde vamos a especificar cada parte del correo que vamos a utilizar para conformar nuestro Nodo y que quedaría de esta forma:

Parámetros de mapping

Es importante para que el Feed funcione correctamente y puedan ser insertados los nodos que la dirección del correo enviado a la cuenta que utiliza nuestro sitio y que configuramos en el Mailhandler pertenezca a un usuario que tengamos creado en el sitio  y que debe tener dicha dirección de correo asignada así como los permisos para insertar contenido en este caso.

Ahora para probarlo primero que todo enviamos un correo a la dirección que configuramos en el Mailhandler con un asunto que será nuestro título para el artículo y el contenido del correo será el del artículo (importante tener en cuenta lo que les explique en el párrafo anterior). nos dirigimos nuevamente a la sección Basic Settings -> Settings y hacemos clic en el enlace que tiene la url de nuestro sitio/import o simplemente la escribimos. En mi caso es http://localhost/drupal-7.51/import. Esto nos mostrara todos los imports que tenemos creado y hacemos clic en el import cuyo nombre es el que creamos para correrlo por primera vez. Nos muestra entonces los parámetros del Mailhandler que configuramos así cómo comandos, dejamos todos como está y damos en Import. Si todo sale satisfactoriamente esto nos debe mostrar un mensaje de que se encontró el mensaje en nuestro buzón de correo y que se ha creado un nodo.

Import realizado correctamente
Ahora si nos dirigimos a la sección de contenido de nuestro sitio veremos el nuevo contenido creado y con estado de publicado que era el comando que venía por defecto creado cuando estabamos creando nuestro import. Ahora para poder correr nuevamente el import solamente tenemos que dirigirnos a la sección de admin/config/system/cron y dar clic en el botón correr Cron o esperar a que pase el tiempo que tiene programado correr el correr. Esto nos debe mostrar un mensaje de que igualmente se ha encontrado el correo y sea creado el nodo correctamente. Ahora si les salió además un mensaje con el siguiente error, es debido a un problema en el módulo Mailhandler que sale cuando tenemos una versión de php superior que la 5.3. Esto lo podemos resolver aplicando el siguiente parche.

Mailhandler error

Sí queremos cambiar el estado de este nuevo nodo a no publicado podemos hacerlo de dos vías:
  • En la sección Mailhandler IMAP stream parser -> Settings en los comandos disponibles ponemos a status: 0 y salvamos. Seguidamente nos dirigimos a la sección Node processor -> Mapping añadimos uno nuevo:

Mapping status
Ahora ya podemos correr el Cron y ver como el nuevo contenido se crea pero con estado de no    publicado.
  •  La segunda vía es dejando el comando status como estaba y en mapping añadirlo al target Published status. Pero entonces ahora en el correo que creamos debemos en el contenido escribir en la primera línea status: 0 y en las líneas inferiores nuestro contenido para el nodo.
Mapping status 2
Correo estructura
Bueno, esto es todo por hoy, si tienen alguna pregunta no dejen de comentar. En próximos artículos veremos otras cosas que podemos realizar utilizando estos módulos.

2 comentarios

Write comentarios
Anónimo
AUTHOR
3 de abril de 2017, 13:54 delete

Interesante propuesta, otra de las opciones de Drupal, aclarar que hay que tener instalado la libreria de php "php5-imap" en ubuntu "apt-get install php5-imap", esta no se activa por default por lo que hay que activarla de la siguiente forma "php5enmod imap" en una terminal y listo.

Reply
avatar
3 de abril de 2017, 14:01 delete

Gracias por la contribución para el caso de linux.

Reply
avatar

Déjame saber cualquier duda, sugerencia o experiencia al respecto. ¡Espero tú opinión! También puedes comentar como anónimo. ConversionConversion EmoticonEmoticon