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

# Azure Functions コンテキスト モデルを使用した PlayFab CloudScript

> スクリプトが ExecuteFunction、スケジュールされたタスク、プレイヤー、またはエンティティを介して実行される場合に Azure Functions に公開される PlayFab CloudScript コンテキスト モデルのリファレンス。

# チュートリアル: CloudScript コンテキスト モデルの使用

PlayFab は、API 経由での実行、スケジュールされたタスク経由での実行、PlayStream イベント経由での実行、およびプレイヤーがセグメントに入退出するときなど、いくつかのメカニズムを通じてスクリプトを実行します。多くの場合、スクリプトが実行されるコンテキストは、その実行方法にとって重要です。たとえば、スクリプトが実行されるプレイヤーの Player ID を知ることなどです。スクリプトが実行されるコンテキストによって、利用可能なデータ モデルが決定され、スクリプト内で使用されるコンテキスト固有のデータが提供されます。

このチュートリアルでは、以下の方法を学びます:

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

>

<Note>
  * 共有コンテキスト モデルを使用する \* ExecuteFunction API 経由で実行するときにコンテキスト モデルを使用する \* スケジュールされたタスク経由で実行するときにコンテキスト モデルを使用する \* プレイヤーのコンテキストで実行するときにコンテキスト モデルを使用する \* エンティティのコンテキストで実行するときにコンテキスト モデルを使用する。
</Note>

## 共有 Title Authentication コンテキスト モデルの使用

スクリプトを実行するメソッドに関係なく、Title Authentication コンテキストは常に提供されます。これには、スクリプトの実行に使用される Title ID とエンティティ トークン (詳細は [GetEntityToken](https://learn.microsoft.com/en-us/rest/api/playfab/authentication/authentication/get-entity-token) を参照) が含まれます。このコンテキストを知っていれば、Server API を使用してスクリプト内で PlayFab に対して追加の API 呼び出しを行えます。

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

## ExecuteFunction API 経由で実行するときにコンテキスト モデルを使用する

[ExecuteFunction API](https://learn.microsoft.com/en-us/rest/api/playfab/cloudscript/server-side-cloud-script/execute-function) を使用してスクリプトを実行する場合、提供されるコンテキストには以下の情報が含まれます:

* 呼び出し元のエンティティ プロファイル
* Title Authentication コンテキスト
* 実行される関数の一部として PlayStream イベントが送信されるかどうかを示すブール値
* スクリプトの呼び出し時に使用される関数の引数

```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>
{
}
```

## スケジュールされたタスク経由で実行するときにコンテキスト モデルを使用する

[スケジュールされたタスク](/services/playfab/data-analytics/acting-data/scheduled-tasks) を使用してスクリプトを実行する場合、提供されるコンテキストには以下の情報が含まれます:

* スケジュールされたタスク名 Id
* PlayStream イベントのスタックを含むイベント履歴
* Title Authentication コンテキスト
* 実行される関数の一部として PlayStream イベントが送信されるかどうかを示すブール値
* スクリプトの呼び出し時に使用される関数の引数

```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>
{
}
```

## プレイヤーのコンテキストで実行するときにコンテキスト モデルを使用する

プレイヤー PlayStream イベント、セグメントの入退出、またはセグメント ベースのスケジュールされたタスクの一部としてスクリプトを実行する場合、提供されるコンテキストには以下の情報が含まれます:

* プレイヤー プロファイル
* プレイヤー プロファイルが切り詰められているかどうかを示すブール値。
  * プレイヤー プロファイルが 2048 バイトを超える場合は切り詰められます。この場合、完全なプロファイルを取得するには、プロファイル API (サーバー、クライアント、またはエンティティ API) を使用する必要があります。
* スクリプトをトリガーした PlayStream イベント。
* 実行される関数の一部として PlayStream イベントが送信されるかどうかを示すブール値
* スクリプトの呼び出し時に使用される関数の引数

```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>
{
}
```

## エンティティ PlayStream イベント、エンティティ セグメントの入退出、またはエンティティ セグメント ベースのスケジュールされたタスクの一部で実行するときにコンテキスト モデルを使用する

エンティティ PlayStream イベント、エンティティ セグメントの入退出、またはエンティティ セグメント ベースのスケジュールされたタスクの一部でスクリプトを実行する場合、提供されるコンテキストには以下の情報が含まれます:

* エンティティ プロファイル
* スクリプトをトリガーした PlayStream イベント。
* 実行される関数の一部として PlayStream イベントが送信されるかどうかを示すブール値

```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>
  完全な [Azure Functions ヘルパー クラスを使用した CloudScript](https://github.com/PlayFab/PlayFab-Samples/blob/master/Samples/CSharp/AzureFunctions/CS2AFHelperClasses.cs) をダウンロードできます。
</Note>


## Related topics

- [Azure Functions を利用した PlayFab CloudScript のクイックスタート ガイド](/ja-jp/services/playfab/live-service-management/service-gateway/automation/cloudscript-af/quickstart.md)
- [Azure Functions を使用した PlayFab CloudScript](/ja-jp/services/playfab/live-service-management/service-gateway/automation/cloudscript-af/index.md)
- [PFCloudScriptExecuteFunctionAsync](/ja-jp/services/playfab/api-references/c/pfcloudscript/functions/pfcloudscriptexecutefunctionasync.md)
- [PlayFab ライブ サービス管理ドキュメント](/ja-jp/services/playfab/live-service-management/index.md)
- [Azure Functions を使用した CloudScript のローカル デバッグ](/ja-jp/services/playfab/live-service-management/service-gateway/automation/cloudscript-af/local-debugging-for-cloudscript-using-azure-functions.md)
