Share via


Tutorial: Verwenden von CloudScript-Kontextmodellen

PlayFab führt Skripts über verschiedene Mechanismen aus, darunter die Ausführung über APIs, geplante Aufgaben, PlayStream-Ereignisse und wenn ein Spieler Segmente ein- und verlässt. In vielen Fällen ist der Kontext, in dem das Skript ausgeführt wird, für die Ausführung wichtig. Ein Beispiel hierfür ist die Kenntnis der Spieler-ID des Spielers, in dessen Auftrag das Skript ausgeführt wird. Der Kontext, in dem Ihr Skript ausgeführt wird, bestimmt das verfügbare Datenmodell und stellt kontextspezifische Daten bereit, die in Ihrem Skript verwendet werden.

In diesem Lernprogramm lernen Sie Folgendes:

  • Verwenden des freigegebenen Kontextmodells
  • Verwenden Sie das Kontextmodell bei der Ausführung über die ExecuteFunction-API.
  • Verwenden Sie das Kontextmodell bei der Ausführung über geplante Aufgabe.
  • Verwenden Sie das Kontextmodell bei der Ausführung im Kontext eines Players.
  • Verwenden Sie das Kontextmodell bei der Ausführung im Kontext einer Entität.

Verwenden des Kontextmodells für die freigegebene Titelauthentifizierung

Unabhängig von der Methode zum Ausführen eines Skripts wird der Titelauthentifizierungskontext immer bereitgestellt. Dies umfasst die Titel-ID und das Entitätstoken (weitere Details finden Sie unter GetEntityToken ), die zum Ausführen des Skripts verwendet werden. Wenn Sie diesen Kontext kennen, können Sie mithilfe der Server-APIs zusätzliche API-Aufrufe in Ihrem Skript in PlayFab ausführen.

// Shared models
public class TitleAuthenticationContext
{
    public string Id { get; set; }
    public string EntityToken { get; set; }
}

Verwenden des Kontextmodells bei der Ausführung über die ExecuteFunction-API

Wenn Sie die ExecuteFunction-API zum Ausführen eines Skripts verwenden, enthält der bereitgestellte Kontext die folgenden Informationen:

  • Das Entitätsprofil des Aufrufers
  • Der Titelauthentifizierungskontext
  • Ein boolescher Wert, der angibt, ob ein PlayStream-Ereignis als Teil der ausgeführten Funktion gesendet wird.
  • Die Funktionsargumente, die beim Aufrufen des Skripts verwendet werden
// 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>
{
}

Verwenden des Kontextmodells bei der Ausführung über geplante Aufgabe

Wenn Sie Geplante Aufgaben zum Ausführen eines Skripts planen, enthält der bereitgestellte Kontext die folgenden Informationen:

  • Die Namens-ID des geplanten Vorgangs
  • Der Ereignisverlauf, der einen Stapel von PlayStream-Ereignissen enthält
  • Der Titel Authentifizierungskontext
  • Ein boolescher Wert, der angibt, ob ein PlayStream-Ereignis als Teil der ausgeführten Funktion gesendet wird.
  • Das functions-Argument, das beim Aufrufen des Skripts verwendet wird
// 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>
{
}

Verwenden des Kontextmodells bei der Ausführung im Kontext eines Players

Beim Ausführen eines Skripts über Player PlayStream-Ereignisse, Eingeben oder Verlassen eines Segments oder als Teil einer segmentbasierten geplanten Aufgabe enthält der bereitgestellte Kontext die folgenden Informationen:

  • Das Spielerprofil
  • Boolescher Wert, der angibt, ob das Spielerprofil abgeschnitten ist.
    • Das Spielerprofil wird abgeschnitten, wenn es mehr als 2048 Bytes ist. In diesem Fall müssen Sie die Profil-APIs (Server-, Client- oder Entitäts-APIs) verwenden, um das vollständige Profil abzurufen.
  • Das PlayStream-Ereignis, das das Skript ausgelöst hat.
  • Ein boolescher Wert, der angibt, ob ein PlayStream-Ereignis als Teil der ausgeführten Funktion gesendet wird.
  • Die Funktionsargumente, die beim Aufrufen des Skripts verwendet werden
// 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>
{
}

Verwenden Sie das Kontextmodell bei der Ausführung über ein Entity PlayStream-Ereignis, das Eingeben oder Verlassen eines Entitätssegments oder als Teil einer auf Entitätssegmenten basierenden geplanten Aufgabe.

Beim Ausführen eines Skripts über Entity PlayStream-Ereignisse, Eingeben oder Verlassen eines Entitätssegments oder als Teil einer entitätssegmentbasierten geplanten Aufgabe enthält der bereitgestellte Kontext die folgenden Informationen:

  • Das Entitätsprofil
  • Das PlayStream-Ereignis, das das Skript ausgelöst hat.
  • Ein boolescher Wert, der angibt, ob ein PlayStream-Ereignis als Teil der ausgeführten Funktion gesendet wird.
// 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>
{
}

Notiz

Sie können den vollständigen CloudScript-Code mithilfe Azure Functions Hilfsklasse herunterladen.