> ## 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 les utilisateurs

> Publiez du contenu généré par les utilisateurs dans PlayFab Economy v2 avec Postman ou Game Manager, en utilisant CreateUploadUrls, Stockage Blob Azure et les API d'articles brouillons.

<Info>
  Economy v2 est maintenant en disponibilité générale. Pour obtenir du soutien et donner vos commentaires, rendez-vous sur le [forum PlayFab](https://community.playfab.com).
</Info>

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

## Exigences

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

## Au moyen des API

Dans cette section, nous utiliserons les [collections Postman](/fr-CA/services/playfab/sdks/postman/postman-quickstart) pour interagir avec les API UGC de PlayFab, mais vous pouvez utiliser n'importe laquelle de nos [SDK](/fr-CA/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é plutôt que des tickets de session pour appeler ces API. Vous pouvez apprendre à obtenir un jeton d'entité de titre dans le [démarrage rapide des collections Postman](/fr-CA/services/playfab/sdks/postman/postman-quickstart).

* Le système UGC utilise [Stockage Blob Azure](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 téléverser le contenu, nous devons d'abord appeler l'API `CreateUploadUrls`, en transmettant les noms et les tailles des fichiers (en octets) pour créer les nouveaux blobs. Par exemple, si je voulais téléverser 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 (retourné dans le champ « Url » de la réponse) est valide pendant 6 heures; après ce délai, vous ne pourrez plus téléverser de contenu dans le blob. Si vous n'avez téléversé aucun contenu dans le blob, celui-ci est nettoyé par notre service et vous devrez créer un nouveau blob en appelant de nouveau `CreateUploadUrls`. Cette URL ne permet pas non plus d'accéder au contenu tant qu'il n'a pas été téléversé dans un article brouillon, où il reçoit une URL différente (désormais accessible publiquement)
</Note>

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

### Téléverser du contenu dans les blobs

Il existe quelques façons différentes de téléverser votre contenu vers ces URL.

#### Au moyen de Postman

* Créez une requête `PUT` avec l'URL générée par l'appel à `CreateUploadUrls` et 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 téléverser 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="Téléversement binaire dans Postman" width="1010" height="265" data-path="images/playfab/economy-monetization/economy-v2/tutorials/publish-ugc-postman-upload-binary.png" />

#### Au moyen d'AzCopy

* Une autre option consiste à utiliser l'outil AzCopy. Vous pouvez télécharger l'outil et [commencer à utiliser 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 les images ont été téléversé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>
  Lorsque vous téléversez des images dans des articles, chaque image doit être classée avec un paramètre `Type`. Celui-ci peut être « Thumbnail » ou « Screenshot ». Chaque article est limité à une seule image de type « Thumbnail » et, par défaut, les [recherches](/fr-CA/services/playfab/economy-monetization/economy-v2/catalog/search#select) retournent l'image « Thumbnail » (si elle existe).
</Note>

* La réponse retourne 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 maintenant dans le catalogue brouillon! Tant que l'article UGC n'est pas publié, il ne peut pas être trouvé par une recherche 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 dans 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 vouliez publier immédiatement, vous pourriez définir le champ `Publish` à true
</Note>

* Lorsque vous êtes prêt à publier l'article UGC, appelez `PublishDraftItem`, en transmettant l'ID d'article (obtenu dans 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 téléversent du contenu en même temps, ce processus peut prendre encore plus de temps. Vous pouvez vérifier l'état de la publication en appelant `GetItemPublishStatus`, en transmettant l'ID d'article (obtenu dans la réponse de `CreateDraftItem`). Il existe quelques états 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 l'article ne sera pas publié tant que le contenu fautif n'aura pas été modifié
  * `Unknown` : il s'agit de l'état par défaut, qui est retourné avant l'appel à `PublishDraftItem` sur l'article UGC
  * `Canceled` : une erreur interne s'est produite; veuillez essayer de publier l'article de nouveau (si vous voyez cet état à plusieurs reprises, veuillez communiquer avec l'équipe d'ingénierie de PlayFab)
* Une fois l'article UGC publié avec succès, vous pouvez le rechercher au moyen de `SearchItems` ou l'obtenir directement au moyen de `GetItem` si vous avez 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 dans la réponse de `CreateDraftItem`)
  * Copiez les données de l'article UGC (tout ce qui se trouve dans le 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 devrez créer un autre blob en appelant de nouveau `CreateUploadUrls`
  * Republiez l'article UGC en appelant `PublishDraftItem`

## Au moyen de 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**.

* Remplissez 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**, téléversez le contenu approprié en sélectionnant le bouton **Upload**.

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

* L'article UGC sera maintenant automatiquement créé comme article brouillon et publié dans le catalogue public; vous pourrez 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 la publication dans Game Manager; cela ne peut se faire qu'au moyen des API
</Note>

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

## Dépannage

* 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 devrez ajouter **Game Item** à la liste, ou changer le type de contenu pour 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 avez maintenant des 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-CA/services/playfab/economy-monetization/economy-v2/catalog/search)
</Note>


## Related topics

- [Démarrage rapide du contenu généré par les utilisateurs (UGC)](/fr-CA/services/playfab/economy-monetization/economy-v2/ugc/quickstart.md)
- [Documentation de PlayFab UGC](/fr-CA/services/playfab/economy-monetization/economy-v2/ugc/index.md)
- [PlayFab User Generated Content](/fr-CA/services/playfab/economy-monetization/economy-v2/ugc/overview.md)
- [Modérer votre contenu généré par les utilisateurs](/fr-CA/services/playfab/economy-monetization/economy-v2/ugc/moderation.md)
- [Concepts de PlayFab](/fr-CA/services/playfab/get-started/concepts.md)
