> ## 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 do CloudScript do PlayFab usando Azure Functions

> Referência dos modelos de contexto do CloudScript do PlayFab expostos às Azure Functions quando os scripts são executados por meio de ExecuteFunction, tarefas agendadas, jogadores ou entidades.

# Tutorial: usar modelos de contexto do CloudScript

O PlayFab executa scripts por meio de vários mecanismos, incluindo a execução por APIs, por tarefas agendadas, por eventos do PlayStream e quando um jogador entra e sai de segmentos. Em muitos casos, o contexto em que o script é executado é importante para o modo como ele funciona. Um exemplo disso é saber a Player ID do jogador em nome de quem o script está sendo executado. O contexto em que seu script é executado determina o modelo de dados disponível e fornece dados específicos do contexto que são usados no seu script.

Neste tutorial, você aprenderá a:

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

>

<Note>
  * Usar o modelo de contexto compartilhado \* Usar o modelo de contexto ao executar por meio da API ExecuteFunction. \* Usar o modelo de contexto ao executar por meio de uma tarefa agendada. \* Usar o modelo de contexto ao executar no contexto de um jogador. \* Usar o modelo de contexto ao executar no contexto de uma entidade.
</Note>

## Usar o modelo de contexto compartilhado de autenticação do título

Independentemente do método de execução de um script, o contexto de autenticação do título é sempre fornecido. Ele inclui a Title ID e o token de entidade (consulte [GetEntityToken](https://learn.microsoft.com/en-us/rest/api/playfab/authentication/authentication/get-entity-token) para obter mais detalhes) usados para executar o script. Conhecer esse contexto permite fazer chamadas de API adicionais ao PlayFab no seu script usando as Server APIs.

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

## Usar o modelo de contexto ao executar por meio da API ExecuteFunction

Quando você usa a [API ExecuteFunction](https://learn.microsoft.com/en-us/rest/api/playfab/cloudscript/server-side-cloud-script/execute-function) para executar um script, o contexto fornecido inclui as seguintes informações:

* O perfil de entidade do chamador
* O contexto de autenticação do título
* Um booliano que indica se um evento do PlayStream é enviado como parte da função que está sendo executada
* Os argumentos da função usados ao chamar o 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 o modelo de contexto ao executar por meio de uma tarefa agendada

Quando você usa [tarefas agendadas](/pt-BR/services/playfab/data-analytics/acting-data/scheduled-tasks) para executar um script, o contexto fornecido inclui as seguintes informações:

* A Id do nome da tarefa agendada
* O histórico de eventos, que inclui uma pilha de eventos do PlayStream
* O contexto de autenticação do título
* Um booliano que indica se um evento do PlayStream é enviado como parte da função que está sendo executada
* O argumento da função usado ao chamar o 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 o modelo de contexto ao executar no contexto de um jogador

Ao executar um script por meio de eventos do PlayStream do jogador, ao entrar ou sair de um segmento ou como parte de uma tarefa agendada baseada em segmento, o contexto fornecido inclui as seguintes informações:

* O perfil do jogador
* Um booliano que indica se o perfil do jogador está truncado.
  * O perfil do jogador será truncado se tiver mais de 2048 bytes. Se isso ocorrer, você precisará usar as APIs de perfil (APIs de servidor, de cliente ou de entidade) para recuperar o perfil completo.
* O evento do PlayStream que disparou o script.
* Um booliano que indica se um evento do PlayStream é enviado como parte da função que está sendo executada
* Os argumentos da função usados ao chamar o 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 o modelo de contexto ao executar por meio de eventos do PlayStream de entidade, ao entrar ou sair de um segmento de entidade ou como parte de uma tarefa agendada baseada em segmento de entidade

Ao executar um script por meio de eventos do PlayStream de entidade, ao entrar ou sair de um segmento de entidade ou como parte de uma tarefa agendada baseada em segmento de entidade, o contexto fornecido inclui as seguintes informações:

* O perfil da entidade
* O evento do PlayStream que disparou o script.
* Um booliano que indica se um evento do PlayStream é enviado como parte da função que está sendo executada

```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>
  Você pode baixar a [classe auxiliar completa do CloudScript usando Azure Functions](https://github.com/PlayFab/PlayFab-Samples/blob/master/Samples/CSharp/AzureFunctions/CS2AFHelperClasses.cs).
</Note>


## Related topics

- [Guia de início rápido do CloudScript do PlayFab usando Azure Functions](/pt-BR/services/playfab/live-service-management/service-gateway/automation/cloudscript-af/quickstart.md)
- [CloudScript do PlayFab usando Azure Functions](/pt-BR/services/playfab/live-service-management/service-gateway/automation/cloudscript-af/index.md)
- [Depuração local do CloudScript usando Azure Functions](/pt-BR/services/playfab/live-service-management/service-gateway/automation/cloudscript-af/local-debugging-for-cloudscript-using-azure-functions.md)
- [Depurar Azure Functions do CloudScript no portal do Azure](/pt-BR/services/playfab/live-service-management/service-gateway/automation/cloudscript-af/debugging-with-CloudScript-AF-Azure.md)
- [API CloudScript do PlayFab](/pt-BR/services/playfab/api-references/rest/cloudscript/overview.md)
