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

# Modelos de contexto de CloudScript de PlayFab con Azure Functions

> Referencia de los modelos de contexto de CloudScript de PlayFab expuestos a Azure Functions cuando los scripts se ejecutan mediante ExecuteFunction, tareas programadas, jugadores o entidades.

# Tutorial: Uso de los modelos de contexto de CloudScript

PlayFab ejecuta scripts a través de varios mecanismos, incluida la ejecución mediante API, mediante tareas programadas, mediante eventos de PlayStream y cuando un jugador entra y sale de segmentos. En muchos casos, el contexto en el que se ejecuta el script es importante para su funcionamiento. Un ejemplo de esto es conocer el id. de jugador del jugador en cuyo nombre se ejecuta el script. El contexto en el que se ejecuta su script determina el modelo de datos disponible y proporciona datos específicos del contexto que se usan en su script.

En este tutorial aprenderá a:

<Note>
  \[!div class="checklist"]
</Note>

>

<Note>
  * Usar el modelo de contexto compartido \* Usar el modelo de contexto al ejecutar mediante la API ExecuteFunction. \* Usar el modelo de contexto al ejecutar mediante una tarea programada. \* Usar el modelo de contexto al ejecutar en el contexto de un jugador. \* Usar el modelo de contexto al ejecutar en el contexto de una entidad.
</Note>

## Usar el modelo de contexto compartido de autenticación del título

