Я предполагаю, что ошибка возникает в is_api?. Просматривая код, я не вижу очевидной причины, по которой это должно было бы не работать с запросом от Zapier, но я также не вижу других мест, где могла бы возникнуть ошибка.
Меня это интересует, потому что несколько недель назад кто-то спрашивал меня о той же проблеме с созданием пользователей через Zapier.
Да. Я удивлен, что это не работает, но хотя бы теперь я знаю, что проблема не только у меня.
Я рассматриваю этот подход с использованием внешней базы данных и инструмента автоматизации, такого как Zapier или Make (я получал похожие ошибки и в Make), как доказательство концепции для пилотного проекта.
На коротком пилотном этапе я могу обойтись без использования таких инструментов, но в долгосрочной перспективе Discourse станет частью более крупной платформы, и мне определенно потребуется управлять участниками во внешней базе данных через отдельный бэкенд с функциями управления участниками и другими сервисами.
У меня это работает. Если у вас не получается, проверьте ещё одно: убедитесь, что на вашем сайте Discourse не включена настройка invite only (только по приглашениям).
Чтобы проверить возможность работы, я также создал собственную интеграцию с помощью Zapier CLI для создания новых пользователей. Если команда Discourse захочет, это действие можно добавить в официальный плагин Zap для Discourse. Однако, думаю, что добавление действия для создания пользователей не является приоритетом. Мне кажется, что такие запросы, как создание приглашения или приостановка пользователя, поступают гораздо чаще.
Заметки по результатам дополнительных тестов:
Тип полезной нагрузки (Payload Type) можно установить как «json», так и «form». Для установки пользовательских полей в запросе тип полезной нагрузки должен быть установлен в «form».
Поля типа Multiselect вызывают некоторые трудности. Zapier не разрешает дублирование ключей в разделе Data. Возможно, пользовательские поля типа Multiselect можно установить с помощью действия Zapier «Custom Request».
Значения параметров active и approved не обязательно заключать в кавычки.
@simon Спасибо! У меня получилось! Твой скриншот помог мне разобраться с проблемами в том, как Zapier создаёт поля данных. Он делал что-то странное, но я, по сути, не понимал, как форматировать и сопоставлять данные для Airtable. Мне нужно наладить сквозную автоматизацию, но создание пользователя точно сработало.
Привет, @simon — ещё раз спасибо за помощь с форматированием. Сейчас я пытаюсь добавить несколько пользовательских полей в профиль пользователя и проверить, сможет ли Zapier заполнить их при создании нового пользователя в Discourse. Похоже, это приводит к сбою всего запроса, и я получаю сообщение: «Вы не заполнили все обязательные поля пользователя». Я нашёл этот пост, поэтому попробовал переключиться с JSON на форму, но это тоже не сработало. Есть ли какие-либо советы по форматированию пользовательских полей профиля? Спасибо!
Однако этот подход не сработает для полей выпадающего списка с множественным выбором. Для такого типа полей, думаю, вам придется использовать действие “Custom Request”. Возможно, потребуется немного поэкспериментировать, чтобы заставить это работать.
Вау — вы настоящий великий магистр Zapier и Discourse. Изменил красную стрелку, и всё заработало с первого раза. Я указал название поля, но, конечно, это бессмысленно, так как система не может знать это «наверху». Значит, для каждого нового поля, которое я создаю, достаточно использовать [#], и они будут автоматически сопоставлены по порядку? Я планирую создать несколько — может быть, около 10. Также всё работало нормально, хотя моё тестовое поле было выпадающим списком — возможно, потому что данные просто подтягиваются из Airtable?
Да, просто укажите id поля в []. Вы можете получить id поля, загрузив JSON-версию вашей страницы «Администрирование / Настройка / Пользовательские поля» (/admin/customize/user_fields.json).
(Его легче читать, если у вас есть расширение браузера для форматирования JSON.)
Выпадающие списки должны работать нормально. Проблемы могут возникнуть только с полями «Множественный выбор». Например, поле «Хобби» на скриншоте, который я опубликовал выше.
Интересно, можно ли снова открыть эту тему и спросить о создании групп?
Я могу создавать пользователей через Zapier без проблем (даже когда включена опция invite only)
Интерфейс Zapier позволяет указывать отдельные заголовки API, но когда он запрашивает объект (что, похоже, требуется для создания group), я получаю следующую ошибку, даже если вручную отредактирую тело запроса в соответствии с документацией API:
Не удалось создать пользовательское действие в Discourse
Прямой запрос не удался. Ошибка при выполнении вашего запроса: Код ошибки 400: отсутствует параметр или его значение пусто: group
Есть ли способ отправить этот начальный объект group { и закрыть его снова с помощью Zapier?