Las solicitudes a la API de Discourse pueden automatizarse creando un Zap que utilice un Webhook de Zapier como paso de acción. Este tema describirá cómo realizar solicitudes para las siguientes acciones:
- agregar un usuario a un grupo
- otorgar una insignia personalizada
Para averiguar cómo realizar otros tipos de solicitudes de API con Zapier, lea este tema y luego busque en la documentación de la API de Discourse la acción que desea realizar. También puede encontrar cómo crear una solicitud de API para una acción específica leyendo Reverse engineer the Discourse API.
Configurar el paso de activación (trigger)
Cada Zap debe tener un paso de activación y un paso de acción. La activación se utiliza para pasar datos desde una aplicación al paso de acción del Zap. En algunos casos, la activación también puede utilizarse para detener que un Zap complete su paso de acción a menos que sus datos cumplan ciertas condiciones.
Para configurar su paso de acción, vaya a su panel de control de Zapier y haga clic en el botón Crear un Zap (Make a Zap). Se abrirá un formulario de búsqueda que le pedirá que elija una aplicación de activación.
Para los ejemplos en este tema, estoy utilizando el evento Nuevo usuario de WordPress como paso de acción. Esto se debe a que es fácil de configurar para probar las llamadas a la API.
El nodo “Probar este paso” (Test This Step) de su paso de activación le permite seleccionar una muestra de datos de su aplicación de activación que se pasará al paso de acción de su Zap. Estos datos serán útiles para configurar el paso de acción.
Agregar un paso opcional para recuperar detalles de Discourse
Dependiendo de los datos que se pasen desde su aplicación de activación, es posible que necesite recuperar algunos datos de Discourse antes de realizar su solicitud de API final. Por ejemplo, la activación Nuevo usuario de WordPress pasa el nombre de usuario de WordPress y la dirección de correo electrónico del usuario. Sé que la dirección de correo electrónico coincidirá con la del usuario de Discourse, pero para las solicitudes de API en este ejemplo, necesito saber el nombre de usuario de Discourse del usuario.
Para obtener los detalles de un usuario de Discourse a partir de su dirección de correo electrónico, agregue un paso de acción a su Zap. Seleccione “GET” en el menú de acción del webhook.
En el paso de edición de la plantilla del webhook, ingrese la URL base de su sitio de Discourse, seguida de /admin/users/list/all.json en la sección de URL. Por ejemplo, la URL base de mi sitio es https://demo.scossar.com, así que ingreso https://demo.scossar.com/admin/users/list/all.json en el campo de URL.
En la sección Parámetros de la cadena de consulta (Query String Params), ingrese “email” como la clave y luego haga clic en el icono “Insertar un campo” para abrir el menú desplegable. Seleccione el valor que fue pasado por su paso de activación y que contiene la dirección de correo electrónico del usuario.
Autenticar la solicitud
Desplácese hacia abajo en el formulario hasta la sección Encabezados (Headers). Esta sección se utiliza para autenticar la solicitud. Requiere tres pares clave/valor:
Api-Username: el nombre de usuario de un administrador en su sitio. En la mayoría de los casos, el usuario ‘system’ será una buena opción para esto.Api-Key: la clave de API asociada con el nombre de usuario que ha utilizado en el primer par clave/valorContent-Type:multipart/form-data
La sección de Encabezados completada debería verse similar a esta, pero con la clave de API de su usuario:
Haga clic en el botón Continuar para ver los datos que se recuperan de Discourse para esta solicitud.
Agregar el paso de acción final
Una vez que su activación y el paso opcional para recuperar datos de Discourse estén configurados, haga clic en el enlace “Agregar un paso” y seleccione “Webhooks by Zapier” en el menú de acción. Luego se le pedirá que elija qué método de solicitud desea utilizar en su solicitud de API a Discourse.
Estos son los tipos de solicitud requeridos para los ejemplos utilizados en este tema:
- agregar un usuario a un grupo:
PUT - otorgar una insignia personalizada:
POST
Para configurar solicitudes de API diferentes a los ejemplos de este tema, consulte la documentación de la API de Discourse para ver si hay un ejemplo de la solicitud que desea realizar. Si no encuentra un ejemplo allí, lea Cómo ingeniería inversa de la API de Discourse para aprender a encontrar la URL y el método de solicitud para la acción que desea realizar. Una vez que haya encontrado el método de solicitud, selecciónelo en el menú de acción.
Nota: si su solicitud utiliza el método DELETE, seleccione “Solicitud personalizada” (Custom Request) en el menú de acción.
Configurar el paso de acción final
La sección de Encabezados de la acción se puede configurar de la misma manera para todas las solicitudes de API. Consulte la sección ‘Autenticar la solicitud’ de este tema para obtener detalles. Si ha agregado el paso opcional para recuperar detalles de Discourse, puede configurar la sección de Encabezados de la acción final exactamente de la misma manera que lo hizo para ese paso.
Una vez que se hayan agregado los pares clave/valor del encabezado, deberá rellenar los campos URL y Datos del formulario para su solicitud de API.
Agregar un usuario a un grupo
Para agregar un usuario a un grupo, se realiza una solicitud PUT a /groups/<group_id>/members.json. La forma más fácil de encontrar el ID de un grupo es visitar la página del grupo a través de la interfaz de usuario de Discourse y luego ingresar .json en la URL de la barra de direcciones de su navegador. Por ejemplo, mi sitio tiene un grupo “soporte” en https://demo.scossar.com/g/support. Al ir a https://demo.scossar.com/g/support.json puedo ver que el ID del grupo es 41. La URL base de mi foro es https://demo.scossar.com. La URL en mi paso de acción final para agregar usuarios a un grupo se establece en https://demo.scossar.com/groups/41/members.json.
La solicitud para agregar usuarios a un grupo requiere un parámetro: una lista de nombres de usuario separados por comas. En la sección Datos del formulario, ingrese “usernames” como la clave. Luego haga clic en el icono “Insertar un campo” para buscar la propiedad de nombre de usuario que ha sido pasada desde la activación o el paso de acción GET opcional.
En mi caso, quiero el nombre de usuario que fue recuperado por el paso GET, así que extiendo el menú “GET” y selecciono Nombre de usuario (Username) en el menú desplegable.
Todas las demás secciones del formulario pueden dejarse con sus valores predeterminados.
Haga clic en el botón Continuar y luego pruebe su paso. Si el usuario que ha pasado a través de los pasos anteriores existe en su sitio de Discourse y aún no es miembro del grupo que ha seleccionado, debería ser agregado al grupo cuando pruebe el paso.
Si todo funciona como se espera, active su Zap.
Otorgar una insignia personalizada
Para otorgar una insignia personalizada a un usuario, se realiza una solicitud POST a la URL base de su foro + /user_badges. Para mi sitio, la URL para otorgar insignias es https://demo.scossar.com/user_badges. El campo de URL completado en Zapier se ve así:
La sección Datos del formulario requiere dos pares clave/valor. Agregue una clave “username” y configúrela en el campo que devuelve el nombre de usuario del usuario. Agregue una clave “badge_id” y configúrela en el ID de la insignia que desea otorgar. Puede encontrar el ID de la insignia yendo a su página Admin / Insignias y seleccionando la insignia en el menú lateral izquierdo. Verá el ID de la insignia como el último valor de la URL en la barra de direcciones de su navegador.
La insignia que estoy otorgando tiene un ID de 105, así que mi sección de Datos completada se ve así:
Asegúrese de haber configurado la sección de Encabezados del formulario, luego haga clic en Continuar. Luego haga clic en el botón Enviar prueba (Send Test) para probar su Zap. El usuario que ha pasado a través de los pasos anteriores debería recibir la insignia.
Si todo funciona correctamente, active el Zap.












