Supongo que está fallando en is_api?. Mirando el código, no me queda claro por qué fallaría con la solicitud de Zapier, pero no veo en ningún otro lugar que pueda fallar.
Me interesa esto porque alguien me preguntó sobre el mismo problema al crear usuarios a través de Zapier hace unas semanas.
Sí. Me sorprende que esto no funcione, pero al menos ahora sé que no soy solo yo.
Estoy considerando este enfoque de usar una base de datos externa y una herramienta de automatización como Zapier o Make (estaba recibiendo errores similares en Make) como prueba de concepto para un programa piloto.
Puedo arreglármelas sin usar una de estas herramientas en la fase piloto a corto plazo, pero a largo plazo Discourse será parte de una plataforma más grande y definitivamente necesito administrar miembros en una base de datos externa en un backend separado con administración de miembros y otros servicios.
Sospecho que el problema está relacionado con la forma en que estás estructurando la solicitud en Zapier. Usando la acción Webhooks de Zapier, intenta esto:
Selecciona “POST” como el Evento. Luego:
URL: <https://forum.example.com/users.json>
Payload Type: “json”
Data:
name: <nombre completo del usuario> (mostrado como requerido en la documentación, pero debería estar bien omitirlo)
username: el nombre de usuario
email: el correo electrónico del usuario
password: una contraseña que cumpla con los requisitos de tu sitio
active: "true" (entre comillas)
approved: "true" (entre comillas)
Completa la sección Headers para añadir tu Api-Key y Api-Username (solo he probado esto con system como Api-Username.
Usa los valores predeterminados para todas las demás secciones.
Aquí tienes un par de capturas de pantalla con datos falsos:
Eso está funcionando para mí. Si no funciona, la otra cosa a verificar es asegurarse de que la configuración de invite only no esté habilitada en tu sitio de Discourse.
Para ver si funcionaría, también acabo de crear una integración personalizada con la CLI de Zapier que crea nuevos usuarios. Si Discourse quiere, esa acción podría agregarse a la acción oficial de Zap de Discourse. Sin embargo, no estoy seguro de que agregar una acción para crear usuarios sea una prioridad. No creo que se haya solicitado con tanta frecuencia como cosas como crear una invitación o suspender a un usuario.
Notas de pruebas adicionales:
el Payload Type se puede establecer en “json” o “form”. Para establecer campos personalizados con la solicitud, el payload type debe establecerse en “form”.
Los campos personalizados de selección múltiple son un poco problemáticos. Zapier no permite nombres de clave duplicados en la sección Data. Debería ser posible establecer campos personalizados de selección múltiple con la acción “Custom Request” de Zapier.
los valores de los parámetros active y approved no necesitan estar entre comillas.
@simon ¡Gracias! ¡Logré que funcionara! Tu captura de pantalla me ayudó a resolver los problemas con la forma en que Zapier está creando los campos de datos. Estaba haciendo cosas raras, pero básicamente no entendía cómo formatear / mapear los datos a airtable. Necesito que la automatización de principio a fin funcione, pero la creación de usuario definitivamente funcionó.
Hola @simon: gracias de nuevo por la ayuda con el formato. Ahora estoy intentando añadir algunos campos personalizados al perfil de usuario y ver si puedo conseguir que Zapier los rellene en un nuevo usuario de Discourse. Parece que está provocando que toda la solicitud falle y estoy recibiendo el mensaje “no has completado todos los campos de usuario”.
Encontré esta publicación, así que intenté cambiar de json a form, pero eso no funcionó.
¿Algún consejo sobre cómo formatear los campos de perfil personalizados? ¡Gracias!
Excepto que ese enfoque no funcionará con campos desplegables de selección múltiple. Para ese tipo de campo, creo que tendrás que usar la acción “Custom Request”. Puede que requiera un poco de experimentación para que funcione.
Impresionante: eres verdaderamente el gran mago de Zapier + Discourse. Cambié la flecha roja y funcionó al primer intento. La tenía como el nombre del campo, pero por supuesto, eso no tiene sentido dado que no lo sabría río arriba. Entonces, por cada nuevo campo que creo, ¿simplemente uso [#] y se mapearán automáticamente en orden? Estoy planeando varios, tal vez unos 10. Además, pareció funcionar bien aunque mi campo de prueba sea un menú desplegable, ¿quizás porque simplemente lo está extrayendo de Airtable?
Sí, solo pon el id del campo en los []. Puedes obtener el id del campo cargando la versión JSON de tu página Admin / Customize / User Fields (/admin/customize/user_fields.json)
(Es más fácil de leer si tienes una extensión del navegador que formatea JSON).
Los campos desplegables deberían estar bien. Solo los campos de selección múltiple tendrán problemas. Por ejemplo, el campo “hobbies” en la captura de pantalla que publiqué anteriormente.
¿Me pregunto si está bien volver a abrir esto y preguntar sobre la creación de grupos?
Puedo crear usuarios desde Zapier sin problemas (incluso cuando la opción solo invitación está activada)
La interfaz de Zapier permite encabezados de API individuales, pero cuando solicita un objeto (que parece requerir la creación de un grupo)… obtengo esto, incluso si edito el cuerpo manualmente para que tenga el formato que solicitan los documentos de la API:
Error al crear una acción personalizada en Discourse
La solicitud sin procesar falló. Problema al ejecutar su solicitud: código de error 400: falta el parámetro o el valor está vacío: group
¿Hay alguna forma de enviar ese objeto inicial group { y cerrarlo de nuevo usando Zapier?
¡Cualquier información sería increíble y muy apreciada!