После обновления пользователя автоматизация: можно ли запускать её по одному обязательному полю, при этом опционально включая другие поля профиля/пользовательские поля, если они есть?

Я пытаюсь использовать скрипт Создание поста с триггером После обновления пользователя для рабочего процесса приветствия/уведомления новых пользователей, но не уверен, правильно ли я понимаю документированное ограничение или существует ли поддерживаемое обходное решение.

Я уже ознакомился со следующими материалами:

Мой случай использования

Я хочу создавать автоматический пост, когда новый пользователь заполнит обязательное поле регистрации/профиля.

При этом я бы хотел, чтобы в этом посте также отображались некоторые опциональные пользовательские поля, если пользователь их заполнил, например:

  • местоимения / пол
  • языки
  • подтверждение того, что правила сообщества были поняты

Таким образом, предполагаемое поведение должно быть следующим:

  • одно обязательное поле гарантирует срабатывание автоматизации
  • другие опциональные поля включаются в пост только в том случае, если они заполнены

Где я застрял

В документации для триггера сказано:

Автоматизация сработает только после того, как пользователь заполнит все указанные поля.

А в интерфейсе также указано:

Сработает только если пользователь заполнил все эти поля

Как я понимаю, если я добавлю опциональные поля в конфигурацию триггера, чтобы использовать их плейсхолдеры, они перестанут быть опциональными для целей автоматизации, поскольку автоматизация не сработает, пока они не будут все заполнены.

Это создает замкнутый круг:

  • если я включу опциональные поля в триггер, автоматизация может никогда не сработать для пользователей, которые их пропустили
  • если я не включу их в триггер, то, возможно, не смогу надежно использовать их плейсхолдеры в посте

Мои вопросы

  1. Правильно ли я понимаю текущее поведение?
  2. Актуально ли документированное ограничение и сегодня?
  3. Существует ли какой-либо поддерживаемый способ:
    • запускать автоматизацию по одному обязательному полю
    • но при этом получать доступ к другим опциональным пользовательским/профильным полям в содержимом поста, если они есть?
  4. Если нет, есть ли рекомендуемое обходное решение для этого случая использования?

Идеальное поведение

Я надеюсь на что-то вроде:

  • срабатывание при выполнении любого обязательного условия триггера
  • замена опциональных плейсхолдеров, если значения существуют
  • оставление опциональных плейсхолдеров пустыми, без изменений или их исключение, если значений нет

Но я не уверен, возможно ли это уже сейчас, и просто ли неправильно настраиваю это.

Буду признателен за любые рекомендации.

Спасибо!

Вы должны иметь возможность настроить триггер для вашего пользовательского поля и добавить поля профиля в раздел содержимого сообщения.

Например, если триггером является подтверждение правил, то в содержимом сообщения вы можете использовать:

Привет! Я новичок здесь
{{#pronouns}}Мои местоимения — {{pronouns}}{{/pronouns}}
{{#languages}}Я говорю на {{languages}}{{/languages}}

Именно это вы и искали?

Да.

Так что я должен был указать точные названия полей. Извините.

  • Pronouns/gender
  • Languages
  • Community Guidelines (understood)

Публикация, которую я генерирую, просто отправляется в запущенную ветку для сотрудников, чтобы предупредить о новых пользователях.

Я не понимаю, как использовать предложенный вами формат или как преобразовать названия полей со специальными символами. Мне нужен просто список. Правильно ли будет сделать так:

* {{#pronouns/gender}} {{pronouns/gender}}{{/pronouns/gender}}
* {{#languages}} {{languages}}{{/languages}}
* {{#community_guidelines_(understood)}} {{community_guidelines_(understood)}}{{/community_guidelines_(understood)}}

Мне просто нужно убрать символы из названий полей?

Я мог бы продолжить экспериментировать, но поскольку эти поля необязательны (и мне не хочется создавать кучу тестовых новых пользователей), проверка может занять некоторое время.

Отличный вопрос. При беглом просмотре кажется, что имена полей с символами действительно могут помешать работе автоматизации… Возможно, нам потребуется небольшое обновление с нашей стороны, чтобы удалять их для такого рода использования.

Не могли бы вы пока убрать символы из пользовательских полей? {{pronouns_or_gender}} и {{community_guidelines_undersood}} должны работать в автоматизации без них.

Я пока поставил язык один, так как там нет символов. Я также попробую другие.

Можете объяснить шаблон {{#foo}} {{/foo}}{{foo}}?

Конечно, {{foo}} — это само поле, а конструкция {{#foo}} {{/foo}} вокруг него представляет собой условный блок. Таким образом, если foo не заполнено, ничего между {{#foo}} и {{/foo}} отображаться не будет.

Например, если вы напишете

Меня зовут {{foo}}

и переменная foo не будет определена, в сообщении появится только текст «Меня зовут».

Однако, если вы используете

{{#foo}}Меня зовут {{foo}}{{/foo}}

и переменная foo не определена, то фраза «Меня зовут» также будет исключена из сообщения.

О, как изысканно!

Так, я wondering, может ли тестирование вариантов привести к полному сбою всего процесса? Имею в виду, что новый пост вообще не будет создан. Если нет, то я могу просто попробовать всевозможные комбинации полей со символами и посмотреть, что сработает быстрее.

Отлично, хорошие новости.

Это работает:

* Languages: {{languages}}

Однако это не работает:

* Pronouns: {{pronouns_gender}}
* guidelines: {{community_guidelines_understood}} 

Напоминаю, вот названия полей:

Pronouns/gender
Community Guidelines (understood)

Я попробую:

* Pronouns: {{pronouns/gender}}
* guidelines: {{community_guidelines_(understood)}} 

Если это не сработает, возможно, потребуется исправление в коде? Я бы предпочёл не менять названия полей.

Окей, оказалось, что это не так.

А сохранение скобок внутри ломает автоматизацию. Вот что было в логах:

Mustache::Parser::SyntaxError (Unclosed tag
  Line 12
    * guidelines: {{community_guidelines_(understood)}}
                                        ^
)

Так что, мне нужно отправить запрос на исправление бага или предложение по улучшению, чтобы символы удалялись из названий полей?

О, да, извините, это было непонятно: если вы удалите специальные символы только из пользовательских полей, тогда они заработают в автоматизации… Discourse требует некоторых доработок, чтобы автоматически удалять специальные символы, чтобы их можно было использовать в автоматизации в том виде, в котором они сейчас настроены у вас.