> ## 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.

# Publicación de su primer contenido generado por el usuario

> Publique contenido generado por el usuario en PlayFab Economy v2 con Postman o Game Manager, mediante CreateUploadUrls, Azure Blob Storage y las API de artículos en borrador.

<Info>
  Economy v2 ya está disponible con carácter general. Para obtener soporte técnico y enviar comentarios, vaya al [foro de PlayFab](https://community.playfab.com).
</Info>

Este tutorial le guía por la publicación de UGC con contenido, tanto mediante las API como mediante la experiencia de usuario de Game Manager, profundizando en más detalles que el inicio rápido.

## Requisitos

* Una [cuenta de desarrollador de PlayFab](https://developer.playfab.com)
* Un título con UGC habilitado

## Mediante las API

En esta sección, usaremos las [colecciones de Postman](/services/playfab/sdks/postman/postman-quickstart) para interactuar con las API de UGC de PlayFab, pero puede usar cualquiera de nuestros [SDK](/services/playfab/sdks/playfab-sdk-intro).

### Creación de direcciones URL de blob

* El sistema de UGC funciona con el modelo de entidades de PlayFab, por lo que es necesario usar tokens de entidad en lugar de vales de sesión para llamar a estas API. Puede aprender a obtener un token de entidad de título en el [inicio rápido de las colecciones de Postman](/services/playfab/sdks/postman/postman-quickstart).

* El sistema de UGC usa [Azure Blob Storage](https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction) para almacenar todo el contenido (archivos e imágenes) asociado al UGC de su título. Para cargar el contenido, primero es necesario llamar a la API `CreateUploadUrls`, pasando los nombres de archivo y los tamaños (en bytes) para crear los nuevos blobs. Por ejemplo, si quisiera cargar un archivo de texto y una imagen PNG, pasaría lo siguiente en el cuerpo de la solicitud:

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

* La respuesta incluye un `Id` y una `Url` para cada elemento de contenido:

  ```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>
  Cada token de creación (devuelto en el campo "Url" de la respuesta) es válido durante 6 horas, después de las cuales no podrá cargar contenido en el blob. Si no ha cargado contenido en el blob, nuestro servicio lo limpiará y deberá crear un nuevo blob llamando de nuevo a `CreateUploadUrls`. Esta dirección URL tampoco permitirá el acceso al contenido hasta que se haya cargado en un artículo en borrador, donde recibirá una dirección URL diferente (ahora accesible públicamente)
</Note>

<Note>
  Cada blob solo debe usarse en **un** artículo. Si desea que un elemento de contenido se repita en varios artículos, debe volver a cargar el contenido en blobs diferentes.
</Note>

### Carga de contenido en los blobs

Hay varias formas de cargar el contenido en estas direcciones URL.

#### Mediante Postman

* Cree una solicitud `PUT` con la dirección URL generada al llamar a `CreateUploadUrls` y agregando `comp: blob` y `x-ms-blob-type: blockblob` como encabezados:
  <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="Ejemplo de publicación en Postman" width="1058" height="634" data-path="images/playfab/economy-monetization/economy-v2/tutorials/publish-ugc-postman-public-ugc-example.png" />

* Después, puede cargar el archivo seleccionando *binary* como tipo de Body:
  <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="Carga de binario en Postman" width="1010" height="265" data-path="images/playfab/economy-monetization/economy-v2/tutorials/publish-ugc-postman-upload-binary.png" />

#### Mediante AzCopy

* Otra opción es usar la herramienta AzCopy. Aquí puede descargar la herramienta y [empezar a trabajar con AzCopy](https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azcopy-v10).
* En el terminal de su elección, llame a azcopy con los parámetros siguientes:

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

### Creación del UGC en borrador

* Ahora que los archivos y las imágenes se han cargado correctamente, puede llamar a `CreateDraftItem`, pasando las direcciones URL del contenido y las imágenes, para crear su primer artículo en el catálogo de borradores:

  ```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>
  Al cargar imágenes en los artículos, cada imagen debe clasificarse con un parámetro `Type`. Puede ser "Thumbnail" o "Screenshot". Cada artículo está limitado a una sola imagen de tipo "Thumbnail" y, de forma predeterminada, las [búsquedas](/services/playfab/economy-monetization/economy-v2/catalog/search#select) devolverán la imagen "Thumbnail" (si existe) de manera predeterminada.
</Note>

* La respuesta devuelve los metadatos que pasó, junto con un identificador de artículo:

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

* El artículo de UGC en borrador ya existe en el catálogo de borradores. Mientras el artículo de UGC no esté publicado, no se podrá buscar en el catálogo público. Puede encontrar este artículo de UGC llamando a cualquiera de las siguientes API:

  * `GetDraftItem`, pasando el identificador de artículo obtenido de la respuesta de `CreateDraftItem`
  * `GetDraftItems`, pasando una lista de identificadores de artículo conocidos
  * `GetEntityDraftItems`, pasando un identificador de entidad o pasando el ContinuationToken de cada respuesta anterior para paginar por la lista de artículos en borrador

<Note>
  Si quisiera publicar inmediatamente, podría cambiar el campo `Publish` a true
</Note>

* Cuando esté listo para publicar el artículo de UGC, llame a `PublishDraftItem`, pasando el identificador de artículo (obtenido de la respuesta de `CreateDraftItem`).
* Si su artículo de UGC contiene varios archivos especialmente grandes, la publicación del artículo puede tardar un tiempo y, cuando hay muchos otros jugadores cargando contenido de forma simultánea, este proceso puede tardar aún más. Puede comprobar el estado de la publicación llamando a `GetItemPublishStatus`, pasando el identificador de artículo (obtenido de la respuesta de `CreateDraftItem`). Hay varios estados posibles:
  * `Succeeded`: el artículo de UGC se ha publicado correctamente
  * `Pending`: el artículo de UGC aún está en proceso de publicación
  * `Failed`: la publicación del artículo de UGC ha fallado y no se publicará hasta que se modifique el contenido infractor
  * `Unknown`: este es el estado predeterminado, y se devolverá antes de llamar a `PublishDraftItem` en el artículo de UGC
  * `Canceled`: se ha producido un error interno; intente publicar el artículo de nuevo (si ve este estado varias veces, póngase en contacto con el equipo de ingeniería de PlayFab)
* Una vez que el artículo de UGC se haya publicado correctamente, puede buscarlo mediante `SearchItems` u obtenerlo directamente mediante `GetItem` si tiene el identificador de artículo.
* Puede realizar cambios en el artículo de UGC antes o después de publicarlo haciendo lo siguiente:
  * Llame a `GetDraftItem`, pasando el identificador de artículo (obtenido de la respuesta de `CreateDraftItem`)
  * Copie los datos del artículo de UGC (todo el contenido del campo `data`)
  * Llame a `UpdateDraftItem`, pasando los datos modificados del artículo de UGC
  * Si desea actualizar alguno de los archivos o imágenes, deberá crear otro blob llamando de nuevo a `CreateUploadUrls`
  * Vuelva a publicar el artículo de UGC llamando a `PublishDraftItem`

## Mediante Game Manager

En esta sección, crearemos un artículo de UGC completamente dentro de la experiencia de Game Manager, ¡sin necesidad de código!

### Creación del artículo de catálogo en borrador

* Vaya a la página de UGC seleccionando **Economy** > **Catalog (v2)**.

* Seleccione **New Item**.

* Rellene los metadatos apropiados para su artículo de UGC:

  | Nombre del campo | Valor                                                |
  | ---------------- | ---------------------------------------------------- |
  | Entity type      | title\_player\_account                               |
  | Entity ID        | \[su identificador de jugador]                       |
  | Content type     | Game Item                                            |
  | Start date       | \[cualquier fecha en el pasado]                      |
  | 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="Nuevo artículo de UGC" width="1200" height="616" data-path="images/playfab/economy-monetization/economy-v2/tutorials/publish-ugc-new-ugc-item.png" />

* En las secciones **Files** e **Images**, cargue el contenido apropiado seleccionando el botón **Upload**.

* Seleccione **Save and publish**.

* El artículo de UGC se creará ahora automáticamente como artículo en borrador y se publicará en el catálogo público; ahora podrá encontrar este artículo en la tabla junto con otros artículos de UGC publicados.

<Note>
  Actualmente no hay forma de comprobar el artículo en borrador ni el estado de publicación desde Game Manager; esto solo puede hacerse mediante las API
</Note>

* Si desea realizar cambios en el artículo de UGC publicado, puede hacerlo de la siguiente manera:
  * Seleccione el artículo de UGC publicado en la tabla
  * Realice las modificaciones apropiadas
  * Seleccione **Save and publish**

## Solución de problemas

* Invalid Request - The content type 'Game Item' isn't supported.
  * Si se han especificado tipos de contenido en la configuración de su título (ya sea mediante `GetCatalogConfig`/`UpdateCatalogConfig` o en Game Manager, en la pestaña **Economy Settings**), deberá agregar **Game Item** a la lista o cambiar el tipo de contenido por uno que su título ya admita
* Invalid Request - This title isn't configured to use this service.
  * Su título tiene actualmente UGC deshabilitado; puede habilitarlo actualizando la configuración del título (mediante `GetCatalogConfig`/`UpdateCatalogConfig`, en Game Manager en la pestaña **Economy Settings**, o navegando a la pestaña **Economy > Catalog (Preview)** y seleccionando **Enable**)

## Pasos siguientes

Ya tiene artículos de UGC publicados en su catálogo. Puede usar `SearchItems` para crear experiencias de descubrimiento de contenido para sus jugadores.

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


## Related topics

- [Inicio rápido de contenido generado por el usuario (UGC)](/es/services/playfab/economy-monetization/economy-v2/ugc/quickstart.md)
- [Contenido generado por el usuario de PlayFab](/es/services/playfab/economy-monetization/economy-v2/ugc/overview.md)
- [Documentación de UGC de PlayFab](/es/services/playfab/economy-monetization/economy-v2/ugc/index.md)
- [Moderación de su contenido generado por el usuario](/es/services/playfab/economy-monetization/economy-v2/ugc/moderation.md)
- [XR-018 Contenido generado por el usuario](/es/publishing/certification/xr/xr-018.md)
