> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Publier votre premier contenu généré par l'utilisateur

> Publiez du contenu généré par l'utilisateur dans PlayFab Economy v2 avec Postman ou Game Manager, à l'aide de CreateUploadUrls, d'Azure Blob Storage et des API d'articles brouillons.

<Info>
  Economy v2 est désormais en disponibilité générale. Pour obtenir de l'aide et donner votre avis, rendez-vous sur le [forum PlayFab](https://community.playfab.com).
</Info>

Ce tutoriel vous guide dans la publication de contenu UGC avec du contenu, à la fois au moyen des API et de l'interface de Game Manager, en entrant plus dans le détail que le démarrage rapide.

## Configuration requise

* Un [compte de développeur PlayFab](https://developer.playfab.com)
* Un titre pour lequel l'UGC est activé

## Via les API

Dans cette section, nous allons utiliser les [collections Postman](/fr/services/playfab/sdks/postman/postman-quickstart) pour interagir avec les API UGC de PlayFab, mais vous pouvez utiliser n'importe lequel de nos [SDK](/fr/services/playfab/sdks/playfab-sdk-intro).

### Créer des URL de blob

* Le système UGC fonctionne avec le modèle d'entité PlayFab ; nous devons donc utiliser des jetons d'entité au lieu de tickets de session pour appeler ces API. Vous pouvez découvrir comment obtenir un jeton d'entité de titre dans le [démarrage rapide des collections Postman](/fr/services/playfab/sdks/postman/postman-quickstart).

* Le système UGC utilise [Azure Blob Storage](https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction) pour stocker tout le contenu (fichiers et images) associé à l'UGC de votre titre. Pour charger le contenu, nous devons d'abord appeler l'API  `CreateUploadUrls`, en transmettant les noms et tailles de fichiers (en octets) pour créer les nouveaux blobs. Par exemple, si je voulais charger un fichier texte et une image PNG, je transmettrais ce qui suit dans le corps de la requête :

  ```JSON theme={null}
  {
    "Files": [
      {
        "FileName": "HelloWorld.txt",
        "FileSize": 12
      },
      {
        "FileName": "PlayFabLogo.png",
        "FileSize": 20725
      }
    ]
  }
  ```

* La réponse inclut un `Id` et une `Url` pour chaque élément de contenu :

  ```JSON theme={null}
  {
      "code": 200,
      "status": "OK",
      "data": {
          "UploadUrls": [
              {
                  "Id": "[Content ID]",
                  "Url": "[Content Url + '?' + Token]",
                  "FileName": "HelloWorld.txt"
              },
              {
                  "Id": "[Image ID]",
                  "Url": "[Image Url + '?' + Token]",
                  "FileName": "PlayFabLogo.png"
              }
          ]
      }
  }
  ```

<Note>
  Chaque jeton de création (renvoyé dans le champ « Url » de la réponse) est valide pendant 6 heures ; passé ce délai, vous ne pourrez plus charger de contenu dans le blob. Si vous n'avez chargé aucun contenu dans le blob, celui-ci est nettoyé par notre service et vous devrez créer un nouveau blob en appelant à nouveau `CreateUploadUrls`. Cette URL ne permet pas non plus d'accéder au contenu tant que celui-ci n'a pas été chargé dans un article brouillon, où il reçoit une URL différente (désormais accessible publiquement)
</Note>

<Note>
  Chaque blob ne doit être utilisé que dans **un seul** article. Si vous souhaitez qu'un élément de contenu soit répété dans plusieurs articles, vous devez charger à nouveau le contenu dans des blobs différents.
</Note>

### Charger le contenu dans les blobs

Il existe plusieurs façons de charger votre contenu vers ces URL.

#### Via Postman

* Créez une requête `PUT` avec l'URL générée par l'appel à `CreateUploadUrls` en ajoutant `comp: blob` et `x-ms-blob-type: blockblob` comme en-têtes :
  <img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy-v2/tutorials/publish-ugc-postman-public-ugc-example.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=ec80f04739aa449009946c6f34bc3223" alt="Exemple de publication dans Postman" width="1058" height="634" data-path="images/playfab/economy-monetization/economy-v2/tutorials/publish-ugc-postman-public-ugc-example.png" />

* Vous pouvez ensuite charger le fichier en sélectionnant *binary* comme type de corps :
  <img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy-v2/tutorials/publish-ugc-postman-upload-binary.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=426a8a5b3178b8053ae0063a1f5d6dd0" alt="Chargement binaire dans Postman" width="1010" height="265" data-path="images/playfab/economy-monetization/economy-v2/tutorials/publish-ugc-postman-upload-binary.png" />

#### Via AzCopy

* Une autre option consiste à utiliser l'outil AzCopy. Vous pouvez télécharger l'outil et [bien démarrer avec AzCopy](https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azcopy-v10) ici.
* Dans le terminal de votre choix, appelez azcopy avec les paramètres suivants :

  ```powershell theme={null}
  [relative path to azcopy.exe] copy [relative path to local content] [Url + '?' + Token]
  ```

### Créer l'UGC brouillon

* Maintenant que les fichiers et images ont été chargés avec succès, vous pouvez appeler `CreateDraftItem`, en transmettant les URL du contenu et des images, pour créer votre premier article dans le catalogue brouillon :

  ```JSON theme={null}
  {
    "Item": {
      "Type": "ugc",
      "Title": {
        "NEUTRAL": "Hello World!"
      },
      "Description": {
        "NEUTRAL": "My first UGC item (with content!)"
      },
      "ContentType": "Game Item",
      "IsHidden": false,
      "Contents": [
        {
          "Id": "[Content ID]",
          "Url": "[Content Url]"
        }
      ],
      "Images": [
        {
          "Id": "[Image ID]",
          "Type": "Thumbnail",
          "Url": "[Image Url]"
        }
      ]
    },
    "Publish": false,
    "AllowOverwrite": false
  }
  ```

<Note>
  Lors du chargement d'images dans des articles, chaque image doit être classée à l'aide d'un paramètre `Type`. Il peut s'agir de « Thumbnail » ou de « Screenshot ». Chaque article est limité à une seule image de type « Thumbnail » et, par défaut, les [recherches](/fr/services/playfab/economy-monetization/economy-v2/catalog/search#select) renvoient l'image « Thumbnail » (si elle existe).
</Note>

* La réponse renvoie les métadonnées que vous avez transmises, ainsi qu'un ID d'article :

  ```json theme={null}
  {
  "code": 200,
  "status": "OK",
  "data": {
      "Item": {
          ...
          "Id": "e5427509-1b72-4ee1-9e6c-03fc055a94f3",
          ...
      }
    }
  }
  ```

* L'article UGC brouillon existe désormais dans le catalogue brouillon ! Tant que l'article UGC n'est pas publié, il n'est pas possible de le rechercher dans le catalogue public. Vous pouvez trouver cet article UGC en appelant l'une des API suivantes :

  * `GetDraftItem`, en transmettant l'ID d'article obtenu à partir de la réponse de `CreateDraftItem`
  * `GetDraftItems`, en transmettant une liste d'ID d'articles connus
  * `GetEntityDraftItems`, en transmettant un ID d'entité et/ou le ContinuationToken de chaque réponse précédente pour parcourir la liste des articles brouillons page par page

<Note>
  Si vous souhaitez publier immédiatement, vous pouvez définir le champ `Publish` sur true
</Note>

* Lorsque vous êtes prêt à publier l'article UGC, appelez `PublishDraftItem` en transmettant l'ID d'article (obtenu à partir de la réponse de `CreateDraftItem`).
* Si votre article UGC contient plusieurs fichiers particulièrement volumineux, la publication de l'article peut prendre un certain temps, et lorsque de nombreux autres joueurs chargent du contenu simultanément, ce processus peut prendre encore plus de temps. Vous pouvez vérifier l'état de la publication en appelant `GetItemPublishStatus` et en transmettant l'ID d'article (obtenu à partir de la réponse de `CreateDraftItem`). Plusieurs états sont possibles :
  * `Succeeded` : l'article UGC a été publié avec succès
  * `Pending` : l'article UGC est toujours en cours de publication
  * `Failed` : la publication de l'article UGC a échoué et celui-ci ne sera pas publié tant que le contenu incriminé n'aura pas été modifié
  * `Unknown` : il s'agit de l'état par défaut, renvoyé avant l'appel à `PublishDraftItem` sur l'article UGC
  * `Canceled` : une erreur interne s'est produite ; veuillez réessayer de publier l'article (si cet état s'affiche plusieurs fois, contactez l'équipe d'ingénierie PlayFab)
* Une fois l'article UGC publié avec succès, vous pouvez le rechercher au moyen de `SearchItems` ou le récupérer directement au moyen de `GetItem` si vous disposez de l'ID d'article.
* Vous pouvez apporter des modifications à l'article UGC avant ou après la publication en procédant comme suit :
  * Appelez `GetDraftItem` en transmettant l'ID d'article (obtenu à partir de la réponse de `CreateDraftItem`)
  * Copiez les données de l'article UGC (tout le contenu du champ `data`)
  * Appelez `UpdateDraftItem` en transmettant les données modifiées de l'article UGC
  * Si vous souhaitez mettre à jour l'un des fichiers ou l'une des images, vous devez créer un autre blob en appelant à nouveau `CreateUploadUrls`
  * Republiez l'article UGC en appelant `PublishDraftItem`

## Via Game Manager

Dans cette section, nous allons créer un article UGC entièrement dans Game Manager, sans aucun code !

### Créer l'article de catalogue brouillon

* Accédez à la page UGC en sélectionnant **Economy** > **Catalog (v2)**.

* Sélectionnez **New Item**.

* Renseignez les métadonnées appropriées pour votre article UGC :

  | Nom du champ | Valeur |
  | - | - |
  | Entity type | title\_player\_account |
  | Entity ID | \[votre ID de joueur] |
  | Content type | Game Item |
  | Start date | \[n'importe quelle date passée] |
  | Title | `{ "NEUTRAL": "Hello World!" }` |
  | Description | `{ "NEUTRAL": "My first UGC item (with content!)" }` |

  <img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy-v2/tutorials/publish-ugc-new-ugc-item.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=69782b702c8090b62e6baae411bb684b" alt="Nouvel article UGC" width="1200" height="616" data-path="images/playfab/economy-monetization/economy-v2/tutorials/publish-ugc-new-ugc-item.png" />

* Dans les sections **Files** et **Images**, chargez le contenu approprié en sélectionnant le bouton **Upload**.

* Sélectionnez **Save and publish**.

* L'article UGC est désormais automatiquement créé en tant qu'article brouillon et publié dans le catalogue public ; vous pouvez maintenant trouver cet article dans le tableau avec les autres articles UGC publiés.

<Note>
  Il n'existe actuellement aucun moyen de vérifier l'article brouillon ou l'état de publication dans Game Manager ; cette opération n'est possible qu'au moyen des API
</Note>

* Si vous souhaitez apporter des modifications à l'article UGC publié, procédez comme suit :
  * Sélectionnez l'article UGC publié dans le tableau
  * Effectuez les modifications appropriées
  * Sélectionnez **Save and publish**

## Résolution des problèmes

* Invalid Request - The content type 'Game Item' isn't supported.
  * Si des types de contenu ont été spécifiés dans la configuration de votre titre (au moyen de `GetCatalogConfig`/`UpdateCatalogConfig` ou dans Game Manager sous l'onglet **Economy Settings**), vous devez ajouter **Game Item** à la liste ou remplacer le type de contenu par un type déjà pris en charge par votre titre
* Invalid Request - This title isn't configured to use this service.
  * L'UGC est actuellement désactivé pour votre titre ; vous pouvez l'activer en mettant à jour la configuration de votre titre (au moyen de `GetCatalogConfig`/`UpdateCatalogConfig`, dans Game Manager sous l'onglet **Economy Settings**, ou en accédant à l'onglet **Economy > Catalog (Preview)** et en sélectionnant **Enable**)

## Étapes suivantes

Vous disposez maintenant d'articles UGC publiés dans votre catalogue ! Vous pouvez utiliser `SearchItems` pour créer des expériences de découverte de contenu pour vos joueurs.

<Note>
  \[!div class="nextstepaction"] [Rechercher >](/fr/services/playfab/economy-monetization/economy-v2/catalog/search)
</Note>


## Related topics

- [Démarrage rapide du contenu généré par l'utilisateur (UGC)](/fr/services/playfab/economy-monetization/economy-v2/ugc/quickstart.md)
- [Documentation PlayFab UGC](/fr/services/playfab/economy-monetization/economy-v2/ugc/index.md)
- [PlayFab User Generated Content](/fr/services/playfab/economy-monetization/economy-v2/ugc/overview.md)
- [XR-018 : Contenu généré par l'utilisateur](/fr/publishing/certification/xr/xr-018.md)
- [Modérer votre contenu généré par l'utilisateur](/fr/services/playfab/economy-monetization/economy-v2/ugc/moderation.md)