Independientemente del método de ejecución de un script, siempre se proporciona el contexto de autenticación del título.  Esto incluye el id. del título y el token de entidad (consulte [GetEntityToken](https://learn.microsoft.com/en-us/rest/api/playfab/authentication/authentication/get-entity-token) para obtener más detalles) usados para ejecutar el script.  Conocer este contexto le permite realizar llamadas API adicionales a PlayFab desde su script usando las API de servidor.

```C# theme={null}
// Shared models
public class TitleAuthenticationContext
{
    public string Id { get; set; }
    public string EntityToken { get; set; }
}
```

## Usar el modelo de contexto al ejecutar mediante la API ExecuteFunction

Cuando usa la [API ExecuteFunction](https://learn.microsoft.com/en-us/rest/api/playfab/cloudscript/server-side-cloud-script/execute-function) para ejecutar un script, el contexto que se proporciona incluye la siguiente información:

* El perfil de entidad del autor de la llamada
* El contexto de autenticación del título
* Un valor booleano que indica si se envía un evento de PlayStream como parte de la ejecución de la función
* Los argumentos de la función usados al llamar al script

```C# theme={null}
// Models via ExecuteFunction API
public class FunctionExecutionContext<T>
{
    public PlayFab.ProfilesModels.EntityProfileBody CallerEntityProfile { get; set; }
    public TitleAuthenticationContext TitleAuthenticationContext { get; set; }
    public bool? GeneratePlayStreamEvent { get; set; }
    public T FunctionArgument { get; set; }
}

public class FunctionExecutionContext : FunctionExecutionContext<object>
{
}
```

## Usar el modelo de contexto al ejecutar mediante una tarea programada

Cuando usa las [tareas programadas](/services/playfab/data-analytics/acting-data/scheduled-tasks) para ejecutar un script, el contexto que se proporciona incluye la siguiente información:

* El id. de nombre de la tarea programada
* El historial de eventos, que incluye una pila de eventos de PlayStream
* El contexto de autenticación del título
* Un valor booleano que indica si se envía un evento de PlayStream como parte de la ejecución de la función
* El argumento de la función usado al llamar al script

```C# theme={null}
// Models via Scheduled task
public class PlayStreamEventHistory
{
    public string ParentTriggerId { get; set; }
    public string ParentEventId { get; set; }
    public bool TriggeredEvents { get; set; }
}

public class ScheduledTaskFunctionExecutionContext<T>
{
    public PlayFab.CloudScriptModels.NameIdentifier ScheduledTaskNameId { get; set; }
    public Stack<PlayStreamEventHistory> EventHistory { get; set; }
    public TitleAuthenticationContext TitleAuthenticationContext { get; set; }
    public bool? GeneratePlayStreamEvent { get; set; }
    public T FunctionArgument { get; set; }
}

public class ScheduledTaskFunctionExecutionContext : ScheduledTaskFunctionExecutionContext<object>
{
}
```

## Usar el modelo de contexto al ejecutar en el contexto de un jugador

Al ejecutar un script mediante eventos de PlayStream de jugador, al entrar o salir de un segmento, o como parte de una tarea programada basada en segmentos, el contexto que se proporciona incluye la siguiente información:

* El perfil del jugador
* Un valor booleano que indica si el perfil del jugador está truncado.
  * El perfil del jugador se truncará si supera los 2048 bytes.  Si esto ocurre, deberá usar las API de perfil (ya sean las API de servidor, cliente o entidad) para recuperar el perfil completo.
* El evento de PlayStream que desencadenó el script.
* Un valor booleano que indica si se envía un evento de PlayStream como parte de la ejecución de la función
* Los argumentos de la función usados al llamar al script

```C# theme={null}
// Models via Player PlayStream event, entering or leaving a 
// player segment or as part of a player segment based scheduled task.
public class PlayerPlayStreamFunctionExecutionContext<T>
{
    public PlayFab.CloudScriptModels.PlayerProfileModel PlayerProfile { get; set; }
    public bool PlayerProfileTruncated { get; set; }
    public PlayFab.CloudScriptModels.PlayStreamEventEnvelopeModel PlayStreamEventEnvelope { get; set; }
    public TitleAuthenticationContext TitleAuthenticationContext { get; set; }
    public bool? GeneratePlayStreamEvent { get; set; }
    public T FunctionArgument { get; set; }
}

public class PlayerPlayStreamFunctionExecutionContext : PlayerPlayStreamFunctionExecutionContext<object>
{
}
```

## Usar el modelo de contexto al ejecutar mediante eventos de PlayStream de entidad, al entrar o salir de un segmento de entidades o como parte de una tarea programada basada en segmentos de entidades

Al ejecutar un script mediante eventos de PlayStream de entidad, al entrar o salir de un segmento de entidades, o como parte de una tarea programada basada en segmentos de entidades, el contexto que se proporciona incluye la siguiente información:

* El perfil de la entidad
* El evento de PlayStream que desencadenó el script.
* Un valor booleano que indica si se envía un evento de PlayStream como parte de la ejecución de la función

```C# theme={null}
// Models via Entity PlayStream event, entering or leaving an 
// entity segment or as part of an entity segment based scheduled task.
public class EventFullName
{
    public string Name { get; set; }
    public string Namespace { get; set; }
}

public class OriginInfo
{
    public string Id { get; set; }
    public DateTime? Timestamp { get; set; }
}

public class EntityPlayStreamEvent<T>
{
    public string SchemaVersion { get; set; }
    public EventFullName FullName { get; set; }
    public string Id { get; set; }
    public DateTime Timestamp { get; set; }
    public PlayFab.CloudScriptModels.EntityKey Entity { get; set; }
    public PlayFab.CloudScriptModels.EntityKey Originator { get; set; }
    public OriginInfo OriginInfo { get; set; }
    public T Payload { get; set; }
    public PlayFab.ProfilesModels.EntityLineage EntityLineage { get; set; }
}

public class EntityPlayStreamEvent : EntityPlayStreamEvent<object>
{
}

public class EntityPlayStreamFunctionExecutionContext<TPayload, TArg>
{
    public PlayFab.ProfilesModels.EntityProfileBody CallerEntityProfile { get; set; }
    public EntityPlayStreamEvent<TPayload> PlayStreamEvent { get; set; }
    public TitleAuthenticationContext TitleAuthenticationContext { get; set; }
    public bool? GeneratePlayStreamEvent { get; set; }
    public TArg FunctionArgument { get; set; }
}

public class EntityPlayStreamFunctionExecutionContext : EntityPlayStreamFunctionExecutionContext<object, object>
{
}
```

<Note>
  Puede descargar la [clase auxiliar completa de CloudScript con Azure Functions](https://github.com/PlayFab/PlayFab-Samples/blob/master/Samples/CSharp/AzureFunctions/CS2AFHelperClasses.cs).
</Note>


## Related topics

- [Guía de inicio rápido de CloudScript de PlayFab con Azure Functions](/es/services/playfab/live-service-management/service-gateway/automation/cloudscript-af/quickstart.md)
- [CloudScript de PlayFab con Azure Functions](/es/services/playfab/live-service-management/service-gateway/automation/cloudscript-af/index.md)
- [Depuración local de CloudScript con Azure Functions](/es/services/playfab/live-service-management/service-gateway/automation/cloudscript-af/local-debugging-for-cloudscript-using-azure-functions.md)
- [Depuración de CloudScript con Azure Functions en Azure Portal](/es/services/playfab/live-service-management/service-gateway/automation/cloudscript-af/debugging-with-CloudScript-AF-Azure.md)
- [Depuración de CloudScript con Azure Functions en Visual Studio](/es/services/playfab/live-service-management/service-gateway/automation/cloudscript-af/debugging-with-CloudScript-AF-VS.md)
