Estou imaginando que está falhando em is_api?. Olhando o código, não fica óbvio para mim por que isso falharia com a requisição do Zapier, mas não consigo ver em nenhum outro lugar que falharia.
Estou interessado nisso porque alguém me perguntou sobre o mesmo problema ao criar usuários via Zapier algumas semanas atrás.
Sim. Surpreendo-me que isso não esteja funcionando, mas pelo menos agora sei que não sou só eu.
Estou considerando esta abordagem de usar um banco de dados externo e uma ferramenta de automação como Zapier ou Make (eu estava recebendo erros semelhantes no Make) como um POC (Proof of Concept) para um programa piloto.
Posso me virar sem usar uma dessas ferramentas na fase piloto de curto prazo, mas a longo prazo o Discourse será parte de uma plataforma maior e eu definitivamente preciso gerenciar membros em um banco de dados externo em um backend separado com gerenciamento de membros e outros serviços.
Suspeito que o problema esteja relacionado à forma como você está estruturando a solicitação no Zapier. Usando a ação Webhooks by Zapier, tente o seguinte:
Selecione “POST” como Evento. Em seguida:
URL: <https://forum.example.com/users.json>
Payload Type: “json”
Data:
name: <nome completo do usuário> (mostrado como obrigatório na documentação, mas deve ser ok omitir)
username: nome de usuário do usuário
email: e-mail do usuário
password: uma senha que atenda aos requisitos do seu site
active: "true" (entre aspas)
approved: "true" (entre aspas)
Preencha a seção Headers para adicionar sua Api-Key e Api-Username (eu só testei isso com system como Api-Username.
Use os valores padrão para todas as outras seções.
Aqui estão algumas capturas de tela com dados fictícios:
Isso está funcionando para mim. Se não estiver funcionando, a outra coisa a verificar é se a configuração invite only não está habilitada em seu site Discourse.
Para ver se funcionaria, também criei uma integração personalizada com o Zapier CLI que cria novos usuários. Se o Discourse quiser, essa ação pode ser adicionada ao Zap oficial do Discourse. Não tenho certeza se adicionar uma ação para criar usuários é uma prioridade, no entanto. Acho que não foi solicitado com tanta frequência quanto coisas como criar um convite ou suspender um usuário.
Notas de testes adicionais:
o Payload Type pode ser definido como “json” ou “form”. Para definir campos personalizados com a solicitação, o payload type precisa ser definido como “form”.
Campos personalizados de multiseleção são um pouco problemáticos. O Zapier não permite nomes de chave duplicados na seção Data. Deve ser possível definir campos personalizados de multiseleção com a ação “Custom Request” do Zapier.
os valores dos parâmetros active e approved não precisam estar entre aspas.
@simon Obrigado! Consegui fazer funcionar! Sua captura de tela me ajudou a resolver os problemas com a forma como o Zapier está criando os campos de dados. Ele estava fazendo algumas coisas estranhas, mas eu basicamente não estava entendendo como formatar / mapear os dados para o Airtable. Preciso fazer a automação de ponta a ponta funcionar, mas a criação de usuário definitivamente funcionou.
Olá @simon - obrigado novamente pela ajuda com a formatação. Agora estou tentando adicionar alguns campos personalizados ao perfil do usuário e ver se consigo fazer o Zapier preenchê-los em um novo usuário do Discourse. Parece que isso está fazendo com que toda a solicitação falhe e estou recebendo a mensagem “você não completou todos os campos do usuário”.
Encontrei este post e tentei mudar de json para form, mas isso não funcionou.
Algum conselho sobre como formatar campos de perfil personalizados? Obrigado!
Exceto que essa abordagem não funcionará com campos de dropdown multiselect. Para esse tipo de campo, acho que você terá que usar a ação “Custom Request”. Pode levar um pouco de tentativa e erro para fazê-lo funcionar.
Uau - você é verdadeiramente o grande mago do Zapier + Discourse. Mudar a seta vermelha e funcionou na primeira tentativa. Eu a tinha como o nome do campo, mas é claro que isso não faz sentido, dado que não saberia disso a montante. Então, para cada novo campo que eu criar, basta usar o [#] e ele os mapeará automaticamente em ordem? Estou planejando vários - talvez uns 10. Além disso, parece que funcionou bem, mesmo que meu campo de teste seja um menu suspenso - talvez porque ele está apenas puxando do Airtable?
Sim, basta colocar o id do campo nos []. Você pode obter o id do campo carregando a versão JSON da sua página Admin / Customize / User Fields (/admin/customize/user_fields.json)
(É mais fácil de ler se você tiver uma extensão de navegador que formate JSON.)
Campos de seleção suspensa devem funcionar bem. Apenas campos de seleção múltipla terão problemas. Por exemplo, o campo “hobbies” na captura de tela que postei acima.
Gostaria de saber se posso reabrir este tópico e perguntar sobre a criação de grupos?
Consigo criar usuários pelo Zapier sem problemas (mesmo quando o invite only está ativado)
A interface do Zapier permite cabeçalhos de API individuais, mas quando solicita um objeto (o que a criação de um grupo parece exigir)… recebo isso, mesmo que edite o corpo manualmente para que seja formatado como a documentação da API pede:
Falha ao criar uma ação personalizada no Discourse
Falha na solicitação bruta. Problema ao executar sua solicitação: código de erro 400: parâmetro ausente ou o valor está vazio: group
Existe alguma maneira de enviar esse objeto inicial group { e fechá-lo novamente usando o Zapier?
Qualquer insight seria incrível e muito apreciado!