# Formulaires de libre-service

## Vue d’ensemble

Vous pouvez utiliser les formulaires en libre-service pour collecter des données structurées auprès des utilisateurs. Cela peut servir à permettre aux utilisateurs de signaler des incidents ou d’indiquer des changements, comme la الحاجة d’une nouvelle configuration de poste de travail dans un bureau.

« Self Service Forms » est une fonctionnalité optionnelle qui peut être activée pour votre tenant par le support RealmJoin. Si elle n’est pas activée, vous pouvez toujours saisir/préparer des formulaires dans la page des paramètres, mais les utilisateurs ne pourront pas voir/utiliser les formulaires en libre-service.

Nous utiliserons un workflow pour « indiquer un nouvel animal de compagnie » comme exemple.

<figure><img src="https://1100180853-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FsHMLCDOPE9VpfxI0H3Uh%2Fimage.png?alt=media&#x26;token=ea570eab-d14a-450c-8959-dd18b3a2d50e" alt=""><figcaption><p>Exemple de formulaire</p></figcaption></figure>

## Utilisation des formulaires

En utilisant le ![](https://1100180853-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FEoSZwvVn9NMFPA1LgGVn%2Fimage.png?alt=media\&token=0ef42605-f332-45bc-8a1d-503b842f8c12) élément de navigation, les utilisateurs peuvent sélectionner un formulaire à remplir et à envoyer.

<figure><img src="https://1100180853-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FPUnJnLhYCdcgI9aTfJew%2Fimage.png?alt=media&#x26;token=6455eb83-923f-4a39-b871-43d73f2d43c5" alt=""><figcaption><p>Sélecteur de formulaire</p></figcaption></figure>

Lorsqu’un utilisateur remplit et envoie un formulaire, son contenu sera envoyé par e-mail au destinataire indiqué dans la définition du formulaire. L’e-mail sera envoyé via l’infrastructure de RealmJoin et n’émanera pas des adresses e-mail de votre entreprise.

<figure><img src="https://1100180853-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FOk30wlZKDMEe3MWvzxS1%2Fimage.png?alt=media&#x26;token=c40cb2ea-113c-4b4f-9da0-ff085a808b65" alt=""><figcaption><p>Exemple d’e-mail d’un formulaire</p></figcaption></figure>

{% hint style="info" %}
Lorsque les formulaires en libre-service sont activés pour votre tenant, tous les utilisateurs peuvent utiliser / envoyer des formulaires.
{% endhint %}

## Examiner les soumissions

En utilisant le ![](https://1100180853-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FzLUitkjFFMieHZaQppjS%2Fimage.png?alt=media\&token=bb07172e-904c-459d-a9a8-e73c48f18ae6) icône de navigation, vous pouvez examiner les anciennes soumissions de formulaires de vos utilisateurs.

<figure><img src="https://1100180853-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FhW7xAk19PilNZOMOGodf%2Fimage.png?alt=media&#x26;token=adc9d2ba-359a-4fa1-b272-996d354c6b4f" alt=""><figcaption><p>Liste des soumissions</p></figcaption></figure>

Vous pouvez rechercher des soumissions par nom d’utilisateur et par nom de formulaire, mais pas par champs dans la soumission du formulaire.

Cliquez sur « View » pour voir les données du formulaire rempli. La vue est en lecture seule.

## Page des paramètres

La page des paramètres des formulaires en libre-service permet de gérer les formulaires existants, d’ajouter, de modifier et de supprimer des formulaires.

### Liste des formulaires sur la page des paramètres

<figure><img src="https://1100180853-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FYfij5VCCe1WNBYeIe1Jl%2Fimage.png?alt=media&#x26;token=e6f11b7c-8a3e-42ba-aeaf-57f6b5fa8b08" alt=""><figcaption><p>Liste des formulaires</p></figcaption></figure>

Utilisez « New Form » ou « Edit » pour décrire le formulaire à l’aide de [JSON Schema](https://json-schema.org/). Cela définit quels champs doivent être saisis et quelles valeurs sont valides. L’interface propose un éditeur de vérification de syntaxe et un aperçu du formulaire résultant.

Le schéma sera utilisé pour créer dynamiquement un formulaire pour l’utilisateur. En pratique, utilisez le schéma non seulement pour décrire les données souhaitées, mais aussi pour créer implicitement l’interface utilisateur du formulaire.

### Éditeur de schéma

Au-dessus de l’éditeur se trouvent deux champs. Utilisez le champ de gauche pour donner à votre formulaire un nom descriptif. Utilisez le champ de droite pour nommer l’adresse e-mail du destinataire des données soumises par l’utilisateur.

<figure><img src="https://1100180853-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FlDKKa8gI37FWDapkH2xh%2Fimage.png?alt=media&#x26;token=d13dbe12-150a-4503-ba1c-50d637962498" alt=""><figcaption><p>Exemple d’éditeur de schéma</p></figcaption></figure>

Vous pouvez utiliser « Update JSON Form Preview » pour créer un aperçu du formulaire résultant sous l’éditeur.

<figure><img src="https://1100180853-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkrcM7cKOpXKri1kVrh%2Fuploads%2FPqMhyTDusXhcaIcafvFu%2Fimage.png?alt=media&#x26;token=f04e8882-1d3c-4bd4-a032-2af26f763e59" alt=""><figcaption><p>Aperçu de l’éditeur</p></figcaption></figure>

Après avoir modifié le schéma, appuyez sur « Submit » pour enregistrer vos modifications. Un message d’erreur s’affichera si la vérification de syntaxe échoue.

## JSON Schema

L’utilisation de JSON Schema sort du cadre de ce document. Vous pouvez utiliser des générateurs de schémas en ligne (comme [celui-ci](https://www.jsonschema.net/app)) pour simplifier le processus.

Pour donner au moins un point de départ, examinons le schéma de notre exemple

```json
{
  "title": "Personne",
  "type": "object",
  "required": [
    "name",
    "date",
    "location",
    "pets"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "Prénom et nom",
      "minLength": 4,
      "default": "- Votre nom ici -"
    },
    "date": {
      "type": "string",
      "format": "date",
      "options": {
        "flatpickr": {}
      }
    },
    "location": {
      "type": "object",
      "title": "Emplacement",
      "properties": {
        "city": {
          "type": "string",
          "default": "San Francisco"
        },
        "state": {
          "type": "string",
          "default": "CA"
        },
        "citystate": {
          "type": "string",
          "description": "Ceci est généré automatiquement à partir des deux champs précédents",
          "template": "{{city}}, {{state}}",
          "watch": {
            "city": "location.city",
            "state": "location.state"
          }
        }
      }
    },
    "pets": {
      "type": "array",
      "format": "table",
      "title": "Animaux de compagnie",
      "uniqueItems": true,
      "items": {
        "type": "object",
        "title": "Animal de compagnie",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "chat",
              "chien",
              "oiseau",
              "reptile",
              "autre"
            ],
            "default": "chien"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "default": [
        {
          "type": "chien",
          "name": "Walter"
        }
      ]
    }
  }
}
```

Chaque JSON Schema se compose d’objets. Chaque objet doit au minimum avoir un type et un nom.

### Types

#### Objet

Les objets « complexes » contenant d’autres sous-objets doivent utiliser le **type** object. Dans notre exemple, le nœud racine « Person » du schéma est de ce type.

Vous pouvez définir des champs obligatoires à l’aide du mot-clé **required** . Ces champs doivent également être définis dans le schéma.

Utilisez **properties** pour décrire les caractéristiques requises de chaque champ, ce qui inclut la fourniture d’un type et d’un nom.

#### Tableau

Les tableaux vous permettent d’ajouter plusieurs **éléments** similaires à une liste. Utilisez le **éléments** mot-clé pour décrire le type des éléments, etc.

#### String

Du texte simple. Vous pouvez le préremplir à l’aide du **par défaut** mot-clé.

Pour n’autoriser que certaines valeurs, vous pouvez utiliser le **enum** mot-clé.
