Crea una Tarea en Redmine desde un Formulario de WordPress

Integración de WordPress y Redmine

Una de las características más potentes de Redmine es su capacidad para integrarse con otros sistemas, como el sitio web de tu empresa. Al integrar Redmine con tu sitio web, puedes automatizar el proceso de creación de tareas y problemas, ahorrando tiempo y energía a tu equipo y acelerando la atención al cliente.

En este artículo, vamos a describir cómo integrar Redmine con un sitio web utilizando Gravity Forms en WordPress. Gravity Forms es un popular plugin de WordPress que permite a los usuarios crear formularios y recopilar datos de los visitantes. Mediante el uso de Gravity Forms, puedes crear tareas en Redmine directamente desde tu sitio web.

API de Gravity Forms y Redmine

Para crear tareas en Redmine utilizando Gravity Forms, necesitarás utilizar un fragmento de código como el que te proporciono a continuación. Este código utiliza la API de Gravity Forms para recuperar los valores de ciertos campos de tu formulario y luego los envía a la API de Redmine para crear una nueva tarea.

// Sustituir form id=12 por tu form id
add_action( 'gform_after_submission_12', 'send_data_to_redmine', 10, 2 );
function send_data_to_redmine( $entry, $form ) {
    // Obtiene los valores de los campos con id=1,2 & 6 - Substituye  por los valores de los ids de los campos del formulario que quieras pasar a Redmine
    $subject = rgar( $entry, '1' ); // Éste es el id del campo del formulario de Gravity cuyo valor será el asunto de la tarea en Redmine
    $description = rgar( $entry, '2' ); // Descripción de la tarea
    $custom_field_value = rgar( $entry, '6' ); // Campo personalizado
    
    // URL de tu Redmine
    $redmine_url = 'https://aquilaurldeturedmineurl.com';
    
    // La API key de Redmine (sustituye por la API del usuario que creará la tarea; tienes más info más abajo)
    $redmine_api_key = '12345678901234567890';
    
    // id del tipo de tarea con el que se creará la nueva tarea
    $tracker_id = 4;
    
    // id del proyecto donde se creará la tarea
    $project_id = 18;
    // Preparando los datos para la tarea
    $issue_data = json_encode(array(
        'issue' => array(
            'subject' => $subject,
            'description' => $description,
            'project_id' => $project_id,
            'tracker_id' => $tracker_id,
            'status_id' => 1, //cambiar por el id del estado que te interese
            'priority_id' => 4, //cambiar por el id de la prioridad que te interese
	'custom_fields' => [
                ['id' => 22, 'value' => $custom_field_value] //cambiar por el id del campo personalizado que te interese
            ]
        )
    ));
    // Usa cURL para enviar los datos a la API de Redmine
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $redmine_url . '/issues.json');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $issue_data);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
        'X-Redmine-API-Key: ' . $redmine_api_key
    ));
    $response = curl_exec($ch);
    curl_close($ch);
}

Instrucciones

Bien, aunque hemos comentado el código anterior, vamos a dar algunas pautas para su uso:

  • sustituye los ids indicados en el snippet por tus trackers, campos, etc, id
  • puedes obtener el id del Gravity Form en la lista de formularios y puedes obtener los ids de los campos del formulario comprobando la configuración de cada campo.
  • para obtener el id de tu proyecto deberás seguir los siguientes pasos:
    • vaya a esta página: https://hereyourredmineurl.com/projects.xml (probablemente tendrá que iniciar sesión en Redmine como administrador)
    • busca los detalles del proyecto en el que quieres que se cree la tarea
    • anota el “id” correspondiente a ese proyecto
  • para obtener los ids de trackers, prioridades o campos, sólo tienes que ir a Administración y pasar el cursor por encima de las distintas entidades. En la URL que te indicará el navegador, verás el id de cada valor.
  • sustituye el falso código API del snippet por el valor API correcto. Para obtener la clave API, sigue estos pasos:
    • elige qué usuario de Redmine será el autor de los tickets creados desde el formulario. También puedes crear un usuario genérico para este fin.
    • El usuario tiene que iniciar sesión en Redmine, ir a “Mi Cuenta”. En la barra lateral izquierda verás la función de clave API. Crea una nueva y copia el resultado.
IMPORTANTE: el usuario que será el autor de las tareas creadas desde el formulario tiene que ser miembro del proyecto donde se creará la misma. Tiene que tener los permisos de crear, editar y ver para su rol en el proyecto.
¿DÓNDE DEBO COLOCAR EL FRAGMENTO DE CÓDIGO? Este fragmento de código PHP debe colocarse en el archivo functions.php del tema de su sitio web WordPress. Sin embargo, recomiendo utilizar el plugin “Code Snippets”, que es mucho más fácil y seguro de gestionar. Recuerda activar el fragmento de código después de su creación.

Sobre el autor

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *