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

# Utilisation des actions CloudScript avec PlayStream

> Explique les données de contexte disponibles dans un gestionnaire CloudScript déclenché par une action PlayStream, et comment les utiliser pour piloter la logique serveur de PlayFab.

Lorsqu'un gestionnaire CloudScript est lancé à partir d'une action PlayStream, ce gestionnaire a accès à davantage de données sur la raison de son exécution, soit le *contexte*, que vous pouvez utiliser pour piloter votre logique côté serveur.

Ce tutoriel vous présente tout ce qui est disponible dans le contexte et la façon de l'utiliser dans vos gestionnaires CloudScript.

## Notions de base de CloudScript

La clé pour tirer le meilleur parti de CloudScript est de savoir comment travailler avec les entrées dont vous disposez, à savoir les arguments (args) et le contexte de votre gestionnaire.

Par exemple, voici l'exemple `helloWorld` du CloudScript de démarrage, chargé comme révision 1 dans tous les titres nouvellement créés (également disponible dans notre GitHub, [illustré ci-dessous](https://github.com/PlayFab/CloudScriptSamples/tree/master/BasicSample)).

```javascript theme={null}
// This is a CloudScript function.
// "args" is set to the value of the "FunctionParameter" parameter of the ExecuteCloudScript API.
// "context" contains additional information when the CloudScript function is called from a PlayStream action.
handlers.helloWorld = function (args, context) {

    // The pre-defined "currentPlayerId" variable is initialized to the PlayFab ID of the player logged-in on the game client.
    // CloudScript handles authenticating the player automatically.
    var message = "Hello " + currentPlayerId + "!";

    // You can use the "log" object to write out debugging statements. It has
    // three functions corresponding to logging level: debug, info, and error. These functions
    // take a message string and an optional object.
    log.info(message);
    var inputValue = null;
    if (args != null && args != undefined)
    {
        inputValue = args.inputValue;
    }
    log.debug("helloWorld:", { input: inputValue });

    // The value you return from a CloudScript function is passed back
    // to the game client in the ExecuteCloudScript API response, along with any log statements
    // and additional diagnostic information, such as any errors returned by API calls or external HTTP
    // requests. They are also included in the optional player_executed_cloudscript PlayStream event
    // generated by the function execution.
    return { messageValue: message };
}
```

Cet exemple illustre le cas d'utilisation courant de l'appel de CloudScript à partir d'un client, au moyen de [ExecuteCloudScript](xref:titleid.playfabapi.com.client.server-sidecloudscript.executecloudscript). Il vérifie la présence d'un argument transmis avec la clé `inputValue` et utilise la valeur de cette clé dans le texte renvoyé dans les renseignements du journal de débogage de l'exécution.

## Le paramètre d'entrée context

Cependant, il est également possible d'appeler un CloudScript à la suite d'un événement dans PlayStream, au moyen d'une règle (**Automation**->**Rules**), d'une action d'entrée ou de sortie de segment (**Players**->**Segments**) ou du service de tâches (**Automation**->**Tasks**).

Dans ce cas, le contexte transmis à la fonction fournit tous les renseignements dont vous aurez besoin pour effectuer l'action appropriée.

Pour en savoir plus sur le fonctionnement de base des événements PlayStream, consultez notre billet de blogue [Introducing PlayStream](https://blog.playfab.com/blog/introducing-playstream/), et pour obtenir la liste des types d'événements PlayStream et de leurs propriétés, consultez notre [référence de l'API PlayFab](/fr-CA/services/playfab/api-references).

Pour voir cette action, examinez le gestionnaire `handlePlayStreamEventAndProfile` du même exemple de CloudScript.

```javascript theme={null}
// This is a simple example of a function that is called from a
handlers.handlePlayStreamEventAndProfile = function (args, context) {

    // The event that triggered the action.
    // For a list of event types, see our PlayFab API documentation.
    var psEvent = context.playStreamEvent;

    // The profile data of the player associated with the event
    var profile = context.playerProfile;

    // Post data about the event to an external API
    var content = JSON.stringify({user: profile.PlayerId, event: psEvent.EventName});
    var response = http.request('https://httpbin.org/status/200', 'post', content, 'application/json', null, true);

    return { externalAPIResponse: response };
}
```

Dans le cas d'un appel CloudScript déclenché par PlayStream, le contexte contient 3 éléments qui peuvent être utilisés pour piloter la logique de votre gestionnaire faisant autorité côté serveur.

1. Il y a d'abord `playStreamEvent`, que vous pouvez voir dans l'exemple de code ci-dessus. `playStreamEvent` contient l'événement complet qui a déclenché le gestionnaire sous forme d'objet JSON, avec tous les paramètres présentés dans la [documentation des événements PlayStream](/fr-CA/services/playfab/api-references/events). Ainsi, par exemple, si vous configurez dans votre titre une règle qui appelle `handlePlayStreamEventAndProfile` sur tout `player_logged_in event`, `playStreamEvent.EventName` serait `player_logged_in`, etc. ([voici l'ensemble complet des paramètres de cet événement](/fr-CA/services/playfab/api-references/events/PlayerIdentity/player-logged-in)).

2. Ensuite, il y a `playerProfile`, également illustré dans l'exemple précédent. Il contient des renseignements sur le joueur qui a déclenché l'événement. Vous trouverez tous les détails des paramètres du profil ici, mais entre autres, il contient l'ensemble complet des statistiques du joueur dans votre titre ainsi que toutes les balises personnalisées que vous avez attribuées au joueur, afin que vous puissiez utiliser ces données pour prendre des décisions éclairées.

3. Le dernier élément du contexte est `triggeredByTask`. Contrairement aux deux premiers, qui sont définis lors de l'utilisation de règles et de déclencheurs d'entrée ou de sortie de segment, `triggeredByTask` ne s'applique que lorsque le gestionnaire s'exécute à la suite d'une tâche, qu'elle soit manuelle ou planifiée. Il ne contient que deux paramètres :

* **Name** : le nom unique que vous avez donné à votre tâche lors de sa création.

* **ID** : l'identificateur unique généré automatiquement par PlayFab pour votre tâche.

Pour une tâche exécutée sur un segment d'utilisateurs, vous aurez également `playerProfile`, mais vous n'aurez pas de `playStreamEvent`.

Et pour une tâche simplement exécutée sur votre jeu, mais *sans* segment, il n'y aura pas de `playerProfile`, puisque l'objectif est d'exécuter quelque chose de plus général, comme définir des données de titre pour un événement.

Ainsi, *name* est l'élément que vous voudrez utiliser dans le flux de code de votre gestionnaire pour déterminer l'action appropriée à effectuer.

## PlayStream et CloudScript

À bien des égards, les gestionnaires CloudScript déclenchés par des actions PlayStream offrent encore plus de fonctionnalités potentielles que ceux déclenchés directement par des appels à `ExecuteCloudScript`, puisqu'un riche ensemble de données est mis à disposition au moyen du contexte.

Cela vous permet de mettre à jour vos gestionnaires après le lancement avec *davantage* de logique utilisant des éléments de l'événement ou du profil du joueur que vous n'aviez pas prévus au départ, *sans* avoir à mettre à jour votre code client de quelque façon que ce soit.

De plus, nous continuerons d'enrichir le profil du joueur dans les futures mises à jour du service PlayFab, ce qui offrira encore *plus* d'options pour la logique côté serveur.


## Related topics

- [Using CloudScript actions with PlayStream](/services/playfab/data-analytics/acting-data/action-rules-using-cloudscript-actions-with-playstream.md)
- [Uso de acciones de CloudScript con PlayStream](/es/services/playfab/data-analytics/acting-data/action-rules-using-cloudscript-actions-with-playstream.md)
- [将 CloudScript 操作与 PlayStream 结合使用](/zh-CN/services/playfab/data-analytics/acting-data/action-rules-using-cloudscript-actions-with-playstream.md)
- [PlayStream での CloudScript アクションの使用](/ja-jp/services/playfab/data-analytics/acting-data/action-rules-using-cloudscript-actions-with-playstream.md)
- [Writing custom CloudScript](/services/playfab/live-service-management/service-gateway/automation/cloudscript/writing-custom-cloudscript.md)
