<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: PubNub [Français]</title>
    <description>The latest articles on Forem by PubNub [Français] (@pubnub-fr).</description>
    <link>https://forem.com/pubnub-fr</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F7936%2F706967be-2cdf-4007-aacb-f97d42631afc.jpg</url>
      <title>Forem: PubNub [Français]</title>
      <link>https://forem.com/pubnub-fr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/pubnub-fr"/>
    <language>en</language>
    <item>
      <title>Comment utiliser le contexte de l'application</title>
      <dc:creator>PubNub Developer Relations</dc:creator>
      <pubDate>Tue, 09 Jul 2024 07:04:35 +0000</pubDate>
      <link>https://forem.com/pubnub-fr/comment-utiliser-le-contexte-de-lapplication-36od</link>
      <guid>https://forem.com/pubnub-fr/comment-utiliser-le-contexte-de-lapplication-36od</guid>
      <description>&lt;p&gt;PubNub &lt;a href="https://www.pubnub.com/products/app-context/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;App Context&lt;/a&gt; simplifie le développement de fonctionnalités complexes en temps réel en fournissant un mécanisme de stockage sans serveur pour les informations sur les utilisateurs, les canaux et les membres. App Context déclenche des événements chaque fois que les données changent, ce qui permet à vos applications de se mettre à jour en temps réel et les données stockées peuvent être utilisées dans &lt;a href="https://www.pubnub.com/products/illuminate/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Illuminate&lt;/a&gt;, &lt;a href="https://www.pubnub.com/products/functions/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Functions&lt;/a&gt; et d'autres services PubNub pour prendre des décisions plus intelligentes. Vous pouvez également gérer ces données par le biais d'une interface intuitive, sans code, avec &lt;a href="https://www.pubnub.com/how-to/manage-users-and-channels-with-bizops-workspace/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;BizOps Workspace&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Qu'est-ce que l'App Context ?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.pubnub.com/docs/general/metadata/channel-metadata?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;App Con&lt;/a&gt; text (anciennement connu sous le nom d'Objects) vous permet de :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Donner un sens aux utilisateurs et aux canaux de votre application, ainsi qu'aux relations entre eux.&lt;/li&gt;
&lt;li&gt;  Stocker les métadonnées de toutes vos entités sur le serveur, ce qui simplifie la fourniture d'une source globale de vérité pour vos clients. Notez qu'un utilisateur ne doit pas nécessairement représenter un être humain, et qu'il est courant de stocker le statut de l'appareil dans l'objet utilisateur à la place.&lt;/li&gt;
&lt;li&gt;  Recevoir des événements instantanés en temps réel lorsque les valeurs d'un objet changent.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bien que n'importe quelle application puisse utiliser App Context, il est particulièrement populaire auprès des développeurs qui créent des &lt;a href="https://www.pubnub.com/solutions/chat/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;solutions de chat&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;App Context fournit un ensemble de champs suggérés pour vos &lt;a href="https://www.pubnub.com/docs/general/metadata/users-metadata?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;utilisateurs&lt;/a&gt; et vos &lt;a href="https://www.pubnub.com/docs/general/metadata/channel-metadata?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;canaux&lt;/a&gt;, ainsi que des champs suggérés pour les &lt;a href="https://www.pubnub.com/docs/general/metadata/membership-metadata?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;adhésions&lt;/a&gt; entre eux. La plupart de ces champs sont facultatifs, vous pouvez donc choisir les champs que vous remplissez, et vous pouvez également fournir vos propres champs personnalisés.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8Gm6KiDx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/5ICbXWgNTJNc5kXAAQ4qJI/40b24d228d9ed97e17e47b027469bcdf/app_context_diagram.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8Gm6KiDx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/5ICbXWgNTJNc5kXAAQ4qJI/40b24d228d9ed97e17e47b027469bcdf/app_context_diagram.png" title="How-to - BizOps Workspace Manage Users and Channels - Image 01" alt="Diagram showing user management, memberhip, channel management" width="800" height="411"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Cas d'utilisation d'App Context
&lt;/h2&gt;

&lt;p&gt;Comme nous l'avons mentionné, App Context est particulièrement populaire auprès des développeurs qui créent des solutions de chat, mais il peut être utilisé dans une grande variété de cas :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Chat :&lt;/strong&gt; Stockez les informations sur l'utilisateur (nom, photo de profil, statut "en vacances", titre du poste), les informations sur le canal (icône, description, audience), les rôles des utilisateurs et gardez une trace du dernier message lu par canal et par utilisateur.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Sports, médias et divertissements :&lt;/strong&gt; Vote et sondage en direct, jeu-questionnaire en direct, enchères en temps réel, incrustations CTA (appel à l'action) pour les marchandises ou les promotions.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Jeux :&lt;/strong&gt; Statistiques des joueurs en temps réel, y compris le niveau du joueur, les parties gagnées, les badges ; suivi et gestion des classements.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Plus :&lt;/strong&gt; Statut de l'utilisateur absent/actif, score de confiance de l'utilisateur pour la détection des fraudes, suivi de la localisation de l'utilisateur, états des appareils IoT tels que le niveau de la batterie ou la dernière lecture du capteur.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Comment activer l'App Context
&lt;/h2&gt;

&lt;p&gt;Le contexte applicatif peut être activé comme suit :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Connectez-vous au &lt;a href="https://admin.pubnub.com/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;portail d'administration&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; Cliquez sur l'onglet "Apps" sur le côté gauche du portail.&lt;/li&gt;
&lt;li&gt; Cliquez sur une application. Vous serez amené à la page des ensembles de clés pour cette application.&lt;/li&gt;
&lt;li&gt; Si vous ne l'avez pas encore fait, créez un nouvel ensemble de clés en cliquant sur le bouton "Créer un nouvel ensemble de clés". Vous accéderez à la page de configuration de cet ensemble de clés.&lt;/li&gt;
&lt;li&gt; Activez App Context en cliquant sur le curseur.&lt;/li&gt;
&lt;li&gt; Le paramètre " &lt;strong&gt;Bucket Region&lt;/strong&gt; " correspond à la région dans laquelle vos données sont stockées. Veuillez noter que la région ne peut pas être modifiée après avoir enregistré les changements apportés à l'ensemble de clés.&lt;/li&gt;
&lt;li&gt; Si les paramètres &lt;strong&gt;User Metadata Events&lt;/strong&gt; et &lt;strong&gt;Channel Metadata Events&lt;/strong&gt; sont activés, les événements relatifs à l'utilisateur et au canal sont déclenchés lorsque des données sont définies ou supprimées dans la base de données, comme nous le verrons plus loin.&lt;/li&gt;
&lt;li&gt; Lorsque le paramètre Événements relatifs aux &lt;strong&gt;membres&lt;/strong&gt; est activé, les événements relatifs aux membres sont déclenchés lorsque des membres sont ajoutés, mis à jour ou supprimés, comme nous le verrons plus loin.&lt;/li&gt;
&lt;li&gt; Les autres options n'entrent pas dans le cadre de cet article, mais vous pouvez vous référer à la &lt;a href="https://www.pubnub.com/docs/general/metadata/basics#configuration?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;documentation App Context&lt;/a&gt; pour plus d'informations.&lt;/li&gt;
&lt;li&gt; Cliquez sur &lt;strong&gt;Enregistrer les modifications&lt;/strong&gt; pour enregistrer ces changements.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Contexte applicatif de l'utilisateur
&lt;/h2&gt;

&lt;p&gt;Lorsqu'un nouvel utilisateur est enrôlé dans votre application, peut-être par le biais d'un fournisseur d'identité externe, vous devez avoir un moyen d'identifier cet utilisateur de manière unique pour PubNub ; c'est l'&lt;a href="https://www.pubnub.com/docs/general/setup/users-and-devices?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;ID utilisateur&lt;/a&gt; que le client de votre utilisateur utilisera pour initialiser le SDK PubNub. L'ID utilisateur PubNub peut ne pas être le même que l'ID que vous utilisez ailleurs dans votre solution pour identifier ce même utilisateur, nous recommandons donc de garder une trace de cela dans le champ 'External ID'.&lt;/p&gt;

&lt;p&gt;Le nom d'utilisateur, l'email et l'URL du profil ne nécessitent pas d'explication, mais l'avantage de les conserver dans App Context signifie que si un utilisateur modifie l'un de ces champs, les changements peuvent être propagés à l'échelle à tous les clients qui écoutent en utilisant les événements App Context, qui sont pris en charge par tous nos SDKs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Comment créer une représentation d'utilisateur dans App Context ?
&lt;/h3&gt;

&lt;p&gt;Il y a deux façons de créer un utilisateur dans App Context.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Les utilisateurs peuvent être créés et gérés en utilisant &lt;a href="https://www.pubnub.com/docs/bizops-workspace/basics?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;BizOps Workspace&lt;/a&gt;, qui se trouve dans le portail d'administration de PubNub. Cela ne nécessite aucun code, et le processus est expliqué avec des exemples dans l'article séparé : &lt;a href="https://www.pubnub.com/how-to/manage-users-and-channels-with-bizops-workspace/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Comment gérer les utilisateurs et les canaux avec BizOps Workspace&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; Des API sont exposées à travers chacun de nos SDK pour créer des utilisateurs. Si vous utilisez notre SDK &lt;a href="https://www.pubnub.com/docs/chat/chat-sdk/overview?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;de&lt;/a&gt; chat, ce SDK gère le contexte de l'application pour vous dans les coulisses ; par exemple, la méthode&lt;a href="https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/create?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;" createUser()&lt;/a&gt;" du SDK de chat appellera le &lt;a href="https://www.pubnub.com/docs/sdks/javascript/api-reference/objects#set-user-metadata?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;setUIDMetadata&lt;/a&gt; de JavaScript sous les couvertures pour créer un utilisateur. Des API dédiées sont fournies pour modifier les données de votre contexte d'application si vous utilisez un SDK autre que le SDK de chat. J'ai déjà mentionné l'API JavaScript &lt;a href="https://www.pubnub.com/docs/sdks/javascript/api-reference/objects#set-user-metadata?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;setUIDMetadata&lt;/a&gt;, mais il existe des équivalents pour toutes nos API, y compris &lt;a href="https://www.pubnub.com/docs/sdks/java/api-reference/objects?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Java&lt;/a&gt;, &lt;a href="https://www.pubnub.com/docs/sdks/swift/api-reference/objects?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Swift&lt;/a&gt;, &lt;a href="https://www.pubnub.com/docs/sdks/kotlin/api-reference/objects?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Kotlin&lt;/a&gt;, &lt;a href="https://www.pubnub.com/docs/sdks/python/api-reference/objects?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Python&lt;/a&gt;, &lt;a href="https://www.pubnub.com/docs/sdks/unity/api-reference/objects?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Unity&lt;/a&gt;, etc.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Contexte de l'application du canal
&lt;/h2&gt;

&lt;p&gt;PubNub crée automatiquement des canaux chaque fois qu'un utilisateur s'y abonne ou y publie, mais les canaux représentent probablement quelque chose de significatif pour votre application, par exemple, dans une application de chat, vous pouvez avoir un chat de groupe qui utilise un canal pour communiquer ou un événement en direct peut utiliser un canal dédié pour gérer les sondages.&lt;/p&gt;

&lt;p&gt;En spécifiant un contexte d'application pour un canal, vous stockez et mettez à jour toutes les métadonnées souhaitées relatives à ce canal, ces mises à jour étant éventuellement propagées à tous les clients intéressés. Vous pouvez donner un nom à un canal, par exemple "Chat entre l'utilisateur A et l'utilisateur B", et il se peut que le canal soit lié à un stockage de documents, qui pourrait être suivi dans un champ "URI" personnalisé.&lt;/p&gt;

&lt;h3&gt;
  
  
  Comment créer une représentation de canal dans App Context ?
&lt;/h3&gt;

&lt;p&gt;Comme pour les utilisateurs, il y a deux façons de créer un canal dans App Context.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Les canaux peuvent être créés et gérés en utilisant &lt;a href="https://www.pubnub.com/docs/bizops-workspace/basics?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;BizOps Workspace&lt;/a&gt;. Cela ne nécessite aucun code, et le processus est expliqué avec des exemples dans l'article séparé : &lt;a href="https://www.pubnub.com/how-to/manage-users-and-channels-with-bizops-workspace/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Comment gérer les utilisateurs et les canaux avec BizOps Workspace&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; Des API sont exposées à travers chacun de nos SDK pour créer des canaux. Si vous utilisez notre &lt;a href="https://www.pubnub.com/docs/chat/chat-sdk/overview?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;SDK de chat&lt;/a&gt;, celui-ci gère le contexte de l'application pour vous dans les coulisses ; par exemple, la famille de méthodes&lt;a href="https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/create?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;"Créer un&lt;/a&gt; canal" appellera JavaScript's &lt;a href="https://www.pubnub.com/docs/sdks/javascript/api-reference/objects#set-channel-metadata?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;setChannelMetadata()&lt;/a&gt; sous les couvertures. Si vous utilisez un SDK autre que le SDK de chat, des API dédiées sont fournies pour modifier vos données de contexte d'application, y compris &lt;a href="https://www.pubnub.com/docs/sdks/javascript/api-reference/objects#set-channel-metadata?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;JavaScript&lt;/a&gt;, &lt;a href="https://www.pubnub.com/docs/sdks/java/api-reference/objects?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Java&lt;/a&gt;, &lt;a href="https://www.pubnub.com/docs/sdks/swift/api-reference/objects?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Swift&lt;/a&gt;, &lt;a href="https://www.pubnub.com/docs/sdks/kotlin/api-reference/objects?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Kotlin&lt;/a&gt;, &lt;a href="https://www.pubnub.com/docs/sdks/python/api-reference/objects?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Python&lt;/a&gt;, &lt;a href="https://www.pubnub.com/docs/sdks/unity/api-reference/objects?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Unity&lt;/a&gt;, etc.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Contexte applicatif de l'adhésion
&lt;/h2&gt;

&lt;p&gt;Après avoir défini le contexte applicatif pour les utilisateurs et les canaux, nous pouvons maintenant définir la relation entre les deux en précisant si les utilisateurs sont &lt;a href="https://www.pubnub.com/docs/general/metadata/membership-metadata?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;"membres"&lt;/a&gt; d'un canal.&lt;/p&gt;

&lt;p&gt;Lorsqu'un utilisateur rejoint un canal, il peut recevoir des mises à jour sur tous les autres membres de ce même canal ; il peut être notifié lorsque des utilisateurs &lt;code&gt;rejoignent&lt;/code&gt; ou &lt;code&gt;quittent le&lt;/code&gt; canal, ainsi que lorsque le contexte applicatif de cet utilisateur est mis à jour (par exemple, lorsqu'il met à jour son nom).&lt;/p&gt;

&lt;p&gt;Il s'agit d*&lt;em&gt;'un mécanisme très puissant qui offre une grande valeur ajoutée&lt;/em&gt;*, en particulier pour les développeurs d'applications de chat. Si vous n'utilisiez pas App Context, vous devriez suivre vous-même chaque utilisateur, les canaux dont il est membre et notifier tous les autres membres du même canal lorsque l'utilisateur rejoint ou quitte le canal. Ce défi n'est pas linéaire, donc plus vous avez d'utilisateurs dans votre solution, plus il devient difficile pour vous d'essayer de gérer toutes ces informations de manière centralisée.&lt;/p&gt;

&lt;p&gt;En utilisant App Context, vos clients de chat reçoivent toutes les informations dont ils ont besoin pour maintenir leur état interne, et vous avez également un contrôle total sur ces données avec le PubNub &lt;a href="https://www.pubnub.com/docs/general/security/access-control?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Access Manager&lt;/a&gt; pour empêcher tout accès non autorisé.&lt;/p&gt;

&lt;h3&gt;
  
  
  Comment créer une adhésion ?
&lt;/h3&gt;

&lt;p&gt;Comme pour les utilisateurs et les canaux, il y a deux façons de créer une adhésion.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Les membres peuvent être créés et gérés en utilisant &lt;a href="https://www.pubnub.com/docs/bizops-workspace/basics?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;BizOps Workspace&lt;/a&gt; sans écrire de code. Veuillez consulter la section &lt;a href="https://www.pubnub.com/docs/bizops-workspace/channel-management#manage-membership?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Gérer les membres de&lt;/a&gt; notre documentation pour plus de détails.&lt;/li&gt;
&lt;li&gt; Des API sont exposées à travers chacun de nos SDK pour créer des canaux. Si vous utilisez notre &lt;a href="https://www.pubnub.com/docs/chat/chat-sdk/overview?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;SDK de chat&lt;/a&gt;, il gère le contexte de l'application pour vous dans les coulisses ; par exemple, la famille de méthodes&lt;a href="https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/create?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;"Créer un&lt;/a&gt; canal" appellera JavaScript's &lt;a href="https://www.pubnub.com/docs/sdks/javascript/api-reference/objects#set-channel-memberships?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;setMemberships&lt;/a&gt; sous les couvertures. Si vous utilisez un SDK autre que le SDK de chat, des API dédiées sont fournies pour modifier vos données de contexte d'application, y compris &lt;a href="https://www.pubnub.com/docs/sdks/javascript/api-reference/objects#set-channel-memberships?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;JavaScript&lt;/a&gt;, &lt;a href="https://www.pubnub.com/docs/sdks/java/api-reference/objects?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Java&lt;/a&gt;, &lt;a href="https://www.pubnub.com/docs/sdks/swift/api-reference/objects?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Swift&lt;/a&gt;, &lt;a href="https://www.pubnub.com/docs/sdks/kotlin/api-reference/objects?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Kotlin&lt;/a&gt;, &lt;a href="https://www.pubnub.com/docs/sdks/python/api-reference/objects?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Python&lt;/a&gt;, &lt;a href="https://www.pubnub.com/docs/sdks/unity/api-reference/objects?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Unity&lt;/a&gt;, etc.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Réception d'événements en temps réel lorsque le contexte applicatif change
&lt;/h2&gt;

&lt;p&gt;Lorsque les données du contexte d'application changent, votre application reçoit un événement qui vous informe en temps réel de ce qui a changé. Cela vous permet de créer des applications réactives sans avoir à interroger le serveur pour obtenir des mises à jour.&lt;/p&gt;

&lt;h3&gt;
  
  
  Réception des changements de contexte d'application à travers le SDK PubNub (à l'exception du SDK Chat)
&lt;/h3&gt;

&lt;p&gt;Tous les SDKs PubNub exposent des "Event Listeners", et c'est à travers ces listeners que vous pouvez écouter les &lt;code&gt;événements d'objets&lt;/code&gt;, qui sont déclenchés chaque fois que les données de l'App Context changent.&lt;/p&gt;

&lt;p&gt;Notez qu'il y a une légère nuance ici, car, au moment de la rédaction, certains de nos SDKs supportent un nouveau format pour les "event listeners", comme expliqué dans &lt;a href="https://www.pubnub.com/blog/updates-to-the-event-engine-and-event-listeners/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;ce blog à propos des mises à jour du moteur d'événements et des event listeners&lt;/a&gt;. Quel que soit le format de l'écouteur d'événement, le principe reste le même : votre application doit s'enregistrer pour recevoir les événements du contexte de l'application par l'intermédiaire d'un écouteur fourni par le SDK.&lt;/p&gt;

&lt;p&gt;Comme indiqué dans la &lt;a href="https://www.pubnub.com/docs/sdks/javascript/api-reference/publish-and-subscribe#add-listeners?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;documentation du SDK JavaScript&lt;/a&gt;, l'enregistrement pour les événements du contexte applicatif se présente comme suit :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;channel&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;pubnub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;channel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;channel_1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;subscription&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;channel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;subscription&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;subscription&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;onObjects&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;objectsEvent&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Objects event: &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;objectsEvent&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;La documentation décrivant comment s'enregistrer pour les événements de contexte d'application dans d'autres langages peut être trouvée dans les endroits suivants : &lt;a href="https://www.pubnub.com/docs/sdks/java/api-reference/publish-and-subscribe#add-listeners?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Java&lt;/a&gt;, &lt;a href="https://www.pubnub.com/docs/sdks/swift/api-reference/publish-and-subscribe#add-listeners?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Swift&lt;/a&gt;, &lt;a href="https://www.pubnub.com/docs/sdks/kotlin/api-reference/publish-and-subscribe#add-listeners?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Kotlin&lt;/a&gt;, &lt;a href="https://www.pubnub.com/docs/sdks/python/api-reference/publish-and-subscribe#add-listeners?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Python&lt;/a&gt; (Notez que Python appelle les événements "métadonnées", alors que les autres SDKs se réfèrent aux événements en tant qu'"objets"), &lt;a href="https://www.pubnub.com/docs/sdks/unity/api-reference/configuration#event-listeners?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Unity&lt;/a&gt;, etc.&lt;/p&gt;

&lt;p&gt;Pour un exemple pratique et une démonstration interactive, veuillez vous référer à l'article &lt;a href="https://www.pubnub.com/how-to/manage-users-and-channels-with-bizops-workspace/#h-7?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Comment gérer les utilisateurs et les canaux avec BizOps Workspace&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Recevoir des changements de contexte d'application à travers le PubNub Chat SDK
&lt;/h3&gt;

&lt;p&gt;Le PubNub Chat SDK exposera les événements de contexte d'application par le biais de la famille d'API &lt;a href="https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/membership#get-updates?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;streamUpdates()&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Quelques exemples, tirés de l'&lt;a href="https://github.com/PubNubDevelopers/Chat-SDK-Demo-Web" rel="noopener noreferrer"&gt;application de démonstration du SDK Chat&lt;/a&gt; pour le web :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;//  Detect changes to the current User&lt;/span&gt;
&lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;currentUser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;streamUpdates&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;updatedUser&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;updatedUser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nf"&gt;setName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;updatedUser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;updatedUser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profileUrl&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nf"&gt;setProfileUrl&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;updatedUser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;profileUrl&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;currentUser&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;//  Detect changes to an array of Channels&lt;/span&gt;
&lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;chat&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;privateGroups&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;Channel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;streamUpdatesOn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;privateGroups&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;channels&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;//  The array of channels, privateGroups, has been updated&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;privateGroups&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pour un exemple de travail basé sur notre exemple plus simple pour le SDK Chat, veuillez vous référer à l'article &lt;a href="https://www.pubnub.com/how-to/manage-users-and-channels-with-bizops-workspace/#h-10?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Comment gérer les utilisateurs et les canaux avec BizOps Workspace&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  App Context et PubNub Illuminate
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.pubnub.com/products/illuminate/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;PubNub Illuminate&lt;/a&gt; est un produit d'analyse et de prise de décision en temps réel qui peut être personnalisé en fonction du cas d'utilisation unique d'une organisation. Le produit est conçu pour les gestionnaires de produits et les analystes, leur permettant de faire ce qui suit :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Définir des mesures agrégées personnalisées en temps réel.&lt;/li&gt;
&lt;li&gt;  Configurer et déployer des règles de décision avec des conditions et des actions.&lt;/li&gt;
&lt;li&gt;  Visualiser immédiatement les mesures suivies, les actions exécutées et leurs résultats.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vous pouvez faire tout cela en temps réel sans détourner votre équipe d'ingénieurs de ses projets en cours.&lt;/p&gt;

&lt;p&gt;Une explication complète de ce qu'est PubNub Illuminte, et comment il peut vous fournir des informations immédiatement exploitables sur vos données, sort du cadre de cet article, mais nous vous invitons à vous référer à notre &lt;a href="https://www.pubnub.com/docs/illuminate/basics?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;documentation&lt;/a&gt; et à notre &lt;a href="https://www.pubnub.com/blog/real-time-decisioning-with-illuminate/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;aperçu du produit&lt;/a&gt; pour plus d'informations.&lt;/p&gt;

&lt;p&gt;En résumé : vous définissez les &lt;strong&gt;métriques&lt;/strong&gt; liées à votre application, c'est-à-dire les éléments que vous souhaitez mesurer. Par exemple, dans un scénario de suivi des actifs, il peut s'agir du nombre d'heures écoulées depuis la prise de commande. Lorsqu'une &lt;a href="https://www.pubnub.com/docs/illuminate/decisions/basics#conditions?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;&lt;strong&gt;condition&lt;/strong&gt;&lt;/a&gt; est remplie pour cette mesure, par exemple si le nombre d'heures écoulées depuis la commande dépasse une certaine valeur, vous pouvez prendre des &lt;strong&gt;mesures&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;L'&lt;a href="https://www.pubnub.com/docs/illuminate/decisions/basics#actions?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;action&lt;/a&gt; à entreprendre est flexible, mais trois des actions possibles sont liées au contexte de l'application :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZzqfRlop--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/A2XZHFCSuF3nUxDjLDFjX/9b018c14ac44df085c2ad40b40619602/illuminate_app_context.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZzqfRlop--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/A2XZHFCSuF3nUxDjLDFjX/9b018c14ac44df085c2ad40b40619602/illuminate_app_context.png" title="How-to - Use App Context - Image 02" alt="How-to - Use App Context - Image 02" width="800" height="232"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Mettre à jour l'utilisateur avec PubNub Illuminate
&lt;/h3&gt;

&lt;p&gt;Permet de définir des métadonnées utilisateur prédéfinies ou personnalisées. La capture d'écran ci-dessous montre que l'utilisateur avec l'ID 123 a son statut défini à la valeur statique "Nouveau statut", mais il est également possible de définir une valeur dynamique basée sur la &lt;strong&gt;condition&lt;/strong&gt; qui a déclenché l'&lt;strong&gt;action&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sxO8sTRv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/4Rx8xBy406xLFdGoA38Ll2/f7b62aa24fdba0df4cec6d035a8e5812/illuminate_app_context_user.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sxO8sTRv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/4Rx8xBy406xLFdGoA38Ll2/f7b62aa24fdba0df4cec6d035a8e5812/illuminate_app_context_user.png" title="How-to - Use App Context - Image 03" alt="How-to - Use App Context - Image 03" width="800" height="507"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Mise à jour du canal avec PubNub Illuminate
&lt;/h3&gt;

&lt;p&gt;Permet de définir des métadonnées prédéfinies ou personnalisées pour le canal. La capture d'écran ci-dessous montre que le canal avec l'ID 123 a son nom défini à la valeur statique 'New Name', mais il est également possible de définir une valeur dynamique basée sur la &lt;strong&gt;condition&lt;/strong&gt; qui a déclenché l'&lt;strong&gt;action&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ILHCobfC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/5bVUjl1DTF1IENrhLv6T9v/b88e265164dce7dd1f39ed5437467611/illuminate_app_context_channel.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ILHCobfC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/5bVUjl1DTF1IENrhLv6T9v/b88e265164dce7dd1f39ed5437467611/illuminate_app_context_channel.png" title="How-to - Use App Context - Image 04" alt="How-to - Use App Context - Image 04" width="800" height="504"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Mettre à jour les adhésions avec PubNub Illuminate
&lt;/h3&gt;

&lt;p&gt;Permet de définir des métadonnées d'adhésion prédéfinies ou personnalisées. La capture d'écran ci-dessous montre l'appartenance de l'ID utilisateur 123 au canal 123 dont l'état est défini sur la valeur statique "Nouvel état". Il est également possible de définir une valeur dynamique basée sur la &lt;strong&gt;condition&lt;/strong&gt; qui a déclenché l'&lt;strong&gt;action&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--P0jKJfDZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/ZfrPMbbrj55hsyGpihCC3/44b519ccedde12e574bd44835ce799a3/illuminate_app_context_membership.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P0jKJfDZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/ZfrPMbbrj55hsyGpihCC3/44b519ccedde12e574bd44835ce799a3/illuminate_app_context_membership.png" title="How-to - Use App Context - Image 05" alt="How-to - Use App Context - Image 05" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Contexte de l'application et fonctions PubNub
&lt;/h2&gt;

&lt;p&gt;PubNub fournit des fonctions pour capturer les événements qui se produisent sur la plateforme PubNub. Les fonctions vous permettent d'écrire du code ou de tirer parti des intégrations existantes pour transformer, réacheminer, augmenter, filtrer et même agréger des données. Veuillez consulter la &lt;a href="https://www.pubnub.com/docs/serverless/functions/overview?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;documentation sur les fonctions&lt;/a&gt; pour un aperçu plus complet des fonctions PubNub, mais cet article examinera comment les fonctions PubNub sont liées à l'App Context.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mise à jour de l'App Context à partir de PubNub Functions
&lt;/h3&gt;

&lt;p&gt;L'environnement dans lequel les fonctions s'exécutent a accès au &lt;a href="https://www.pubnub.com/docs/serverless/functions/functions-apis/pubnub-module?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;module PubNub&lt;/a&gt;; ce module a un accès complet à l'App Context sur votre clavier, et quelques exemples tirés de la documentation sont donnés ci-dessous. :&lt;/p&gt;

&lt;p&gt;Exemple d'&lt;a href="https://www.pubnub.com/docs/serverless/functions/functions-apis/pubnub-module#get-user-metadata?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;obtention des métadonnées du contexte applicatif de l'utilisateur (Get User App Context Metadata&lt;/a&gt;)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pubnub&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;pubnub&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;pubnub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;objects&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getUUIDMetadata&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;uuid&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;my-uuid&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;include&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;customFields&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ok&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Fetched UUID metadata successfully.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;abort&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Failed to fetch UUID metadata&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Exemple de &lt;a href="https://www.pubnub.com/docs/serverless/functions/functions-apis/pubnub-module#set-channel-metadata?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;définition des métadonnées du contexte applicatif d'un canal&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pubnub&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;pubnub&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;pubnub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;objects&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setChannelMetadata&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;channel&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;my-channel&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;channel-name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;What a great channel&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;custom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bar&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;include&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;customFields&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ok&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Set channel metadata successfully.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;abort&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Failed to set channel metadata.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pour un ensemble complet d'exemples de code, veuillez vous référer à la documentation du &lt;a href="https://www.pubnub.com/docs/serverless/functions/functions-apis/pubnub-module?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;module PubNub&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Déclenchement d'une fonction PubNub lors d'un changement de contexte applicatif
&lt;/h3&gt;

&lt;p&gt;Il existe de nombreux types d'événements qui peuvent déclencher une fonction, comme indiqué dans la &lt;a href="https://www.pubnub.com/docs/serverless/functions/overview#event-types?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;documentation sur les types d'événements&lt;/a&gt;. Ils permettent notamment de détecter l'envoi de messages et de signaux, de déclencher des fonctions après des événements de présence et d'exécuter des fonctions à un intervalle spécifié ou à la demande. Au moment de la rédaction de ce document, il &lt;strong&gt;n'est pas&lt;/strong&gt; possible d'exécuter des fonctions après des mises à jour du contexte d'application, mais si votre application en a besoin, veuillez contacter notre &lt;a href="https://support.pubnub.com/hc/en-us?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;équipe d'assistance&lt;/a&gt;, qui se fera un plaisir d'étudier vos cas d'utilisation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prochaines étapes
&lt;/h2&gt;

&lt;p&gt;Pour voir App Context en action, vous pouvez consulter notre &lt;a href="https://www.pubnub.com/demos/chat/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;démo Chat&lt;/a&gt; qui utilise App Context avec notre SDK Chat pour montrer ce à quoi une application de chat pourrait ressembler avec un stockage sans serveur. La démo Chat vous permet de définir les métadonnées de l'utilisateur et du canal et de voir ces changements se propager aux autres auditeurs et membres en temps réel.&lt;/p&gt;

&lt;p&gt;Consultez également notre série connexe en 3 parties sur l'espace de travail BizOps qui dépend de l'App Context et couvre comment : &lt;a href="https://www.pubnub.com/how-to/manage-users-and-channels-with-bizops-workspace/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Gérer les utilisateurs et les canaux&lt;/a&gt;, &lt;a href="https://www.pubnub.com/how-to/monitor-and-moderate-conversations-with-bizops-workspace/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;surveiller et modérer les&lt;/a&gt; conversations, et &lt;a href="https://www.pubnub.com/how-to/securely-moderate-chat-and-users/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;modérer le chat en toute sécurité&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Enfin, n'hésitez pas à contacter l'équipe DevRel à l'adresse &lt;a href="//mailto:devrel@pubnub.com"&gt;devrel@pubnub.com&lt;/a&gt; ou à contacter notre équipe de &lt;a href="https://support.pubnub.com/hc/en-us?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;support&lt;/a&gt; pour obtenir de l'aide sur n'importe quel aspect de votre développement PubNub.&lt;/p&gt;

&lt;h1&gt;
  
  
  Comment PubNub peut-il vous aider ?
&lt;/h1&gt;

&lt;p&gt;Cet article a été publié à l'origine sur &lt;a href="https://www.pubnub.com/how-to/use-app-context/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;PubNub.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notre plateforme aide les développeurs à construire, fournir et gérer l'interactivité en temps réel pour les applications web, les applications mobiles et les appareils IoT.&lt;/p&gt;

&lt;p&gt;La base de notre plateforme est le réseau de messagerie en temps réel le plus grand et le plus évolutif de l'industrie. Avec plus de 15 points de présence dans le monde, 800 millions d'utilisateurs actifs mensuels et une fiabilité de 99,999 %, vous n'aurez jamais à vous soucier des pannes, des limites de concurrence ou des problèmes de latence causés par les pics de trafic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Découvrez PubNub
&lt;/h2&gt;

&lt;p&gt;Découvrez le &lt;a href="https://www.pubnub.com/tour/introduction/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Live Tour&lt;/a&gt; pour comprendre les concepts essentiels de chaque application alimentée par PubNub en moins de 5 minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  S'installer
&lt;/h2&gt;

&lt;p&gt;Créez un &lt;a href="https://admin.pubnub.com/signup/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;compte PubNub&lt;/a&gt; pour un accès immédiat et gratuit aux clés PubNub.&lt;/p&gt;

&lt;h2&gt;
  
  
  Commencer
&lt;/h2&gt;

&lt;p&gt;La &lt;a href="https://www.pubnub.com/docs?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;documentation PubNub&lt;/a&gt; vous permettra de démarrer, quel que soit votre cas d'utilisation ou votre &lt;a href="https://www.pubnub.com/docs?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;SDK&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Notes de mise à jour de la documentation - juin 2024</title>
      <dc:creator>PubNub Developer Relations</dc:creator>
      <pubDate>Mon, 08 Jul 2024 13:01:31 +0000</pubDate>
      <link>https://forem.com/pubnub-fr/notes-de-mise-a-jour-de-la-documentation-juin-2024-2pfg</link>
      <guid>https://forem.com/pubnub-fr/notes-de-mise-a-jour-de-la-documentation-juin-2024-2pfg</guid>
      <description>&lt;p&gt;Cet article a été publié à l'origine sur &lt;a href="https://www.pubnub.com/docs/release-notes/2024/june?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;https://www.pubnub.com/docs/release-notes/2024/june&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bonjour à tous ! Nous avons quelques nouvelles mises à jour pour vous ce mois-ci.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Nous avons introduit un nouveau drapeau d'intégrité référentielle pour aider à garder vos données cohérentes.&lt;/li&gt;
&lt;li&gt;  Vous pouvez maintenant définir des limites de groupes de canaux directement à partir du portail d'administration.&lt;/li&gt;
&lt;li&gt;  Essayez d'importer des données d'Insights vers BizOps pour tester ses fonctionnalités.&lt;/li&gt;
&lt;li&gt;  De plus, vous remarquerez que l'aspect et la convivialité de la gestion de la présence ont été revus.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Par ailleurs, nous avons apporté un certain nombre d'améliorations mineures mais significatives à la documentation qui, nous l'espérons, répondra à certaines de vos questions ou dissipera les doutes que vous aviez lorsque vous travailliez avec PubNub.&lt;/p&gt;

&lt;p&gt;Bonne exploration et merci de faire partie de notre communauté !&lt;/p&gt;

&lt;h2&gt;
  
  
  Généralités 🛠️
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Champs personnalisés dans les payloads FCM
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: Amélioration&lt;/p&gt;

&lt;p&gt;Nous avons corrigé la documentation pour les &lt;a href="https://pubnub.com/docs/general/push/android#step-5-construct-the-push-payload" rel="noopener noreferrer"&gt;notifications push mobiles Android&lt;/a&gt; en ajoutant les paramètres PubNub personnalisés manquants que vous pouvez ajouter à votre payload de notification push mobile FCM : &lt;code&gt;pn_debug&lt;/code&gt;, &lt;code&gt;pn_exceptions&lt;/code&gt;, et &lt;code&gt;pn_dry_run&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Ils vous permettront de tester ou de déboguer les notifications et d'exclure certains appareils de la réception des notifications.&lt;/p&gt;

&lt;p&gt;Voici un exemple de charge utile FCM avec nos champs personnalisés :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;pn_fcm&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;notification&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;title&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;My Title&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;body&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Message sent at&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
 &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;pn_collapse_id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;collapse-id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;pn_exceptions&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;optional-excluded-device-token1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
 &lt;span class="p"&gt;]&lt;/span&gt;
 &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;pn_debug&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;pn_dry_run&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Channel group limits
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: Nouvelle fonctionnalité&lt;/p&gt;

&lt;p&gt;Le contrôleur de flux dans le portail d'administration dispose d'une nouvelle option configurable de &lt;a href="https://pubnub.com/docs/general/metadata/basics#configuration" rel="noopener noreferrer"&gt;limite de groupe de&lt;/a&gt; canaux pour les clients bénéficiant de &lt;a href="https://www.pubnub.com/pricing/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;plans tarifaires payants&lt;/a&gt;, qui vous permet de définir les limites du nombre maximum de canaux que les groupes de canaux d'un ensemble de clés peuvent avoir. Vous pouvez abaisser la limite par défaut de 1 000 canaux ou l'augmenter jusqu'à 2 000 canaux.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pIhkfMKU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/channel-group-limit-0dce418184343bd3e6e213b7f21f2038.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pIhkfMKU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/channel-group-limit-0dce418184343bd3e6e213b7f21f2038.png" alt="Channel group limits" width="800" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Événements de métadonnées de l'utilisateur dans le contexte de l'application
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: Amélioration&lt;/p&gt;

&lt;p&gt;Nous avons amélioré la documentation pour clarifier qu'avec l'option " &lt;strong&gt;User Metadata Events&lt;/strong&gt; " activée, toute modification d'une entité utilisateur&lt;code&gt;(définition&lt;/code&gt; et &lt;code&gt;suppression&lt;/code&gt;) entraîne l'envoi de notifications d'événements à toutes les associations de membres, donc à la fois à cet utilisateur et à tous les canaux dont il est membre. Se référer à la &lt;a href="https://pubnub.com/docs/general/metadata/basics#app-context-events" rel="noopener noreferrer"&gt;documentation&lt;/a&gt; pour plus de détails.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iSi8-HI4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/user-metadata-events-2774cded452142e6d79bdf1a92e95174.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iSi8-HI4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/user-metadata-events-2774cded452142e6d79bdf1a92e95174.png" alt="User metadata events" width="800" height="693"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Dépendance de configuration du contexte d'application
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: Amélioration&lt;/p&gt;

&lt;p&gt;Nous avons mis à jour la documentation sur les &lt;a href="https://pubnub.com/docs/general/metadata/basics#configuration" rel="noopener noreferrer"&gt;options de configuration du contexte applic&lt;/a&gt; atif afin d'inclure des informations sur une dépendance critique.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--u1z1QWAq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/get-all-metadata-bf21a99e67f554e65c818b7b71fb9011.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--u1z1QWAq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/get-all-metadata-bf21a99e67f554e65c818b7b71fb9011.png" alt="Get all user or channel metadata" width="800" height="624"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bien que les options &lt;strong&gt;Disallow Get All Channel Metadata&lt;/strong&gt; et &lt;strong&gt;Disallow Get All User Metadata&lt;/strong&gt; semblent assez explicites, la mise en garde est que ces options ne fonctionnent qu'avec un gestionnaire d'accès activé.&lt;/p&gt;

&lt;p&gt;En d'autres termes, sans le gestionnaire d'accès, ces options actives ne désactivent pas réellement l'obtention de métadonnées sur les utilisateurs ou les canaux d'une unité centrale. Parallèlement, lorsque vous activez le gestionnaire d'accès, restreignant ainsi par défaut l'accès à tous les objets d'un jeu de clés, vous pouvez facilement contourner les restrictions GET du gestionnaire d'accès pour les utilisateurs et les canaux en décochant ces deux options de configuration sans créer un schéma de permissions à granularité fine.&lt;/p&gt;

&lt;p&gt;L'interface utilisateur du portail d'administration reflétera bientôt cette dépendance.&lt;/p&gt;

&lt;h3&gt;
  
  
  Nouveau drapeau d'intégrité référentielle dans App Context
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: Nouvelle fonctionnalité&lt;/p&gt;

&lt;p&gt;Nous avons ajouté une nouvelle option " &lt;a href="https://pubnub.com/docs/general/metadata/basics#configuration" rel="noopener noreferrer"&gt;&lt;strong&gt;Enforce referential integrity for memberships&lt;/strong&gt;&lt;/a&gt; ", qui est activée par défaut lorsque vous activez App Context sur le jeu de clés de votre application dans le portail d'administration.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QjGUW3Kf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/referential-integrity-2288af8171ffc0c8a5c8b67d82106247.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QjGUW3Kf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/referential-integrity-2288af8171ffc0c8a5c8b67d82106247.png" alt="Referential integrity flag" width="800" height="624"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cette option garantit que vous ne pouvez définir une nouvelle adhésion que si l'ID de l'utilisateur et l'ID du canal pour lesquels vous avez créé l'adhésion existent tous les deux. Parallèlement, la suppression d'un utilisateur parent ou d'une entité de métadonnées de canal supprime automatiquement toutes les associations d'affiliation enfant pour l'entité supprimée. De cette façon, vous vous assurez qu'il n'y a pas d'objets d'appartenance dysfonctionnels ou orphelins sur votre ensemble de clés.&lt;/p&gt;

&lt;h2&gt;
  
  
  SDKs 📦
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Amélioration de la documentation Python
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: Amélioration&lt;/p&gt;

&lt;p&gt;Suite aux commentaires que nous avons reçus, nous avons étendu les informations sur l'utilisation et l'exécution des méthodes. Ainsi, chaque section Returns de la &lt;a href="https://pubnub.com/docs/sdks/python/api-reference/publish-and-subscribe" rel="noopener noreferrer"&gt;documentation du SDK P&lt;/a&gt; ython décrit désormais les champs de données renvoyés par chaque méthode. Elle explique également comment l'exécution des requêtes sync (&lt;code&gt;.sync()&lt;/code&gt;) et async (&lt;code&gt;.pn_async(callback)&lt;/code&gt;) influence les données renvoyées pour chaque méthode.&lt;/p&gt;

&lt;h3&gt;
  
  
  React SDK a été déprécié
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: Avis de dépréciation&lt;/p&gt;

&lt;p&gt;Comme nous n'avons pas développé activement le React SDK depuis un certain temps, nous avons décidé de déprécier officiellement sa &lt;a href="https://pubnub.com/docs/sdks/react" rel="noopener noreferrer"&gt;documentation&lt;/a&gt; et de la déplacer dans la section &lt;a href="https://pubnub.com/docs/sdks#call-for-contributions" rel="noopener noreferrer"&gt;Call For Contributions (appel à contribution&lt;/a&gt; ) de notre documentation.&lt;/p&gt;

&lt;p&gt;Si vous trouvez un bug dans le SDK React ou si vous voulez étendre ses fonctionnalités, n'hésitez pas à créer une pull request dans le &lt;a href="https://github.com/pubnub/react" rel="noopener noreferrer"&gt;repo&lt;/a&gt; et attendez notre feedback !&lt;/p&gt;

&lt;h2&gt;
  
  
  Fonctions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Exporter les logs de fonctions à travers Events &amp;amp; Actions
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: Nouvelle fonctionnalité&lt;/p&gt;

&lt;p&gt;Chaque fonction PubNub enregistre les logs dans le canal interne &lt;code&gt;blocks-output-*&lt;/code&gt;, comme &lt;code&gt;blocks-output-NSPiAuYKsWSxJl4yBn30&lt;/code&gt;, qui peut stocker jusqu'à 250 lignes de logs avant que de nouveaux logs ne les écrasent. Si vous ne voulez pas perdre la trace des anciens journaux, vous pouvez désormais utiliser Events &amp;amp; Actions pour &lt;a href="https://pubnub.com/docs/general/portal/functions#export-logs-through-events--actions" rel="noopener noreferrer"&gt;exporter ces journaux&lt;/a&gt; vers un service externe.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YdztgBWT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/functions-log-c9c6bfa2ae883d738837c6fee563167d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YdztgBWT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/functions-log-c9c6bfa2ae883d738837c6fee563167d.png" alt="Functions log" width="800" height="568"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Perspectives 📊
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Durée de l'utilisateur et métriques de l'appareil dans les documents de l'API REST
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: Amélioration&lt;/p&gt;

&lt;p&gt;Le&lt;a href="https://pubnub.com/docs/release-notes/2024/may#device-metrics-dashboard" rel="noopener noreferrer"&gt;mois dernier&lt;/a&gt;, nous avons introduit les métriques d'appareils dans le tableau de bord &lt;code&gt;Comportement de l'utilisateur&lt;/code&gt; dans PubNub Insights sur le portail d'administration. Ce mois-ci, nous avons mis à jour la &lt;a href="https://pubnub.com/docs/sdks/rest-api/introduction-16" rel="noopener noreferrer"&gt;documentation de l'API REST&lt;/a&gt; pour inclure à la fois la durée de l'utilisateur et les métriques de l'appareil, de sorte que vous pouvez appeler l'API PubNub Insights directement pour obtenir les métriques qui vous intéressent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Espace de travail BizOps 🏢
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Les 20 premiers utilisateurs/canaux
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: Nouvelle fonctionnalité&lt;/p&gt;

&lt;p&gt;Si vous n'utilisez pas App Context pour stocker et gérer les utilisateurs et les canaux, vous pouvez toujours tester les fonctionnalités connexes de BizOps Workspace en important des données de test.&lt;/p&gt;

&lt;p&gt;Si vous avez accès à PubNub Insights, vous pouvez y accéder en allant aux modules &lt;strong&gt;Gestion des utilisateurs&lt;/strong&gt; et &lt;strong&gt;Gestion des canaux&lt;/strong&gt; dans BizOps Workspace dans le portail d'administration et en cliquant sur le bouton &lt;strong&gt;Importer à partir d'Insights&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;En conséquence, vous importerez depuis le jeu de clés de votre application un maximum de 20 utilisateurs qui ont publié le plus grand nombre de messages au cours de la dernière journée (si aucun message n'a été envoyé hier, les utilisateurs seront importés sur la base des données de la veille).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--edam1-8B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/top-20-users-346c252e218d37df861ff5ac04538f48.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--edam1-8B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/top-20-users-346c252e218d37df861ff5ac04538f48.png" alt="Top 20 users" width="800" height="167"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Comme pour les utilisateurs, vous pouvez importer de l'ensemble de clés de votre application jusqu'à 20 canaux ayant publié le plus grand nombre de messages au cours de la dernière journée.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6mfK6c4r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/top-20-channels-53fad13cd8e1f9a7619aee7330b2fffa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6mfK6c4r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/top-20-channels-53fad13cd8e1f9a7619aee7330b2fffa.png" alt="Top 20 channels" width="800" height="165"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Utilisez ces données de test pour explorer ce que BizOps Workspace a à offrir.&lt;/p&gt;

&lt;h3&gt;
  
  
  L'interface utilisateur de la gestion de la présence revue et corrigée
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: Amélioration&lt;/p&gt;

&lt;p&gt;Nous avons récemment redessiné l'ensemble du module de &lt;a href="https://pubnub.com/docs/bizops-workspace/presence-management" rel="noopener noreferrer"&gt;gestion de la présence&lt;/a&gt; dans BizOps Workspace afin de simplifier l'assistant de création de règles, de changer les couleurs des badges pour des couleurs plus inclusives et d'ajouter un modèle de configuration " catch all " qui reflète la configuration par défaut " activer la présence sur tous les canaux " de la configuration de la présence sur l'ensemble de clés.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--K4-MWVm9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/presence-management-7799538afb99b2c891fc6d957737d819.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--K4-MWVm9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/presence-management-7799538afb99b2c891fc6d957737d819.png" alt="Presence Management" width="800" height="614"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nous espérons que vous apprécierez sa nouvelle apparence et sa nouvelle convivialité !&lt;/p&gt;

</description>
      <category>pubnub</category>
      <category>documentation</category>
      <category>releases</category>
      <category>releasenotes</category>
    </item>
    <item>
      <title>Notes de mise à jour de la documentation - mai 2024</title>
      <dc:creator>PubNub Developer Relations</dc:creator>
      <pubDate>Mon, 08 Jul 2024 11:27:43 +0000</pubDate>
      <link>https://forem.com/pubnub-fr/notes-de-mise-a-jour-de-la-documentation-mai-2024-1ekp</link>
      <guid>https://forem.com/pubnub-fr/notes-de-mise-a-jour-de-la-documentation-mai-2024-1ekp</guid>
      <description>&lt;p&gt;Cet article a été publié à l'origine sur &lt;a href="https://www.pubnub.com/docs/release-notes/2024/may?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;https://www.pubnub.com/docs/release-notes/2024/may&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bienvenue dans les notes de version de ce mois-ci ! PubNub vous apporte un ensemble de mises à jour conçues pour rationaliser votre travail et ajouter une touche de commodité.&lt;/p&gt;

&lt;p&gt;Que contient ce paquet ?&lt;/p&gt;

&lt;p&gt;Nous avons unifié la documentation sur le filtrage des données App Context, revu l'architecture de l'écouteur d'événements pour Python et Asyncio, et ajouté de nouveaux outils visant à vous aider à démarrer avec la modération sécurisée des chats.&lt;/p&gt;

&lt;p&gt;Sur le front du portail d'administration, nous avons amélioré notre jeu avec des métriques détaillées sur les appareils, amélioré la gestion des événements avec des options de mise en lot et d'enveloppement, et déployé de nouveaux graphiques à barres empilées et des fonctionnalités variables dans Illuminate.&lt;/p&gt;

&lt;p&gt;De plus, nos documents et notre site Web disposent désormais d'un nouveau moteur de recherche doté d'une intelligence artificielle pour vous aider à trouver exactement ce dont vous avez besoin.&lt;/p&gt;

&lt;p&gt;Plongez dans l'aventure et explorez les nouveautés !&lt;/p&gt;

&lt;h2&gt;
  
  
  Généralités 🛠️
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Info unifiée sur le filtrage des données App Context
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: Amélioration&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;: Sur la base des retours, nous avons revu et unifié les informations des différents SDKs sur le filtrage des données des utilisateurs, des canaux et des membres en utilisant l'API App Context de PubNub. En conséquence, nous avons créé un document sur le &lt;a href="https://pubnub.com/docs/general/metadata/filtering" rel="noopener noreferrer"&gt;filtrage du contexte applic&lt;/a&gt; atif (étayé par de nombreux exemples) qui sert de point d'entrée pour toutes les requêtes de filtrage de données.&lt;/p&gt;

&lt;p&gt;Apprenez :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Quelles données sur les utilisateurs, les canaux et les membres vous pouvez filtrer.&lt;/li&gt;
&lt;li&gt;  Quels opérateurs de filtrage utiliser.&lt;/li&gt;
&lt;li&gt;  Comment vous pouvez filtrer les données à l'aide d'exemples pratiques.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;   &lt;span class="nx"&gt;pubnub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;objects&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getAllChannelMetadata&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
       &lt;span class="na"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;["description"] LIKE "*support*"&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
   &lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  SDKs 📦
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Mise à jour de l'architecture des écouteurs d'événements pour Python et Asyncio
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: Nouvelle fonctionnalité&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;: La nouvelle architecture d'écoute d'événements pour les SDK &lt;a href="https://pubnub.com/docs/sdks/python/api-reference/publish-and-subscribe" rel="noopener noreferrer"&gt;Python&lt;/a&gt; et &lt;a href="https://pubnub.com/docs/sdks/asyncio/api-reference/publish-and-subscribe" rel="noopener noreferrer"&gt;Asyncio&lt;/a&gt; introduit des moyens plus restreints de gérer les abonnements et d'écouter les événements par rapport à l'objet monolithique PubNub précédent.&lt;/p&gt;

&lt;p&gt;Alors que l'objet PubNub sert toujours de portée globale et reste compatible avec le passé, la nouvelle architecture propose des objets "entités" tels que des canaux, des groupes de canaux, des métadonnées d'utilisateurs et des métadonnées de canaux qui renvoient des objets "Subscription" (abonnement).&lt;/p&gt;

&lt;p&gt;Ces abonnements permettent d'appliquer des méthodes de souscription/désabonnement et des méthodes d'&lt;code&gt;ajout/suppression&lt;/code&gt; &lt;code&gt;d'auditeurs&lt;/code&gt; spécifiques à des entités uniques, offrant un moyen plus souple et indépendant de gérer les événements en temps réel et réduisant la nécessité d'une gestion globale de l'état.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;entity&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;based&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;local&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;scoped&lt;/span&gt;
&lt;span class="nx"&gt;subscription&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;pubnub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;channel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;f&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;{channel}&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;subscription&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;with_presence&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;bool&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Chat 💬
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Exemple de modération sécurisée dans Chat SDK
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: Nouvelle fonctionnalité&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;: Notre équipe de chat a créé un &lt;a href="https://github.com/pubnub/js-chat/blob/master/samples/access-manager-api/README.md" rel="noopener noreferrer"&gt;service API Access Manager&lt;/a&gt; simple pour vous aider à comprendre le scénario de bout en bout pour sécuriser les applications Chat SDK avec Access Manager. Ce service simule un point de terminaison simple et inclut un exemple d'ensemble de permissions que vous pouvez utiliser pour configurer l'autorisation côté serveur pour vos applications Chat SDK avec Access Manager activé.&lt;/p&gt;

&lt;p&gt;Suivez l'ensemble du scénario de test en utilisant notre React Native Chat App (pour l'interaction avec les utilisateurs), Channel Monitor (pour la modération des utilisateurs, comme le muting et le bannissement), et Access Manager API (pour générer des jetons d'autorisation).&lt;/p&gt;

&lt;p&gt;Pour les étapes détaillées, consultez le blog &lt;a href="https://www.pubnub.com/how-to/securely-moderate-chat-and-users/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Comment modérer en toute sécurité le chat et les utilisateurs avec BizOps Workspace&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KI6SFqVa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/muted-user-b18b4534be183d6d207ceeff685e5b44.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KI6SFqVa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/muted-user-b18b4534be183d6d207ceeff685e5b44.png" alt="Muted user" width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Perspectives 📊
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Tableau de bord des mesures des appareils
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: Amélioration&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;: Nous avons étendu le tableau de bord &lt;code&gt;Comportement de l'utilisateur&lt;/code&gt; dans Insights pour inclure des &lt;a href="https://pubnub.com/docs/pubnub-insights/dashboards/user-behavior" rel="noopener noreferrer"&gt;métriques de type d'appareil&lt;/a&gt;. Cela vous permet de plonger en profondeur dans le comportement de vos utilisateurs par type d'appareil. Désormais, vous pouvez observer où les utilisateurs de votre application publient ou s'abonnent le plus souvent (iOS, Android et Windows) et vérifier le nombre d'utilisateurs uniques par type d'appareil.&lt;/p&gt;

&lt;p&gt;Cet aperçu peut vous aider à créer des fonctionnalités personnalisées par appareil et, ainsi, à améliorer l'expérience client.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aE1MRxwy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/device-type-1ba35d904878d48813e07a9f581193d5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aE1MRxwy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/device-type-1ba35d904878d48813e07a9f581193d5.png" alt="User behavior &amp;amp; devices" width="800" height="723"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Événements et actions ⚡
&lt;/h2&gt;

&lt;h3&gt;
  
  
  L'action Webhook prend désormais en charge la mise en lot
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: Amélioration&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;: La fonctionnalité de &lt;a href="https://pubnub.com/docs/serverless/events-and-actions/events#batching" rel="noopener noreferrer"&gt;mise en lot&lt;/a&gt; dans Events &amp;amp; Action vous permet de gérer un grand volume d'événements en les envoyant en une seule demande plutôt que d'envoyer chaque événement individuellement. Cette fonctionnalité est également disponible pour le type d'&lt;a href="https://pubnub.com/docs/serverless/events-and-actions/actions/create-webhook-action" rel="noopener noreferrer"&gt;action Webhook&lt;/a&gt; depuis le mois de mai.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UuXPtdsa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/batching-e3cf9a2f9881bf32f6c8a0782ac4efff.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UuXPtdsa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/batching-e3cf9a2f9881bf32f6c8a0782ac4efff.png" alt="Batching feature" width="726" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  (Non)enveloppant
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: Amélioration&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;: Vous pouvez maintenant envelopper le payload de chaque action dans une &lt;a href="https://pubnub.com/docs/serverless/events-and-actions/events#envelope" rel="noopener noreferrer"&gt;enveloppe&lt;/a&gt;, c'est-à-dire choisir si le schéma du payload doit contenir des métadonnées JSON détaillées sur les événements et les actions. Cela peut être utile dans les cas où vous voulez utiliser des métadonnées en dehors du payload, comme des informations sur le canal où le payload a été envoyé ou l'auditeur qui l'a déclenché.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---Op_HGbc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/envelope-a629b278f2f637155ddfe6486c3441b5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---Op_HGbc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/envelope-a629b278f2f637155ddfe6486c3441b5.png" alt="Envelope feature" width="678" height="190"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Illuminer 💡
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Diagrammes à barres empilées
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: Nouvelle fonctionnalité&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;: En plus des graphiques à barres et des graphiques linéaires, les tableaux de bord Illuminate proposent désormais un nouveau type de graphique &lt;a href="https://pubnub.com/docs/illuminate/dashboards/basics#settings" rel="noopener noreferrer"&gt;à barres empilées&lt;/a&gt; qui améliore la lisibilité des données lorsqu'il y a de nombreuses dimensions et valeurs sur un seul graphique.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Zem7lnII--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/stacked-bar-chart-1c8ca3660f7fcba4c54d4e6b0c60c757.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Zem7lnII--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/stacked-bar-chart-1c8ca3660f7fcba4c54d4e6b0c60c757.png" alt="Stacked bar chart" width="800" height="547"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Variables
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: Amélioration&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;: Lorsque vous créez des actions dans Decisions (en indiquant ce que vous voulez faire avec les métriques collectées), vous pouvez ajouter des &lt;a href="https://pubnub.com/docs/illuminate/decisions/basics#decision-structure" rel="noopener noreferrer"&gt;variables&lt;/a&gt; dans les tables de configuration des actions pour contrôler et modifier dynamiquement ce à quoi elles se réfèrent. Vous pouvez utiliser les variables de manière plus souple, soit en vous référant aux conditions prédéfinies (tapez &lt;code&gt;${)&lt;/code&gt; et choisissez dans la liste), soit en créant de nouvelles variables&lt;code&gt;(${variable}&lt;/code&gt;) au fur et à mesure. Les variables sont désormais disponibles pour la plupart des champs d'action, et non plus seulement dans la &lt;strong&gt;charge utile&lt;/strong&gt; ou le &lt;strong&gt;corps de&lt;/strong&gt; l'action.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1MD1SbGJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/variables-7d466ce2dfd4f14a521e2257ab92c582.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1MD1SbGJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/variables-7d466ce2dfd4f14a521e2257ab92c582.png" alt="Variables" width="800" height="498"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Champs de mappage de données améliorés
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: Amélioration&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;: Lorsque vous créez un objet d'affaires et définissez des mesures (les données que vous voulez suivre) ou des dimensions (pour segmenter ce que vous suivez), vous devez mapper les noms de champs aux champs réels dans votre charge utile pour permettre à Illuminate de savoir où ces données doivent être recherchées. Jusqu'à présent, vous deviez entrer manuellement le mappage exact du champ spécifique de la charge utile. Depuis le mois de mai, Illuminate propose des &lt;a href="https://pubnub.com/docs/illuminate/business-objects/basics#data-mapping" rel="noopener noreferrer"&gt;menus déroulants&lt;/a&gt; plus conviviaux pour localiser l'emplacement exact des données Publish et App Context.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ml0E_Zqm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/json-menu-5f7606df253bb033f38a900b97f66626.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ml0E_Zqm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pubnub.com/assets/images/json-menu-5f7606df253bb033f38a900b97f66626.png" alt="JSON menu" width="774" height="558"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Autres 🌟
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Nouvel assistant de recherche et d'IA
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: Nouvelle fonctionnalité&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;: Enfin, nous avons troqué la recherche Algolia dans nos documents pour la nouvelle expérience combinée de recherche et d'assistant IA afin de rendre l'aventure d'apprentissage de PubNub plus précise et interactive.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kWNcuv_i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://pubnub.com/assets/images/search-88e1601c53cfce296c5b54947b3b32f5.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kWNcuv_i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://pubnub.com/assets/images/search-88e1601c53cfce296c5b54947b3b32f5.gif" alt="Search and AI Assistant" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Il est temps d'améliorer votre jeu de codage et de vous faire des amis avec notre nouvel assistant IA et notre nouvelle fonction de recherche. Nous l'affinerons en fonction de vos commentaires, donc si quelque chose manque, nous nous assurerons de le mettre à jour. Bon codage ! 🚀&lt;/p&gt;

</description>
      <category>pubnub</category>
      <category>documentation</category>
      <category>releases</category>
      <category>releasenotes</category>
    </item>
    <item>
      <title>Vue d'ensemble des technologies de flux de données</title>
      <dc:creator>PubNub Developer Relations</dc:creator>
      <pubDate>Mon, 08 Jul 2024 10:02:10 +0000</pubDate>
      <link>https://forem.com/pubnub-fr/vue-densemble-des-technologies-de-flux-de-donnees-3m8k</link>
      <guid>https://forem.com/pubnub-fr/vue-densemble-des-technologies-de-flux-de-donnees-3m8k</guid>
      <description>&lt;p&gt;La capacité à traiter de gros volumes de données (big data) en temps réel est devenue cruciale pour de nombreuses organisations, et c'est là que les &lt;a href="https://www.pubnub.com/solutions/data-streaming/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;technologies de flux de données&lt;/a&gt; entrent en jeu. Ces technologies permettent de traiter de grandes quantités de données en temps réel ou presque dès qu'elles sont générées, ce qui permet aux entreprises d'obtenir des informations immédiates et de prendre des décisions fondées sur des données sensibles au facteur temps.&lt;/p&gt;

&lt;p&gt;Au cœur de ces technologies se trouve le concept de flux de données, également connu sous le nom de flux d'événements. Les flux de données sont des séquences produites par diverses sources, telles que les flux de médias sociaux, les appareils de l'internet des objets (IoT), les fichiers journaux, les ensembles de données scientifiques, etc. Ces flux de données sont ensuite ingérés et traités par des technologies de streaming de données.&lt;/p&gt;

&lt;p&gt;Un autre aspect important est l'évolutivité des flux de données. Au fur et à mesure que le volume de données augmente, les technologies peuvent évoluer pour gérer la charge accrue, garantissant ainsi que les entreprises peuvent récolter des analyses en temps réel. Cela signifie que les entreprises peuvent analyser leurs données au fur et à mesure qu'elles sont générées, ce qui leur permet de prendre des décisions rapides, particulièrement utiles dans les scénarios où le facteur temps est important, comme la détection des fraudes ou l'optimisation de l'expérience des clients.&lt;/p&gt;

&lt;p&gt;Les technologies de flux de données prennent en charge différents formats, des données structurées comme les bases de données SQL aux données non structurées comme les événements en direct ou les flux de médias sociaux ; cela garantit que les entreprises peuvent traiter et analyser tous les types de données, indépendamment de leur source ou de leur format. Il est important de noter que si ces technologies offrent de nombreux avantages, elles s'accompagnent également de défis ; par exemple, leur mise en œuvre et leur gestion requièrent des compétences sophistiquées en matière d'ingénierie des données, ce qui nécessite une faible latence et un débit élevé, en particulier lors du traitement de gros volumes de données.&lt;/p&gt;

&lt;h2&gt;
  
  
  Concepts de base des technologies de flux de données
&lt;/h2&gt;

&lt;p&gt;Les technologies de flux de données reposent sur plusieurs concepts fondamentaux. Il est essentiel de comprendre ces concepts pour tirer pleinement parti de la puissance du traitement des données en temps réel :&lt;/p&gt;

&lt;h3&gt;
  
  
  Flux de données
&lt;/h3&gt;

&lt;p&gt;Les flux de données sont des flux de données continus provenant de diverses sources, telles que les appareils IoT, les fichiers journaux, les marchés boursiers, etc. Ces sources de données produisent des données à une vitesse élevée, souvent en temps réel ou presque, et les données produites sont généralement sensibles au temps, ce qui signifie que leur pertinence diminue avec le temps.&lt;/p&gt;

&lt;h3&gt;
  
  
  Traitement des flux
&lt;/h3&gt;

&lt;p&gt;Le traitement des flux est le traitement en temps réel des flux de données. Contrairement au traitement par lots, qui traite les données à intervalles réguliers, le traitement par flux traite les données dès leur arrivée. Cela permet d'obtenir une faible latence, ce qui est essentiel pour les applications sensibles au temps, telles que le suivi de la position de l'utilisateur ou les prix des marchandises et la prise de décision en fonction de ces valeurs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Traitement par lots et traitement en flux
&lt;/h3&gt;

&lt;p&gt;Le traitement par lots et le traitement en flux représentent deux approches différentes du traitement des données. Le traitement par lots traite de grands volumes de données en une seule fois, à intervalles programmés, et convient aux tâches d'analyse de données non sensibles au temps. En revanche, le traitement en flux traite les données dès qu'elles sont générées, ce qui permet d'obtenir des informations en temps réel.&lt;/p&gt;

&lt;p&gt;Cette approche se situe entre le traitement par lots et le traitement par flux, lorsque des données très récentes sont nécessaires, mais pas nécessairement en temps réel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture des flux de données
&lt;/h2&gt;

&lt;p&gt;L'architecture typique des technologies de flux de données comprend des sources de données, des systèmes d'ingestion de données, des systèmes de traitement de flux et des systèmes de stockage de données.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Les sources de données génèrent des flux de données.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Les systèmes d'ingestion de données, comme Apache Kafka ou Amazon Kinesis, capturent ces flux de données pour les traiter.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Un processeur de flux, tel qu'Apache Flink ou Apache Spark Streaming, traite les données ingérées en temps réel.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Les données traitées sont ensuite stockées dans des lacs de données ou des entrepôts de données pour une analyse plus approfondie ou des tableaux de bord de visualisation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Les données peuvent être transmises en continu à la périphérie de votre réseau directement à l'aide de systèmes tels que &lt;a href="https://www.pubnub.com/developers/kafka/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;PubNub Kafka Bridge&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Les données circulent dans l'architecture de la source à la destination dans des pipelines de données. Par essence, les pipelines de données représentent le parcours des données depuis leur point d'origine jusqu'à leur stockage ou leur visualisation, en passant par l'ingestion et le traitement.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cohérence des données
&lt;/h3&gt;

&lt;p&gt;La cohérence des données est une préoccupation importante dans le cadre de la diffusion en continu de données. Les technologies de diffusion en continu des données utilisent diverses techniques telles que l'ordonnancement des événements, le traitement à l'identique et la tolérance aux pannes pour garantir la cohérence. Ces techniques garantissent que les données sont traitées dans le bon ordre, qu'aucune donnée n'est perdue ou traitée plusieurs fois, et que le système peut se remettre d'une défaillance sans perte de données.&lt;/p&gt;

&lt;p&gt;Par exemple, PubNub offre plusieurs moyens de &lt;a href="https://www.pubnub.com/message-delivery-guarantee/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;garantir la livraison des messages&lt;/a&gt;, tels que les accusés de réception, l'ordre des messages et la mise en file d'attente.&lt;/p&gt;

&lt;h3&gt;
  
  
  Outils pour les technologies de flux de données
&lt;/h3&gt;

&lt;p&gt;Il existe plusieurs outils commerciaux et open-source pour la mise en œuvre des technologies de flux de données. Il s'agit notamment d'Apache Kafka, d'Apache Flink, d'AWS Kinesis et de Microsoft Azure Stream Analytics. Chaque outil a ses propres points forts et ses propres cas d'utilisation, et le choix de l'outil dépend des exigences spécifiques de l'application de streaming de données.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prochaines étapes avec PubNub Data Streaming
&lt;/h2&gt;

&lt;p&gt;Après avoir compris les concepts de base et l'architecture des technologies de streaming de données, l'étape suivante consiste à mettre en œuvre ces technologies dans vos propres systèmes. PubNub fournit une plateforme de streaming de données en temps réel robuste et évolutive qui peut être facilement intégrée dans votre architecture existante.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YVmNlsZK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/4821PXPFoWt6Lxhru8nTx7/da5aee77c5ff80c7f351907b22b5fa4a/twitter_short.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YVmNlsZK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/4821PXPFoWt6Lxhru8nTx7/da5aee77c5ff80c7f351907b22b5fa4a/twitter_short.png" title="Data Streaming Demo image" alt="Image showing real-time data streaming" width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Voici les étapes à suivre pour commencer à utiliser PubNub Data Streaming :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Explorer les démos&lt;/strong&gt;: PubNub fournit une &lt;a href="https://www.pubnub.com/demos/real-time-data-streaming/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;démo de streaming de données en temps réel&lt;/a&gt; pour vous aider à comprendre le fonctionnement de notre plateforme. Cette démo s'applique à un large éventail de cas d'utilisation, depuis les applications de chat jusqu'au contrôle des appareils IoT.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Comprendre les bases&lt;/strong&gt;: PubNub fournit un glossaire complet qui décrit les termes et concepts clés, y compris une entrée sur le &lt;a href="https://www.pubnub.com/learn/glossary/data-streaming/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;streaming de données&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Comprendre*&lt;em&gt;PubNub Illuminate&lt;/em&gt;*: Avec &lt;a href="https://www.pubnub.com/products/illuminate/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;PubNub Illuminate&lt;/a&gt;, vous pouvez adapter les stratégies de monétisation à la volée, lier le comportement de l'utilisateur à des incitations, suivre chaque action avec des métriques agrégées et des appareils personnalisés en temps réel, et voir instantanément les résultats - tout cela sans alourdir votre équipe de développement.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Inscription&lt;/strong&gt;: Créez un compte PubNub. Vous pouvez le faire sur leur &lt;a href="https://admin.pubnub.com/#/register?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;page d'inscription&lt;/a&gt;. Le niveau gratuit de votre compte PubNub a des limites généreuses et ne nécessite pas de carte de crédit jusqu'à ce que vous soyez prêt à mettre à niveau.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Commencez à construire&lt;/strong&gt;: Une fois que vous avez maîtrisé les bases, créez vos propres applications de flux de données. PubNub propose une multitude de tutoriels qui vous guident dans la création de différents types d'applications, y compris un &lt;a href="https://www.pubnub.com/tutorials/real-time-data-streaming/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;tutoriel sur la création d'une application de streaming de données en temps réel&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Explorer les API&lt;/strong&gt;: PubNub fournit une large gamme d'API et de SDK que vous pouvez utiliser pour créer vos applications. Vous pouvez trouver plus d'informations sur notre &lt;a href="https://www.pubnub.com/docs/sdks?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;page de documentation SDK&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Comprendre la tarification&lt;/strong&gt;: Avant de terminer la construction, il est utile de savoir combien cela va coûter. Vous pouvez trouver plus d'informations sur les prix de PubNub sur leur &lt;a href="https://www.pubnub.com/pricing/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;page de prix&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Approfondir les cas d'utilisation des technologies de streaming de données
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Analyse des données en temps réel
&lt;/h3&gt;

&lt;p&gt;L'analyse de données en temps réel est l'un des principaux cas d'utilisation des technologies de flux de données. En traitant et en analysant les flux de données en temps réel, les entreprises peuvent obtenir des informations immédiates sur leurs opérations et prendre des décisions rapides et éclairées. Cela peut être particulièrement utile dans des secteurs tels que la finance, où l'analyse des données en temps réel peut être utilisée pour la détection des fraudes, l'analyse des tendances du marché, etc.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.pubnub.com/products/illuminate/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;PubNub Illuminate&lt;/a&gt; est un exemple de plateforme d'analyse en temps réel. Cependant, PubNub Illuminate est plus qu'une simple plateforme de gestion de données, elle vous permet également de définir des conditions basées sur vos métriques de données, qui, lorsqu'elles sont déclenchées, effectueront des actions dynamiques basées sur ces données.&lt;/p&gt;

&lt;h3&gt;
  
  
  Internet des objets (IoT)
&lt;/h3&gt;

&lt;p&gt;Une autre application importante des technologies de flux de données est l'Internet des objets (IoT), où les appareils génèrent des flux de données qui peuvent être traités en temps réel pour fournir des informations précieuses. Par exemple, la surveillance des performances des équipements industriels permet aux entreprises de détecter et de traiter les problèmes avant qu'ils ne conduisent à une défaillance de l'équipement.&lt;/p&gt;

&lt;h3&gt;
  
  
  Analyse des médias sociaux
&lt;/h3&gt;

&lt;p&gt;Les plateformes de médias sociaux génèrent des volumes massifs de données chaque seconde, et les technologies de streaming de données peuvent traiter ces données en temps réel, ce qui permet aux entreprises de surveiller les tendances, de suivre le sentiment des clients et de répondre immédiatement à leurs commentaires.&lt;/p&gt;

&lt;h3&gt;
  
  
  Commerce électronique
&lt;/h3&gt;

&lt;p&gt;Dans le secteur du commerce électronique, les technologies de diffusion de données peuvent suivre le comportement des clients en temps réel, ce qui permet aux entreprises de fournir des recommandations personnalisées, d'améliorer l'expérience des clients et d'augmenter les ventes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tendances futures des technologies de flux de données
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Intégration avec l'apprentissage automatique et l'IA
&lt;/h3&gt;

&lt;p&gt;L'une des principales tendances des technologies de diffusion de données en continu est l'intégration de l'apprentissage automatique et de l'IA générative. Les modèles d'apprentissage automatique peuvent recevoir les données en temps réel nécessaires pour faire des prédictions précises et opportunes. Cela peut être particulièrement utile pour la maintenance prédictive, où les modèles d'apprentissage automatique peuvent prédire les défaillances des pièces sur la base de données en temps réel - par exemple, les cycles de décharge de la batterie d'un appareil mobile peuvent être utilisés pour estimer la durée de vie prévue de la batterie.&lt;/p&gt;

&lt;h3&gt;
  
  
  Utilisation accrue des frameworks open-source
&lt;/h3&gt;

&lt;p&gt;Les frameworks open-source tels que Apache Kafka, Apache Flink et Spark Streaming sont devenus des outils populaires pour la mise en œuvre des technologies de flux de données. Ces frameworks offrent de solides capacités de traitement de gros volumes de données en temps réel, et leur nature open-source les rend hautement personnalisables et adaptables à différents cas d'utilisation. Nous nous attendons à une utilisation accrue de ces frameworks et d'autres frameworks à code source ouvert à l'avenir.&lt;/p&gt;

&lt;h3&gt;
  
  
  Une plus grande importance accordée à la sécurité des données et à la protection de la vie privée
&lt;/h3&gt;

&lt;p&gt;Comme les entreprises s'appuient de plus en plus sur les technologies de flux de données pour traiter les données sensibles, l'accent sera mis davantage sur la sécurité et la confidentialité des données. Il s'agira de mettre en œuvre des mesures de sécurité robustes pour protéger les flux de données contre les accès non autorisés et de veiller au respect des réglementations en matière de confidentialité des données.&lt;/p&gt;

&lt;h3&gt;
  
  
  Des techniques d'ingénierie des données plus avancées
&lt;/h3&gt;

&lt;p&gt;Nous nous attendons à voir apparaître des techniques d'ingénierie des données plus avancées à mesure que les ingénieurs se familiariseront avec les technologies, y compris des algorithmes plus sophistiqués pour traiter les flux, optimiser les pipelines de données et assurer la cohérence des données.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;L'avenir des technologies de flux de données est prometteur. En fournissant aux entreprises de meilleures informations opérationnelles en temps réel, elles peuvent prendre des mesures immédiates sans avoir à s'appuyer sur des données historiques, ce qui accroît la satisfaction des clients, l'efficacité et la rentabilité. Quel que soit votre secteur d'activité, qu'il s'agisse de gestion de la clientèle, d'e-commerce, d'IoT ou d'analyse des médias sociaux, les technologies de streaming de données ont le potentiel de transformer le mode de fonctionnement des entreprises.&lt;/p&gt;

&lt;p&gt;PubNub peut vous aider à transformer votre entreprise grâce au streaming de données. N'hésitez pas à contacter l'équipe DevRel à l'adresse &lt;a href="//mailto:devrel@pubnub.com"&gt;devrel@pubnub.com&lt;/a&gt; ou à contacter notre équipe de &lt;a href="https://support.pubnub.com/hc/en-us?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;support&lt;/a&gt; pour obtenir de l'aide sur n'importe quel aspect de votre développement PubNub.&lt;/p&gt;

&lt;h1&gt;
  
  
  Comment PubNub peut-il vous aider ?
&lt;/h1&gt;

&lt;p&gt;Cet article a été publié à l'origine sur &lt;a href="https://www.pubnub.com/blog/data-streaming-technologies-overview/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;PubNub.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notre plateforme aide les développeurs à construire, fournir et gérer l'interactivité en temps réel pour les applications web, les applications mobiles et les appareils IoT.&lt;/p&gt;

&lt;p&gt;La base de notre plateforme est le réseau de messagerie en temps réel le plus grand et le plus évolutif de l'industrie. Avec plus de 15 points de présence dans le monde, 800 millions d'utilisateurs actifs mensuels et une fiabilité de 99,999 %, vous n'aurez jamais à vous soucier des pannes, des limites de concurrence ou des problèmes de latence causés par les pics de trafic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Découvrez PubNub
&lt;/h2&gt;

&lt;p&gt;Découvrez le &lt;a href="https://www.pubnub.com/tour/introduction/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Live Tour&lt;/a&gt; pour comprendre les concepts essentiels de chaque application alimentée par PubNub en moins de 5 minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  S'installer
&lt;/h2&gt;

&lt;p&gt;Créez un &lt;a href="https://admin.pubnub.com/signup/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;compte PubNub&lt;/a&gt; pour un accès immédiat et gratuit aux clés PubNub.&lt;/p&gt;

&lt;h2&gt;
  
  
  Commencer
&lt;/h2&gt;

&lt;p&gt;La &lt;a href="https://www.pubnub.com/docs?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;documentation PubNub&lt;/a&gt; vous permettra de démarrer, quel que soit votre cas d'utilisation ou votre &lt;a href="https://www.pubnub.com/docs?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;SDK&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Modération de chat avec OpenAI</title>
      <dc:creator>PubNub Developer Relations</dc:creator>
      <pubDate>Wed, 03 Jul 2024 15:42:12 +0000</pubDate>
      <link>https://forem.com/pubnub-fr/moderation-de-chat-avec-openai-1op3</link>
      <guid>https://forem.com/pubnub-fr/moderation-de-chat-avec-openai-1op3</guid>
      <description>&lt;p&gt;Toute application contenant un &lt;a href="https://www.pubnub.com/solutions/chat/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;chat in-app&lt;/a&gt; a besoin d'un moyen de réguler et de modérer les messages que les utilisateurs peuvent échanger. Comme il n'est pas possible de modérer tous les contenus inappropriés avec des modérateurs humains, le système de modération doit être automatique. Comme les utilisateurs essaieront fréquemment de contourner la modération, l'apprentissage automatique, l'IA générative et les grands modèles de langage (LLM) [et les modèles GPT tels que GPT-3 et GPT-4] sont des moyens populaires de modérer le contenu.&lt;/p&gt;

&lt;p&gt;La modération est un sujet complexe, et PubNub offre diverses solutions pour répondre à tous les cas d'utilisation de nos développeurs.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Les&lt;a href="https://www.pubnub.com/docs/serverless/functions/overview?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;fonctions PubNub&lt;/a&gt; peuvent intercepter et modifier les messages avant qu'ils n'atteignent leur destination. Vous pouvez appliquer une logique personnalisée au sein d'une fonction, y compris en appelant une API REST externe, ce qui vous permet d'utiliser n'importe quel service externe pour la modération des messages. Cette approche est utilisée dans cet article pour intégrer OpenAI.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Les fonctions PubNub offrent des &lt;a href="https://www.pubnub.com/integrations/?page=1&amp;amp;sortBy=Most%20recent&amp;amp;utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;intégrations personnalisées&lt;/a&gt; qui supportent la modération de contenu et l'analyse de sentiment, y compris &lt;a href="https://www.pubnub.com/integrations/lasso-moderation/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;Lasso Moderation&lt;/a&gt;, &lt;a href="https://www.pubnub.com/integrations/tisane-labs-nlp/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;Tisane&lt;/a&gt;, &lt;a href="https://www.pubnub.com/integrations/chat-message-profanity-filter/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;un filtre de blasphème basé sur RegEx&lt;/a&gt;, &lt;a href="https://www.pubnub.com/integrations/lexalytics/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;Lexalytics&lt;/a&gt;, et &lt;a href="https://www.pubnub.com/integrations/communitysift/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;Community Sift&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;L'espace de travail BizOps de PubNub peut &lt;a href="https://www.pubnub.com/how-to/monitor-and-moderate-conversations-with-bizops-workspace/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;surveiller et modérer les conversations&lt;/a&gt;, y compris la possibilité d'éditer et de supprimer des messages.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Le point final de modération d'Open AI
&lt;/h2&gt;

&lt;p&gt;Cet article se penche sur l'&lt;a href="https://platform.openai.com/docs/guides/moderation/overview"&gt;API de modération d'OpenAI&lt;/a&gt;, une API REST qui utilise l'intelligence artificielle (IA) pour déterminer si le texte fourni contient des termes potentiellement préjudiciables. L'objectif de l'API est de permettre aux développeurs de filtrer ou de supprimer le contenu préjudiciable et, au moment de la rédaction de cet article, elle est fournie &lt;strong&gt;gratuitement&lt;/strong&gt;, mais ne prend en charge que l'anglais.&lt;/p&gt;

&lt;p&gt;Le modèle qui sous-tend l'API de modération classera le texte fourni comme suit (extrait de la &lt;a href="https://platform.openai.com/docs/guides/moderation/overview"&gt;documentation de l'API&lt;/a&gt;) :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Haine :&lt;/strong&gt; contenu qui exprime, incite ou encourage la haine basée sur la race, le sexe, l'ethnicité, la religion, la nationalité, l'orientation sexuelle, le handicap ou la caste. Les contenus haineux visant des groupes non protégés (par exemple, les joueurs d'échecs) relèvent du harcèlement.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Haine / Menace :&lt;/strong&gt; Contenu haineux qui comprend également des actes de violence ou des préjudices graves à l'encontre du groupe ciblé en raison de sa race, de son sexe, de son appartenance ethnique, de sa religion, de sa nationalité, de son orientation sexuelle, de son statut de handicapé ou de sa caste.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Harcèlement :&lt;/strong&gt; Contenu qui exprime, incite ou promeut un langage de harcèlement à l'égard d'une cible.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Harcèlement / Menace :&lt;/strong&gt; Contenu de harcèlement qui inclut également des actes de violence ou de graves préjudices à l'encontre d'une cible.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Automutilation :&lt;/strong&gt; contenu qui promeut, encourage ou dépeint des actes d'automutilation, tels que le suicide, les coupures et les troubles de l'alimentation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Automutilation / Intention :&lt;/strong&gt; Contenu dans lequel le locuteur exprime qu'il se livre ou a l'intention de se livrer à des actes d'automutilation, tels que le suicide, la mutilation et les troubles de l'alimentation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Automutilation / Instructions :&lt;/strong&gt; Contenu qui encourage la réalisation d'actes d'automutilation, tels que le suicide, la mutilation et les troubles alimentaires, ou qui donne des instructions ou des conseils sur la manière de commettre de tels actes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sexuel :&lt;/strong&gt; Contenu destiné à susciter une excitation sexuelle, comme la description d'une activité sexuelle, ou qui fait la promotion de services sexuels (à l'exclusion de l'éducation sexuelle et du bien-être).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sexuel / mineurs :&lt;/strong&gt; Contenu à caractère sexuel mettant en scène une personne âgée de moins de 18 ans.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Violence :&lt;/strong&gt; Contenu décrivant la mort, la violence ou les blessures physiques.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Violence / graphique :&lt;/strong&gt; Contenu décrivant la mort, la violence ou les blessures physiques de manière graphique.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Les résultats sont fournis dans une structure JSON comme suit (encore une fois, tirée de la documentation de l'API) :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;modr-XXXXX&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;model&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text-moderation-007&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;results&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;flagged&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;categories&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sexual&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hate&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;harassment&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;self-harm&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sexual/minors&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hate/threatening&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;violence/graphic&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;self-harm/intent&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;self-harm/instructions&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;harassment/threatening&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;violence&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;category_scores&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;//  Out of scope for this article&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Appel de l'API de modération Open AI à partir de PubNub
&lt;/h2&gt;

&lt;p&gt;L'&lt;strong&gt;intégration de l'API de modération dans n'importe quelle application PubNub est facile en utilisant les fonctions PubNub&lt;/strong&gt; en suivant ce tutoriel étape par étape :&lt;/p&gt;

&lt;p&gt;Les fonctions vous permettent de capturer des événements en temps réel qui se produisent sur la plateforme PubNub, tels que des messages envoyés et reçus ; vous pouvez ensuite écrire du code serverless personnalisé dans ces fonctions pour modifier, réacheminer, augmenter ou filtrer les messages selon les besoins.&lt;/p&gt;

&lt;p&gt;Vous devrez utiliser le type d'événement "Before Publish or Fire" ; ce type de fonction sera invoqué &lt;em&gt;avant que&lt;/em&gt; le message ne soit livré et doit finir de s'exécuter avant que le message ne soit libéré pour être livré à ses destinataires. La &lt;a href="https://www.pubnub.com/docs/serverless/functions/overview#what-function-type-to-use?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;documentation&lt;/a&gt; PubNub fournit plus de contexte et de détails, mais en résumé : "Before Publish or Fire" est un appel synchrone qui peut &lt;em&gt;modifier un message ou sa charge utile&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Créer la fonction PubNub
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Connectez-vous au &lt;a href="https://admin.pubnub.com?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;portail d'administration de&lt;/a&gt; PubNub et sélectionnez l'application et le jeu de clés de l'application que vous souhaitez modérer.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sélectionnez 'Functions', qui se trouve sous l'onglet 'Build'.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sélectionnez '+ CREATE NEW MODULE' et donnez un nom et une description au module.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sélectionnez "+ CREATE NEW FUNCTION" et donnez un nom à la fonction.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pour le type d'événement, sélectionnez "Before Publish or Fire".&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pour le nom du canal, entrez &lt;strong&gt;*&lt;/strong&gt; (cette démo utilisera &lt;strong&gt;*&lt;/strong&gt;, mais votre application peut choisir de ne spécifier ici que les canaux que vous souhaitez modérer).&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Après avoir créé la fonction PubNub, vous devez fournir votre clé API Open AI comme secret.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Sélectionnez "MES SECRETS" et créez une nouvelle clé avec le nom "OPENAI_API_KEY".&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://platform.openai.com/account/api-keys"&gt;Générez une clé API Open AI&lt;/a&gt; et assurez-vous qu'elle a accès à l'API modérée.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fournissez la clé API générée au secret de la fonction PubNub que vous venez de créer.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Le corps de la fonction PubNub se présente comme suit :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;xhr&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;xhr&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;vault&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;vault&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;messageText&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;getOpenaiApiKey&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;apiKey&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;openAIModeration&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;messageText&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;aiResponse&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;//  Append the response to the message&lt;/span&gt;
        &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;openAiModeration&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;aiResponse&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="c1"&gt;//  If the message was harmful, you might also choose to report the message here.&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ok&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
      &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ok&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;OPENAI_API_KEY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;getOpenaiApiKey&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Use cached key&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="c1"&gt;// Fetch key from vault&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;vault&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;apikey&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;OPENAI_API_KEY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;apikey&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;openAIModeration&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;messageText&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://api.openai.com/v1/moderations&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;http_options&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;method&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;headers&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Authorization&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`Bearer &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;body&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;input&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;messageText&lt;/span&gt;
    &lt;span class="p"&gt;}),&lt;/span&gt;
    &lt;span class="na"&gt;timeout&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;9500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;retries&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;http_options&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Open AI Timed out&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;La fonction elle-même est assez simple :&lt;/p&gt;

&lt;p&gt;Pour chaque message reçu :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Le transmettre à la fonction de modération d'Open AI&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ajouter l'objet de modération retourné comme une nouvelle clé sur l'objet Message (JSON)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Sauvegardez votre fonction et assurez-vous que votre module est démarré.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Temps de latence
&lt;/h3&gt;

&lt;p&gt;La fonction PubNub que vous venez de créer sera exécutée de manière synchrone à chaque fois qu'un message est envoyé, et ce message ne sera pas délivré tant que la fonction n'aura pas fini de s'exécuter. Comme la fonction contient un appel à une API externe, la latence de délivrance dépendra de la vitesse de retour de l'appel API à Open AI, qui est hors du contrôle de PubNub et qui pourrait être assez élevée.&lt;/p&gt;

&lt;p&gt;Il existe plusieurs façons d'atténuer toute dégradation de l'expérience utilisateur. La plupart des déploiements fournissent à l'expéditeur un retour immédiat indiquant que le message a été envoyé et s'appuient ensuite sur les accusés de réception pour indiquer que le message a été délivré (ou signalé).&lt;/p&gt;

&lt;h3&gt;
  
  
  Mise à jour de l'application client
&lt;/h3&gt;

&lt;p&gt;Examinons ce qui serait nécessaire pour gérer la charge utile de modération dans votre application en utilisant la &lt;a href="https://www.pubnub.com/demos/chat/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;démo Chat&lt;/a&gt;, qui est une application React qui utilise le &lt;a href="https://www.pubnub.com/docs/chat/overview?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;PubNub Chat SDK&lt;/a&gt; pour montrer la plupart des fonctionnalités d'une application de chat typique.&lt;/p&gt;

&lt;p&gt;Configurez un attribut pour savoir si un message potentiellement dangereux doit être affiché ou non :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;showHarmfulMessage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setShowHarmfulMessage&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Et ajouter une certaine logique pour ne pas afficher un message potentiellement nuisible par défaut, dans ce cas dans &lt;a href="https://github.com/PubNubDevelopers/Chat-SDK-Demo-Web/blob/90447262583c251c983f04f23ffb23adcbbd6d25/chat-sdk-demo-web/app/chat/ui-components/message.tsx"&gt;message.tsx&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{(&lt;/span&gt;
  &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;openAiModeration&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; 
  &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;openAiModeration&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;results&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;flagged&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; 
  &lt;span class="nx"&gt;showHarmfulMessage&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;
&lt;span class="p"&gt;)}&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;showHarmfulMessage&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; 
  &lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;openAiModeration&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;results&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;flagged&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; 
  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;span&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Message&lt;/span&gt; &lt;span class="nx"&gt;contains&lt;/span&gt; &lt;span class="nx"&gt;potentially&lt;/span&gt; &lt;span class="nx"&gt;harmful&lt;/span&gt; &lt;span class="nx"&gt;content&lt;/span&gt; 
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;span&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text-blue-400 cursor-pointer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; 
    &lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;setShowHarmfulMessage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)}}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;Reveal&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/span&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/span&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ygaqd9Nx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/1qmBAFCDiDwwKdp7TLSCaw/516d3b1de50c22784996f1e43a65fdc7/Screenshot_2024-07-01_at_10.59.58.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ygaqd9Nx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/1qmBAFCDiDwwKdp7TLSCaw/516d3b1de50c22784996f1e43a65fdc7/Screenshot_2024-07-01_at_10.59.58.png" title="Chat Moderation with OpenAI - Image 01" alt="Chat Moderation with OpenAI - Image" width="800" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notez que ces changements ne sont pas présents dans la version &lt;strong&gt;hébergée&lt;/strong&gt; de la &lt;a href="https://www.pubnub.com/demos/chat/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;démo de chat&lt;/a&gt;, mais le &lt;a href="https://github.com/PubNubDevelopers/Chat-SDK-Demo-Web/blob/main/README.md"&gt;ReadMe contient des instructions complètes&lt;/a&gt; pour la construire et l'exécuter vous-même à partir de votre propre jeu de clés.&lt;/p&gt;

&lt;h2&gt;
  
  
  Récapitulation
&lt;/h2&gt;

&lt;p&gt;Et voilà, un moyen rapide et facile (et gratuit) d'ajouter à la fois la modération et l'analyse des sentiments à votre application en utilisant Open AI.&lt;/p&gt;

&lt;p&gt;Pour en savoir plus sur l'intégration d'Open AI avec PubNub, consultez ces autres ressources :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.pubnub.com/blog/openai-gpt-api-integration-with-functions/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;Intégration de l'API OpenAI GPT avec les fonctions&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.pubnub.com/blog/build-a-chatbot-with-pubnub-and-chatgpt-openai/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;Construire un Chatbot avec PubNub et ChatGPT&lt;/a&gt; (Ajouter un Chatbot à notre vitrine PubNub)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.pubnub.com/blog/enhance-geo-app-with-pubnub-and-openai-chatgpt/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;Améliorer une Geo App avec PubNub &amp;amp; Chat GPT / OpenAI&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;N'hésitez pas à contacter l'équipe DevRel à &lt;a href="//mailto:devrel@pubnub.com"&gt;devrel@pubnub.com&lt;/a&gt; ou à contacter notre équipe de &lt;a href="https://support.pubnub.com/hc/en-us?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;support&lt;/a&gt; pour obtenir de l'aide sur n'importe quel aspect de votre développement PubNub.&lt;/p&gt;

&lt;h1&gt;
  
  
  Comment PubNub peut-il vous aider ?
&lt;/h1&gt;

&lt;p&gt;Cet article a été publié à l'origine sur &lt;a href="https://www.pubnub.com/blog/chat-moderation-with-openai/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;PubNub.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notre plateforme aide les développeurs à construire, fournir et gérer l'interactivité en temps réel pour les applications web, les applications mobiles et les appareils IoT.&lt;/p&gt;

&lt;p&gt;La base de notre plateforme est le réseau de messagerie en temps réel le plus grand et le plus évolutif de l'industrie. Avec plus de 15 points de présence dans le monde, 800 millions d'utilisateurs actifs mensuels et une fiabilité de 99,999 %, vous n'aurez jamais à vous soucier des pannes, des limites de concurrence ou des problèmes de latence causés par les pics de trafic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Découvrez PubNub
&lt;/h2&gt;

&lt;p&gt;Découvrez le &lt;a href="https://www.pubnub.com/tour/introduction/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;Live Tour&lt;/a&gt; pour comprendre les concepts essentiels de chaque application alimentée par PubNub en moins de 5 minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  S'installer
&lt;/h2&gt;

&lt;p&gt;Créez un &lt;a href="https://admin.pubnub.com/signup/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;compte PubNub&lt;/a&gt; pour un accès immédiat et gratuit aux clés PubNub.&lt;/p&gt;

&lt;h2&gt;
  
  
  Commencer
&lt;/h2&gt;

&lt;p&gt;La &lt;a href="https://www.pubnub.com/docs?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;documentation PubNub&lt;/a&gt; vous permettra de démarrer, quel que soit votre cas d'utilisation ou votre &lt;a href="https://www.pubnub.com/docs?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;SDK&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Comment utiliser Illuminate pour équilibrer vos jeux ?</title>
      <dc:creator>PubNub Developer Relations</dc:creator>
      <pubDate>Wed, 03 Jul 2024 06:56:06 +0000</pubDate>
      <link>https://forem.com/pubnub-fr/comment-utiliser-illuminate-pour-equilibrer-vos-jeux--1j8e</link>
      <guid>https://forem.com/pubnub-fr/comment-utiliser-illuminate-pour-equilibrer-vos-jeux--1j8e</guid>
      <description>&lt;p&gt;La dernière version du produit PubNub, Illuminate, est un outil de prise de décision évolutif que nous avons conçu pour aider les développeurs de jeux, les chefs de produits et les chefs de projets à construire, itérer et expérimenter au sein de la plateforme PubNub.&lt;/p&gt;

&lt;p&gt;Conçu avec une excellente interface utilisateur, vous pouvez utiliser Illuminate pour prendre des décisions afin d'améliorer l'expérience des joueurs et d'accélérer la monétisation en temps réel.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Qu'est-ce que l'équilibrage des jeux et comment pouvez-vous l'utiliser en temps réel ?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;L'équilibrage des jeux est une branche de la conception des jeux qui améliore le gameplay et l'expérience utilisateur en équilibrant la difficulté et l'équité. L'équilibrage du jeu consiste à ajuster les récompenses, les défis et/ou les éléments d'un jeu afin de créer l'expérience de jeu souhaitée.&lt;/p&gt;

&lt;p&gt;L'équilibre du jeu est généralement compris comme l'introduction de l'équité pour les joueurs. Cela inclut&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Ajuster la difficulté,&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;la modification des conditions de gain et de perte&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Les états du jeu&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;l'équilibrage de l'économie.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vous trouverez plus d'informations sur l'équilibrage des jeux sur &lt;a href="https://en.wikipedia.org/wiki/Game_balance"&gt;Wikipédia&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;L'utilisation de l'équilibrage du jeu en temps réel peut aider à maintenir l'engagement des joueurs, à faire en sorte que les nouveaux joueurs se sentent les bienvenus et, éventuellement, à monétiser le jeu.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Comment Illuminate peut-il vous aider à maintenir l'engagement de vos joueurs ?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Comme nous l'avons mentionné, Illuminate est un outil de prise de décision en temps réel. Pour aider nos joueurs à rester engagés, nous allons nous concentrer sur les nouveaux joueurs, ceux qui découvrent le jeu et qui ont potentiellement besoin d'aide pour s'habituer à la façon dont le jeu est joué.&lt;/p&gt;

&lt;p&gt;Dans cet exemple, j'ai construit une copie à l'ancienne d'astéroïdes écrite en JavaScript et hébergée entièrement sur des fonctions PubNub. Pour en savoir plus sur les fonctions PubNub, consultez le site &lt;a href="https://www.pubnub.com/docs/serverless/functions/overview?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;https://www.pubnub.com/docs/serverless/functions/overview.&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Tout d'abord, plantons le décor.&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Imaginez qu'un nouveau joueur rejoigne votre jeu et commence à jouer, il perd et commence à se lasser du manque de progression.&lt;/p&gt;

&lt;p&gt;Via une publication, nous pouvons envoyer un message du jeu vers PubNub qui notifie Illuminate de la progression et du score du joueur, Illuminate prend quelques décisions basées sur des métriques prédéfinies et envoie ensuite un message à ce joueur lui offrant l'option d'acheter trois vies ou de regarder une promotion payée en échange de l'obtention de deux vies.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Passons en revue les écrans.&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dvjKtS3o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/5ELOgmKIhdlJDGcsRfeLRr/ea1c9bd24814904ca26d9add6fd150ce/image2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dvjKtS3o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/5ELOgmKIhdlJDGcsRfeLRr/ea1c9bd24814904ca26d9add6fd150ce/image2.png" title="Use Illuminate to Balance your Games - Image - 01" alt="Use Illuminate to Balance your Games" width="800" height="579"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Le jeu commence normalement, mais comme vous pouvez le voir, je ne suis vraiment pas un grand joueur et je suis mort avec seulement 70 points.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Wa3NuixJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/25ixCXROWywRJGXEfuZ1ww/f674cfdcbe0452c50e9a4006b61407cb/image3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Wa3NuixJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/25ixCXROWywRJGXEfuZ1ww/f674cfdcbe0452c50e9a4006b61407cb/image3.png" title="Use Illuminate to Balance your Games - Image - 02" alt="Use Illuminate to Balance your Games" width="800" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pour m'aider à continuer à jouer, Illuminate a reçu ce score et a calculé qu'il fallait m'offrir la possibilité d'acheter des vies ou de regarder une publicité pour obtenir des vies.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rJbLh6TP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/6JROao8WMMGqV8dfKIj3XV/e584b545d64fc7edde4332e76c3b2d2b/image5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rJbLh6TP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/6JROao8WMMGqV8dfKIj3XV/e584b545d64fc7edde4332e76c3b2d2b/image5.png" title="Use Illuminate to Balance your Games - Image - 03" alt="Use Illuminate to Balance your Games" width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;En choisissant de dépenser de l'argent, j'ai pu acheter des vies et me remettre rapidement dans le jeu.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2wJApHCr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/5tUDTkcymTnRqZfkLobWly/1e8982bd6b68b3a1e183e8e292f1c809/image4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2wJApHCr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/5tUDTkcymTnRqZfkLobWly/1e8982bd6b68b3a1e183e8e292f1c809/image4.png" title="Use Illuminate to Balance your Games - Image - 04" alt="Use Illuminate to Balance your Games" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Les coulisses d'Illuminate.&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Vous trouverez Illuminate dans le portail de votre compte PubNub - &lt;a href="https://admin.pubnub.com/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;https://admin.pubnub.com/,&lt;/a&gt; sous la rubrique "Optimize".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HEU8DB6M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/2N5rjdq2zVsuvvJNcihzEV/e924e81bf6edade34287bfd7308524c5/image7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HEU8DB6M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/2N5rjdq2zVsuvvJNcihzEV/e924e81bf6edade34287bfd7308524c5/image7.png" title="Use Illuminate to Balance your Games - Image - 05" alt="Use Illuminate to Balance your Games" width="291" height="227"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notre première étape consiste à examiner nos Business Objects. Les objets d'affaires sont le moyen d'obtenir des données dans Illuminate, ils nous aident à définir quel type de données nous devons capturer et à partir d'où.&lt;/p&gt;

&lt;p&gt;Vous pouvez définir quelles données vous voulez suivre en ajoutant des mesures et comment vous voulez segmenter ces données en ajoutant des dimensions.&lt;/p&gt;

&lt;p&gt;Si vous avez besoin d'aide pour vous installer ou pour comprendre la configuration d'Illuminate, vous pouvez trouver la documentation ici&lt;a href="https://www.pubnub.com/docs/illuminate/basics?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;: https://www.pubnub.com/docs/illuminate/basics&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pour équilibrer un jeu, il faut savoir ce que l'on veut suivre et ce que l'on veut offrir aux nouveaux joueurs pour qu'ils restent engagés.&lt;/p&gt;

&lt;p&gt;Telle est la compétence d'Illuminate ; sans aucun codage, nous pouvons ajouter, supprimer ou modifier des variables pour affiner et même adapter ce que nous offrons aux différents joueurs.&lt;/p&gt;

&lt;p&gt;Dans cet exemple simple, j'ai choisi de mesurer le score du jeu, mais vous pourriez facilement ajouter d'autres mesures ;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Le joueur est-il un invité ou a-t-il un compte sur votre plateforme de jeu ?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Durée totale du jeu&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Type d'appareil - web, mobile, TV.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ont-ils déjà acheté quelque chose chez vous lors d'événements ou de jeux antérieurs ?&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pour en revenir à mes objectifs commerciaux, permettez-moi de vous montrer les mesures avec lesquelles je travaille.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oozHcE3I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/5j3WZoN5vgm83pxBmPwqbo/86b0b2ded611de919de4f73b7f061447/image6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oozHcE3I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/5j3WZoN5vgm83pxBmPwqbo/86b0b2ded611de919de4f73b7f061447/image6.png" title="Use Illuminate to Balance your Games - Image - 06" alt="Use Illuminate to Balance your Games" width="800" height="698"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Voici ce que j'en pense :&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mesures :&lt;/strong&gt; Valeurs numériques que l'on peut mesurer ou additionner.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dimensions :&lt;/strong&gt; Valeurs qualitatives qui peuvent être utilisées pour segmenter les mesures.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Métriques :&lt;/strong&gt; L'agrégation de vos mesures segmentées par les dimensions que vous avez sélectionnées.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Décisions :&lt;/strong&gt; Un ensemble de conditions et d'actions. Lorsque les conditions sont remplies, l'action correspondante est déclenchée.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tableaux de bord :&lt;/strong&gt; Une collection de graphiques en temps réel qui visualisent vos mesures et vos décisions.&lt;/p&gt;

&lt;p&gt;Dans mon exemple, l'une des mesures que j'utilise est que le client demande de l'aide à Illuminate lorsque le score est inférieur à 500 points.&lt;/p&gt;

&lt;p&gt;J'ai ensuite mis en correspondance cette mesure avec une décision : "Si un joueur a un score inférieur à 500 points, offrez-lui la possibilité d'acheter des vies ou de regarder une publicité."&lt;/p&gt;

&lt;p&gt;Une fois que le joueur a choisi de regarder une publicité ou d'acheter des vies, cette décision est renvoyée sous la forme d'une mesure qui est ensuite affichée sur mon tableau de bord.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vdC8zk66--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/1s61i2Z2ILWGnj4HUhnvPr/f117994e40465a9c34ae34fea2ad8e76/image1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vdC8zk66--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/1s61i2Z2ILWGnj4HUhnvPr/f117994e40465a9c34ae34fea2ad8e76/image1.png" title="Use Illuminate to Balance your Games - Image - 07" alt="Use Illuminate to Balance your Games" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Voici une vue simplifiée de mon tableau de bord d'équilibrage des jeux. Vous pouvez voir que nous suivons les joueurs qui ont obtenu moins de 500 points et ceux qui ont choisi de payer leurs vies au lieu de regarder une publicité.&lt;/p&gt;

&lt;p&gt;Là encore, il est possible d'accroître la complexité de la situation ;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Les joueurs seraient-ils plus nombreux à payer pour des vies supplémentaires si celles-ci étaient bon marché ?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Regarderaient-ils une publicité de 30 secondes ou de 3 minutes ?&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Vs. l'approche traditionnelle ?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Les jeux de stratégie ? Jeux en ligne ? Équilibrer l'expérience et les mécanismes de jeu pour tous les joueurs peut être un processus long. Avant le lancement, vous testerez les différents éléments du jeu, élaborerez le didacticiel d'introduction et, sur la base du comportement des joueurs, veillerez à ce que la conception des niveaux soit progressive afin de maximiser le temps de jeu et d'éviter que le jeu ne soit trop facile. Après le lancement, vous pouvez surveiller les forums de joueurs, vérifier les données analytiques concernant les chiffres de rétention et les actions des joueurs, puis publier des correctifs pour résoudre les éventuels problèmes d'équilibre... en espérant que cela n'affaiblisse pas votre jeu dans le même temps !&lt;/p&gt;

&lt;p&gt;Ce cycle d'analyse et de publication peut être très long, et c'est là qu'Illuminate peut vous aider. Vous pouvez prendre des décisions en temps réel, quel que soit votre type de jeu : Vous pouvez avoir un jeu multijoueur comme un FPS ou un RPG, un jeu de combat solo sur Steam ou une arène de combat comme League of Legends. Tant que le jeu vidéo est en ligne, où l'équilibre des joueurs peut être affecté en agissant dans l'instant, Illuminate peut améliorer l'expérience du joueur - j'ai demandé au PM, et ils disent que les jeux de table et les jeux de cartes ne sont pas encore sur la feuille de route :(&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Récapitulation&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Utiliser Illuminate de PubNub pour équilibrer votre jeu est un moyen rapide et sans code d'introduire des réactions et des outils de prise de décision instantanée dans votre application, ce qui rendra l'expérience de votre joueur excellente.&lt;/p&gt;

&lt;p&gt;Pour en savoir plus sur la création de votre premier jeu avec des actions en temps réel, consultez notre page &lt;a href="https://www.pubnub.com/products/Illuminate-gaming/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;Illuminate pour les jeux&lt;/a&gt; et notre &lt;a href="https://www.pubnub.com/docs/illuminate/basics?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;documentation&lt;/a&gt;. Notre équipe de &lt;a href="https://support.pubnub.com/hc/en-us?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;support&lt;/a&gt; peut également vous aider avec des lignes directrices et des recommandations. Nous espérons vous voir à la prochaine conférence GDC, où nous serions ravis d'entendre ce que vous avez construit avec PubNub !&lt;/p&gt;

&lt;h1&gt;
  
  
  Comment PubNub peut-il vous aider ?
&lt;/h1&gt;

&lt;p&gt;Cet article a été publié à l'origine sur &lt;a href="https://www.pubnub.com/blog/how-to-use-illuminate-to-balance-your-games/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;PubNub.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notre plateforme aide les développeurs à construire, livrer et gérer l'interactivité en temps réel pour les applications web, les applications mobiles et les appareils IoT.&lt;/p&gt;

&lt;p&gt;La base de notre plateforme est le réseau de messagerie en temps réel le plus grand et le plus évolutif de l'industrie. Avec plus de 15 points de présence dans le monde, 800 millions d'utilisateurs actifs mensuels et une fiabilité de 99,999 %, vous n'aurez jamais à vous soucier des pannes, des limites de concurrence ou des problèmes de latence causés par les pics de trafic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Découvrez PubNub
&lt;/h2&gt;

&lt;p&gt;Découvrez le &lt;a href="https://www.pubnub.com/tour/introduction/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;Live Tour&lt;/a&gt; pour comprendre les concepts essentiels de chaque application alimentée par PubNub en moins de 5 minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  S'installer
&lt;/h2&gt;

&lt;p&gt;Créez un &lt;a href="https://admin.pubnub.com/signup/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;compte PubNub&lt;/a&gt; pour un accès immédiat et gratuit aux clés PubNub.&lt;/p&gt;

&lt;h2&gt;
  
  
  Commencer
&lt;/h2&gt;

&lt;p&gt;La &lt;a href="https://www.pubnub.com/docs?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;documentation PubNub&lt;/a&gt; vous permettra de démarrer, quel que soit votre cas d'utilisation ou votre &lt;a href="https://www.pubnub.com/docs?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;SDK&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Suivi de la géolocalisation en JavaScript avec l'API Google Maps</title>
      <dc:creator>PubNub Developer Relations</dc:creator>
      <pubDate>Fri, 31 May 2024 14:45:48 +0000</pubDate>
      <link>https://forem.com/pubnub-fr/suivi-de-la-geolocalisation-en-javascript-avec-lapi-google-maps-27af</link>
      <guid>https://forem.com/pubnub-fr/suivi-de-la-geolocalisation-en-javascript-avec-lapi-google-maps-27af</guid>
      <description>&lt;p&gt;Voici l'article de blog mis à jour, avec tous les mots-clés intégrés de manière transparente.&lt;/p&gt;

&lt;p&gt;Il s'agit de la conclusion de la série de quatre articles sur la création d'applications web en temps réel avec des fonctions de géolocalisation en utilisant l'API JavaScript de Google Maps et PubNub. Notre tutoriel vous guidera à travers l'expérience utilisateur de la génération de trajectoires de vol à l'aide de JavaScript et de PubNub.&lt;/p&gt;

&lt;p&gt;Pour un exemple de mise en œuvre, consultez notre &lt;a href="https://showcase.pubnub.com/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;démo Showcase&lt;/a&gt; sur le site web de PubNub. Naviguez vers la démo Géolocalisation pour voir comment nous incorporons PubNub avec le suivi en temps réel. Pour le code derrière la démo, naviguez vers notre &lt;a href="https://github.com/PubNubDevelopers/PubNub-Showcase/tree/main/web/geolocation"&gt;Github&lt;/a&gt; pour voir comment tout cela fonctionne.&lt;/p&gt;

&lt;h2&gt;
  
  
  Que sont les trajectoires de vol ?
&lt;/h2&gt;

&lt;p&gt;Les trajectoires de vol, telles qu'elles sont mises en œuvre dans ce &lt;strong&gt;tutoriel&lt;/strong&gt;, font référence aux &lt;strong&gt;polylignes&lt;/strong&gt; qui permettent de &lt;strong&gt;dessiner dynamiquement des trajectoires à travers des points spécifiés par l'utilisateur&lt;/strong&gt; sur une carte qui réside soit sur votre &lt;strong&gt;appareil mobile&lt;/strong&gt;, soit sur votre navigateur web. Ils font partie intégrante de l'&lt;strong&gt;API de géolocalisation HTML5&lt;/strong&gt; et de l'&lt;strong&gt;API de Google Maps&lt;/strong&gt; pour le suivi des mouvements.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vue d'ensemble du tutoriel
&lt;/h2&gt;

&lt;p&gt;Assurez-vous d'avoir rempli les conditions préalables des &lt;a href="https://www.pubnub.com/blog/javascript-mapping-javascript-tracking/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;parties 1,&lt;/a&gt; &lt;a href="https://www.pubnub.com/blog/javascript-google-maps-api-map-markers/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;2&lt;/a&gt; et &lt;a href="https://www.pubnub.com/blog/javascript-google-maps-api-location-publishing/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;3&lt;/a&gt;, où nous avons &lt;a href="https://www.pubnub.com/blog/javascript-mapping-javascript-tracking/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;mis en place notre environnement JavaScript&lt;/a&gt; et abordé les &lt;a href="https://www.pubnub.com/blog/javascript-google-maps-api-map-markers/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;marqueurs de carte&lt;/a&gt; et le &lt;a href="https://www.pubnub.com/blog/javascript-google-maps-api-location-publishing/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;suivi de la localisation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Une fois que vous l'avez fait, passez à la partie suivante.&lt;/p&gt;

&lt;h2&gt;
  
  
  Présentation du code
&lt;/h2&gt;

&lt;p&gt;Commençons par définir les variables &lt;code&gt;let\&lt;/code&gt; &lt;code&gt;map\&lt;/code&gt;, &lt;code&gt;mark\&lt;/code&gt;, et &lt;code&gt;lineCoords\&lt;/code&gt; pour contenir nos objets map, marker, et polyline &lt;strong&gt;coords&lt;/strong&gt;. En faisant cela, nous pouvons les ajuster au fur et à mesure que les événements PubNub arrivent. Ensuite, nous définissons le callback &lt;code&gt;initialize\&lt;/code&gt; qui est utilisable par l'&lt;a href="https://developers.google.com/maps/documentation/javascript/overview"&gt;API JavaScript de Google Maps&lt;/a&gt; lorsqu'elle est prête à être chargée. Assurez-vous de remplacer &lt;code&gt;YOUR\_GOOGLE\_MAPS\_API\_KEY\&lt;/code&gt; par votre véritable &lt;strong&gt;clé API&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;mark&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;lineCoords&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;initialize&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;map&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;google&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;maps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;map-canvas&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;center&lt;/span&gt;&lt;span class="p"&gt;:{&lt;/span&gt;&lt;span class="na"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="na"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="na"&gt;zoom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="nx"&gt;mark&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;google&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;maps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Marker&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="na"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:{&lt;/span&gt;&lt;span class="na"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="na"&gt;map&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;initialize&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;initialize&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Maintenant, avec le gestionnaire d'événement "redraw", nous allons mettre à jour les nouvelles informations de localisation à la volée en invoquant la méthode &lt;code&gt;getCurrentPosition()\&lt;/code&gt; de la géolocalisation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lat/Long
&lt;/h3&gt;

&lt;p&gt;Ensuite, nous définissons un gestionnaire d'événement redraw que nous appellerons à chaque fois que nous recevrons un nouvel événement de changement de position à la volée. Dans la première partie de la fonction, nous fixons la latitude et la longitude aux nouvelles valeurs du message. Ensuite, nous invoquons les méthodes appropriées sur les objets carte, marqueur et polyligne pour mettre à jour la position, l'ajouter à la fin de la ligne et recentrer la carte.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;redraw&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;lat&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;lng&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setCenter&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="na"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;alt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="nx"&gt;mark&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setPosition&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="na"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;alt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="nx"&gt;lineCoords&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;google&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;maps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;LatLng&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;lineCoordinatesPath&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;google&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;maps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Polyline&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;lineCoords&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;geodesic&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;strokeColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#2E10FF&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="nx"&gt;lineCoordinatesPath&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setMap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Initialiser PubNub
&lt;/h2&gt;

&lt;p&gt;Après avoir défini nos callbacks, nous allons initialiser la fonctionnalité de streaming de données en temps réel PubNub qui fonctionne sur les &lt;strong&gt;téléphones mobiles, les tablettes, les navigateurs&lt;/strong&gt; et les &lt;strong&gt;ordinateurs portables&lt;/strong&gt; à travers des piles technologiques comme &lt;strong&gt;iOS, Android, JavaScript, .NET, Java, Ruby, Python, PHP,&lt;/strong&gt; et plus encore.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pnChannel&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;map3-channel&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pubnub&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;PubNub&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;publishKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;   &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;YOUR_PUB_KEY&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;subscribeKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;YOUR_SUB_KEY&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="nx"&gt;pubnub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;subscribe&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="na"&gt;channels&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;pnChannel&lt;/span&gt;&lt;span class="p"&gt;]});&lt;/span&gt;
&lt;span class="nx"&gt;pubnub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addListener&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;redraw&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;La fonctionnalité de PubNub permettant de &lt;strong&gt;publier&lt;/strong&gt; et de &lt;strong&gt;s'abonner à&lt;/strong&gt; des sujets dans des canaux en temps réel offre des capacités de flux de données efficaces.&lt;/p&gt;

&lt;h2&gt;
  
  
  Publier Lat/Long
&lt;/h2&gt;

&lt;p&gt;Pour ce tutoriel simple, nous avons mis en place un minuteur d'intervalle JavaScript de base pour publier de nouvelles positions basées sur l'heure actuelle. Toutes les 500 millisecondes, nous invoquons la fonction de rappel anonyme qui publie un nouvel objet latitude/longitude (avec des coordonnées en mouvement vers le nord-est) sur le canal PubNub spécifié. Dans votre application, vous obtiendrez probablement la position d'un appareil en direct ou d'une position rapportée par l'utilisateur.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;setInterval&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;pubnub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;publish&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="na"&gt;channel&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;pnChannel&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:{&lt;/span&gt;&lt;span class="na"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lat&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mf"&gt;0.001&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lng&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mf"&gt;0.01&lt;/span&gt;&lt;span class="p"&gt;}});&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Enfin, nous initialisons l'API Google Maps à la toute fin pour nous assurer que les éléments DOM et les prérequis JavaScript sont satisfaits.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt; &lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://maps.googleapis.com/maps/api/js?v=3.exp&amp;amp;key=YOUR_GOOGLE_MAPS_API_KEY&amp;amp;callback=initialize&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/script&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Récapitulation
&lt;/h2&gt;

&lt;p&gt;Cette série de tutoriels nous a montré comment l'&lt;a href="https://developers.google.com/maps/documentation/javascript/overview"&gt;API Google Maps&lt;/a&gt; et &lt;a href="https://www.pubnub.com/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;PubNub&lt;/a&gt; fonctionnent exceptionnellement bien ensemble pour le suivi de la localisation en temps réel sur les applications web et mobiles. C'est similaire à la façon dont les services de covoiturage comme &lt;strong&gt;Uber&lt;/strong&gt; et &lt;strong&gt;Lyft&lt;/strong&gt; affichent le mouvement de leurs véhicules en temps réel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Découvrez PubNub
&lt;/h2&gt;

&lt;p&gt;Regardez le &lt;a href="https://www.pubnub.com/tour/introduction/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;Live Tour&lt;/a&gt; pour comprendre les concepts essentiels derrière chaque application alimentée par PubNub en moins de 5 minutes. Découvrez l'expérience de nos utilisateurs directement à partir de notre &lt;a href="https://github.com/PubNubDevelopers"&gt;page GitHub&lt;/a&gt; et des témoignages disponibles sur notre site web.&lt;/p&gt;

&lt;h2&gt;
  
  
  S'installer
&lt;/h2&gt;

&lt;p&gt;Créez un &lt;a href="https://admin.pubnub.com/#/login?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;compte PubNub&lt;/a&gt; pour un accès immédiat et gratuit aux clés PubNub.&lt;/p&gt;

&lt;h2&gt;
  
  
  Commencer
&lt;/h2&gt;

&lt;p&gt;La &lt;a href="https://www.pubnub.com/docs?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;documentation PubNub&lt;/a&gt; vous permettra d'être opérationnel, quel que soit votre cas d'utilisation. Nous avons des sections dédiées à l'API JavaScript Google Maps et comment les utiliser avec le suivi en temps réel dans notre SDK.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Explorer les cas d'utilisation des services cognitifs</title>
      <dc:creator>PubNub Developer Relations</dc:creator>
      <pubDate>Fri, 31 May 2024 14:11:21 +0000</pubDate>
      <link>https://forem.com/pubnub-fr/explorer-les-cas-dutilisation-des-services-cognitifs-e66</link>
      <guid>https://forem.com/pubnub-fr/explorer-les-cas-dutilisation-des-services-cognitifs-e66</guid>
      <description>&lt;p&gt;Passons en revue quelques exemples d'applications et d'entreprises transformées par les services cognitifs et quelques cas d'utilisation futurs pour voir à quel point ils changent le paysage technologique.&lt;/p&gt;

&lt;p&gt;Grâce aux services cognitifs de géants du cloud comme AWS, IBM et Microsoft Azure, les équipes de développeurs de toutes tailles ont désormais accès à des &lt;a href="https://pubnub.com/resources/ebook/building-apps-with-cognitive-services/" rel="noopener noreferrer"&gt;services cognitifs&lt;/a&gt; d'une puissance stupéfiante. Fournis par le biais d'API, ces services permettent d'injecter facilement une intelligence de nouvelle génération dans les applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://pubnub.com/learn/glossary/what-is-a-chat-api/" rel="noopener noreferrer"&gt;&lt;strong&gt;Chat&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;et interaction sociale&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;En 2015, les utilisateurs actifs mensuels des applications de chat ont dépassé ceux des réseaux sociaux, et le fossé continue de se creuser. En effet, la messagerie est devenue un élément essentiel des réseaux sociaux eux-mêmes. Avec cette croissance rapide, les applications de messagerie ont évolué, passant de simples outils pour envoyer et recevoir de courts messages textuels à des expériences innovantes et complètes, dotées de fonctions surprenantes et agréables. Les API cognitives sont le moteur de cette innovation.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Chatbots et informatique cognitive&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Les chatbots sont l'une des premières formes d'algorithmes d'IA. Même s'il est peu probable qu'ils réussissent bientôt le test de Turing, ils représentent l'évolution naturelle des applications à commande vocale. Alors qu'auparavant vous deviez appeler une ligne d'assistance et appuyer sur la touche 1 pour obtenir les comptes fournisseurs, vous pouvez désormais parler avec des phrases complètes à un système capable de discerner votre intention.&lt;/p&gt;

&lt;p&gt;Que vous le sachiez ou non, l'adoption des chatbots a explosé car les entreprises cherchent à réduire les temps d'attente, à améliorer l'expérience client et à minimiser le coût des opérateurs téléphoniques humains. Pour l'instant, ils sont principalement utilisés pour gérer des tâches simples : comprendre les demandes de base et y répondre en fonction de règles prédéfinies, en répondant à des questions telles que "Où en est ma commande ?" ou "Chatbot, allume les lumières d'ambiance".&lt;/p&gt;

&lt;p&gt;Cependant, des API telles que &lt;a href="https://www.ibm.com/cloud/watson-assistant/" rel="noopener noreferrer"&gt;Watson Assistant&lt;/a&gt; ou &lt;a href="https://aws.amazon.com/lex/" rel="noopener noreferrer"&gt;Amazon Lex&lt;/a&gt; facilitent la création de services capables d'appliquer une logique aux modèles observés dans ces demandes en langage naturel. Ces services peuvent, par exemple, observer un afflux soudain d'appels provenant d'un aéroport souffrant de retards de décollage et modifier la séquence d'options pour donner la priorité à la reprogrammation des vols. Ils peuvent aussi constater que les appels en provenance d'un pays ou d'une région particulière ont tendance à être passés dans une langue différente et modifier les options par défaut en conséquence. Ils peuvent même identifier des schémas grammaticaux qui indiquent aux clients qu'ils doivent immédiatement transmettre leur appel à un superviseur.&lt;/p&gt;

&lt;p&gt;Les interfaces conversationnelles intelligentes utilisant la reconnaissance vocale, la synthèse vocale, la reconnaissance faciale et les modèles d'apprentissage automatique peuvent offrir des expériences très attrayantes et des conversations réalistes à des fins diverses. Mieux encore, elles tireront des enseignements de ces expériences.&lt;/p&gt;

&lt;p&gt;Les chatbots changeront notre façon de faire des opérations bancaires, des achats et d'apprendre : ils feront des recommandations, comprendront des concepts abstraits et apprendront à connaître les individus en se basant sur leurs expériences antérieures. À terme, ils deviendront si performants que vous ne saurez même plus si vous parlez à un humain.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Exemple de code : Chatbot sur la domotique&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;En utilisant Watson et PubNub ChatEngine, vous pouvez facilement &lt;a href="https://www.pubnub.com/docs/chat/samples?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;créer un chatbot doté d'une intelligence artificielle&lt;/a&gt; qui contrôle votre maison intelligente.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2Fasset-17suaysk1qa1j6q%2F194c3f35c69c92190fb678a82720e014%2Fchatengine-home-automation.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2Fasset-17suaysk1qa1j6q%2F194c3f35c69c92190fb678a82720e014%2Fchatengine-home-automation.jpg" title="chatengine home automation"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ce tutoriel vous montre comment construire un chatbot qui accepte des commandes textuelles, les analyse et prend des mesures en fonction de ces commandes. Par exemple, un utilisateur tape "allumer les lumières dans le salon" et le chatbot déclenche l'allumage des lumières.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;

  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;homeauto_intents&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
  &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;intent&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;turnOFF&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;examples&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Put off&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Switch off&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Turn off&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;],&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;description&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Turn on intents&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;intent&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;turnON&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;examples&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Put on&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Switch on&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Turn on&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;],&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;description&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Turn off intents&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;Traitement du langage naturel&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;La science des données et le traitement du langage naturel (NLP), terme générique désignant les solutions d'IA capables de traiter avec succès de grandes quantités de données en langage naturel, constituent un autre domaine extrêmement important. Le NLP ne se contente pas d'évaluer les mots et la grammaire d'un point de vue sémantique, il peut aussi déceler les sentiments et les émotions, en découvrant ce que les utilisateurs pensent d'un sujet ou d'une question grâce à une analyse message par message.&lt;/p&gt;

&lt;p&gt;La PNL est un avantage considérable pour les marques, les personnalités publiques et les organisations qui ont besoin de comprendre et de répondre aux opinions des utilisateurs à une époque où les réputations peuvent être faites ou défaites en l'espace de quelques minutes. Imaginons qu'une marque lance une nouvelle publicité pour un produit. En utilisant les services cognitifs appropriés, elle peut puiser dans un flux de médias sociaux sur un hashtag spécifique ou le nom du produit et demander à son API NLP d'analyser tous les messages pertinents et de fournir un retour d'information sur la façon dont le public réagit au produit.&lt;/p&gt;

&lt;p&gt;Voici un exemple d'application conçue pour analyser et évaluer l'opinion des gens sur les politiciens américains sur Twitter. Elle surveille des mots-clés et des phrases spécifiques et peut ensuite représenter l'émotion des utilisateurs dans des régions géographiques définies.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdownloads.ctfassets.net%2F3prze68gbwl1%2Fasset-17suaysk1qa1j6r%2F92344c256d72ebba547a73bdf5c30441%2F1_d_i_gD52jeJi71ihWIt9rA-1.gif%3Fw%3D700%26h%3D550" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdownloads.ctfassets.net%2F3prze68gbwl1%2Fasset-17suaysk1qa1j6r%2F92344c256d72ebba547a73bdf5c30441%2F1_d_i_gD52jeJi71ihWIt9rA-1.gif%3Fw%3D700%26h%3D550" title="1 d i gD52jeJi71ihWIt9rA 1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Par exemple, si un utilisateur soumet le texte "Je suis heureux"...&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;session_id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;I am happy!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Watson analyse le texte et renvoie l'information suivante :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;session_id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;I am happy!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;session_sentiment&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;overall&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.879998&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;positive&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
         &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;count&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;avg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.879998&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;negative&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
         &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;count&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;avg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;neutral&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
         &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;count&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;avg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
   &lt;span class="p"&gt;},&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;score&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.88006828&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Les marques consacrent déjà des sommes importantes à l'analyse des sentiments du marché. À mesure que ces systèmes deviendront plus intelligents, plus robustes et plus automatisés, ils seront en mesure de mieux comprendre le public à moindre coût.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Commerce électronique&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Bien que les achats en ligne aient complètement changé la façon dont nous achetons des produits, il manque un élément essentiel aux magasins de type "brique et mortier" : des employés serviables. À l'échelle à laquelle les boutiques en ligne opèrent, il n'est pas économiquement viable d'avoir des personnes qui s'occupent du chat en direct.&lt;/p&gt;

&lt;p&gt;C'est pourquoi de nombreux magasins en ligne se tournent vers des assistants d'achat intelligents pour optimiser l'expérience, aider les clients à répondre à leurs questions, leur faire des recommandations et même les aider à passer à la caisse.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://wersm.com/nordstrom-ruled-holidays-with-its-amazing-chatbot/" rel="noopener noreferrer"&gt;Nordstrom a dominé les saisons des fêtes précédentes&lt;/a&gt; avec son chatbot Messenger, qui allait au-delà de simples questions et réponses prédéfinies et utilisait des services cognitifs pour comprendre réellement ce que le client recherchait et l'aider si nécessaire. Il proposait des recommandations de cadeaux et pouvait même aider à remplir la commande.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2Fasset-17suaysk1qa1j6t%2F720950f250125abd6e6be3c136c6306b%2Fnordstrombot.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2Fasset-17suaysk1qa1j6t%2F720950f250125abd6e6be3c136c6306b%2Fnordstrombot.png" title="nordstrombot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Les chatbots nous évitent également le redoutable appel téléphonique au service clientèle, où l'on doit attendre une heure pour qu'un représentant s'occupe d'un simple problème. Amazon a déployé des chatbots capables de résoudre les problèmes mineurs que rencontrent la plupart des clients lorsqu'ils ont besoin d'aide pour passer leur commande.&lt;/p&gt;

&lt;p&gt;Maintenant que nous avons examiné quelques exemples d'intelligence dans le monde réel d'aujourd'hui, projetons-nous dans l'avenir et voyons comment les services cognitifs changeront notre monde à l'avenir.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Villes intelligentes&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Les villes du futur s'appuieront sur divers services intelligents intégrés pour les rendre plus sûres, plus efficaces et plus respectueuses de l'environnement. La reconnaissance d'images, la vision par ordinateur et les API de vision joueront un rôle essentiel dans cette transformation, en traitant et en agissant sur les images dans l'espace urbain.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;L'agriculture&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;La population mondiale continue de croître et nourrir ces milliards de personnes sera un défi considérable dans les années à venir. Les services cognitifs joueront un rôle essentiel dans la gestion des champs et des usines, nous permettant de prendre des décisions intelligentes et de contrôler les ressources avec une précision jamais atteinte auparavant.&lt;/p&gt;

&lt;p&gt;Les fermes intelligentes et l'IdO intégreront autant de points de données précieux que possible pour prendre des décisions agricoles intelligentes, même celles qui semblent contre-intuitives. Par exemple, en agrégeant les données météorologiques en temps réel, les données des capteurs à distance et les performances historiques, les services cognitifs peuvent perfectionner le plan d'irrigation individuel et le mettre à jour en fonction des circonstances uniques de chaque jour.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Sécurité des données&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Alors que nous sommes de plus en plus connectés et que nos vies numériques prennent le pas sur nos vies physiques, la confidentialité et la sécurité des données se transforment de quelque chose dont nous sommes vaguement conscients en une menace personnelle déconcertante et omniprésente.&lt;/p&gt;

&lt;p&gt;Les réglementations et les règles - HIPAA, GDPR, SOC II - sont un moyen de s'assurer que les entreprises et les organisations ont mis en place les garde-fous appropriés. La mise en œuvre détaillée de ces réglementations complexes peut s'avérer lourde à gérer, et c'est là que l'apprentissage automatique entre en jeu.&lt;/p&gt;

&lt;p&gt;Les services cognitifs peuvent être entraînés à comprendre et à donner un sens aux règles et aux réglementations, puis à suggérer des moyens de se mettre en conformité. Les services cognitifs permettent de fournir des informations précieuses sur la sécurité des données, depuis les règles et lois pertinentes jusqu'à la modération des contenus.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Soins de santé&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;L'innovation progresse généralement plus lentement dans le secteur de la santé que dans d'autres secteurs pour plusieurs raisons, notamment les marges étroites, la lourdeur de la réglementation et le cloisonnement de la recherche et du développement. Les services cognitifs offrent la possibilité de lever les obstacles à l'innovation et d'améliorer le système de prestation, depuis les organisations jusqu'aux patients.&lt;/p&gt;

&lt;p&gt;Dans le secteur des soins de santé, la prise de décision se fait généralement de manière cloisonnée, patient par patient. Les services cognitifs, en revanche, analysent et agissent sur la base d'une vision globale des facteurs qui influencent la santé : le statut socio-économique, l'environnement, l'accès aux soins de santé, etc. Les services cognitifs peuvent recommander au médecin des soins de meilleure qualité et plus ciblés, y compris des programmes de santé et de bien-être.&lt;/p&gt;

&lt;p&gt;Les services cognitifs peuvent favoriser l'intégration et la connexion des systèmes existants au sein des organismes de soins de santé et mettre au jour des informations essentielles. Soudainement capables d'agréger des données et de relier les besoins des parties prenantes, les organisations peuvent fournir de meilleurs soins tout en fonctionnant de manière plus efficace.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;L'intelligence maintenant&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Cet article n'a décrit qu'une infime partie de la manière dont les services cognitifs vont changer notre façon de concevoir l'entreprise et le rôle que les applications peuvent jouer. Dans le passé, les logiciels suivaient des instructions. Avec les services cognitifs, les solutions peuvent s'adapter, évoluer et accomplir des choses qui auraient pu sembler impossibles il y a seulement quelques années. Nous ne pouvons pas voir toutes les implications, mais d'après ce que nous savons, il ne fait aucun doute que l'impact sur les entreprises sera profond, positif et présent avant même que vous ne vous en rendiez compte.&lt;/p&gt;

&lt;h1&gt;
  
  
  Comment PubNub peut-il vous aider ?
&lt;/h1&gt;

&lt;p&gt;Cet article a été publié à l'origine sur &lt;a href="https://www.pubnub.com/blog/the-many-uses-of-cognitive-services/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;PubNub.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notre plateforme aide les développeurs à construire, fournir et gérer l'interactivité en temps réel pour les applications web, les applications mobiles et les appareils IoT.&lt;/p&gt;

&lt;p&gt;La base de notre plateforme est le réseau de messagerie en temps réel le plus grand et le plus évolutif de l'industrie. Avec plus de 15 points de présence dans le monde, 800 millions d'utilisateurs actifs mensuels et une fiabilité de 99,999 %, vous n'aurez jamais à vous soucier des pannes, des limites de concurrence ou des problèmes de latence causés par les pics de trafic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Découvrez PubNub
&lt;/h2&gt;

&lt;p&gt;Découvrez le &lt;a href="https://www.pubnub.com/tour/introduction/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Live Tour&lt;/a&gt; pour comprendre les concepts essentiels de chaque application alimentée par PubNub en moins de 5 minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  S'installer
&lt;/h2&gt;

&lt;p&gt;Créez un &lt;a href="https://admin.pubnub.com/signup/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;compte PubNub&lt;/a&gt; pour un accès immédiat et gratuit aux clés PubNub.&lt;/p&gt;

&lt;h2&gt;
  
  
  Commencer
&lt;/h2&gt;

&lt;p&gt;La &lt;a href="https://www.pubnub.com/docs?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;documentation PubNub&lt;/a&gt; vous permettra de démarrer, quel que soit votre cas d'utilisation ou votre &lt;a href="https://www.pubnub.com/docs?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;SDK&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Suivi en temps réel des commits sur le tableau de bord GitHub</title>
      <dc:creator>PubNub Developer Relations</dc:creator>
      <pubDate>Thu, 30 May 2024 19:46:34 +0000</pubDate>
      <link>https://forem.com/pubnub-fr/suivi-en-temps-reel-des-commits-sur-le-tableau-de-bord-github-p51</link>
      <guid>https://forem.com/pubnub-fr/suivi-en-temps-reel-des-commits-sur-le-tableau-de-bord-github-p51</guid>
      <description>&lt;p&gt;Dans le domaine du développement logiciel, les graphiques C3.js en temps réel offrent un moyen efficace de surveiller l'activité au sein de votre organisation. Pour les équipes d'ingénierie, l'une des métriques à suivre est celle des commits GitHub. En explorant ce sujet, ce billet de blogue fournit un tutoriel pour vous guider à travers le processus d'utilisation de l'API de GitHub pour récupérer et afficher les données des commits GitHub dans un graphique interactif en temps réel. Nous utiliserons la puissance de HTML, Javascript, CSS, et utiliserons PubNub pour créer le tableau de bord GitHub et streamer les données de commit, tandis que C3.js aidera à la visualisation.&lt;/p&gt;

&lt;p&gt;Pour en savoir plus sur les &lt;a href="https://pubnub.com/blog/building-realtime-live-updating-animated-graphs-c3-js/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;graphiques C3.js en temps réel, nous avons un excellent tutoriel&lt;/a&gt;. Maintenant, plongeons dans le vif du sujet !&lt;/p&gt;

&lt;h2&gt;
  
  
  Comment créer un tableau de bord GitHub en temps réel
&lt;/h2&gt;

&lt;p&gt;Créer un tableau de bord GitHub en temps réel implique de se connecter à diverses sources de données telles que le dépôt GitHub et de s'occuper de certaines dépendances nécessaires. Soyez conscient des mesures de cybersécurité nécessaires, comme le codage sécurisé et le cryptage des données. Il est impératif de suivre les protocoles de sécurité standard de l'industrie.&lt;/p&gt;

&lt;p&gt;Voici un guide étape par étape :&lt;/p&gt;

&lt;h3&gt;
  
  
  Ajouter un Webhook GitHub
&lt;/h3&gt;

&lt;p&gt;Pour configurer le webhook, suivez les étapes suivantes :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Créez un dépôt GitHub ou utilisez un dépôt git existant.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cliquez sur "Paramètres" sur le côté droit de la page.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cliquez sur "&lt;a href="https://www.pubnub.com/learn/glossary/what-is-a-webhook/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;Webhooks&lt;/a&gt;" sur le côté gauche de la page.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cliquez sur "Add Webhook" en haut à droite.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;GitHub vous demandera votre mot de passe, entrez-le.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sous 'Payload URL', entrez &lt;strong&gt;: &lt;a href="http://pubnub-git-hook.herokuapp.com/github/ORG-NAME/TEAM-NAME"&gt;http://pubnub-git-hook.herokuapp.com/github/ORG-NAME/TEAM-NAME&lt;/a&gt;.&lt;/strong&gt; Remplacez ORG-NAME par le nom de votre organisation et TEAM-NAME par l'équipe qui contrôle le repo.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--w2capVyV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/3ClKsiJfxkUjxO6wIEgADI/51ef64eb2a41df60ba14db62255e2c70/Screenshot_2024-05-30_at_3.09.23_PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--w2capVyV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/3ClKsiJfxkUjxO6wIEgADI/51ef64eb2a41df60ba14db62255e2c70/Screenshot_2024-05-30_at_3.09.23_PM.png" title="Github Webhook Settings" width="800" height="525"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Charger le tableau de bord visuel
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://pubnub.github.io/git-commits-ui/"&gt;Visitez cette page&lt;/a&gt;. Vous verrez une liste de tous les commits envoyés à travers le tableau de bord PubNub - super ! Lorsque vous envoyez un de vos commits sur GitHub, vous devriez voir un message apparaître sur votre tableau de bord des commits GitHub en quelques dizaines de millisecondes, et les graphiques se mettront à jour en temps réel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comment nous avons construit le tableau de bord des livraisons Github
&lt;/h2&gt;

&lt;p&gt;Le tableau de bord est un mélange de GitHub, du réseau de flux de données PubNub et des visualisations graphiques D3 alimentées par &lt;a href="https://c3js.org/"&gt;C3.js&lt;/a&gt;. Lorsqu'un commit est poussé sur GitHub, les métadonnées du commit sont postées sur une petite instance Heroku qui les publie sur le réseau PubNub. &lt;a href="https://pubnub.github.io/git-commits-ui/"&gt;Nous hébergeons une page de tableau de bord sur les pages GitHub.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Une fois que notre instance Heroku reçoit les données de validation de GitHub, elle publie un résumé de ces données sur PubNub en utilisant les clés publiques de publication/abonnement sur le canal &lt;strong&gt;pubnub-git&lt;/strong&gt;. &lt;a href="https://www.pubnub.com/docs/console/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;Vous pouvez surveiller le canal pubnub-git via notre console de développement ici&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Voici un exemple de message :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt; 
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;drnugent&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;avatar_url&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://avatars.githubusercontent.com/u/857270?v=3&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;num_commits&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;team&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;team-pubnub&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;org&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;pubnub&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;time&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1430436692806&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;repo_name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;drnugent/test&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;La deuxième partie de la magie se produit lorsque le tableau de bord reçoit ces informations par le biais de son &lt;strong&gt;callback subscribe&lt;/strong&gt;. Si vous regardez la source du tableau de bord, vous verrez ce code :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;pubnub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;subscribe&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;channel&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;pubnub-git&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;displayLiveMessage&lt;/span&gt;

&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cet appel subscribe garantit que la fonction JavaScript &lt;strong&gt;displayLiveMessage()&lt;/strong&gt; est appelée chaque fois qu'un message est reçu sur le canal &lt;strong&gt;pubnub-git&lt;/strong&gt;. displayLiveMessage() ajoute la notification push de commit en haut du journal et met à jour les graphiques de visualisation C3.&lt;/p&gt;

&lt;p&gt;Mais attendez, comment le tableau de bord est-il alimenté lorsqu'il est chargé pour la première fois ?&lt;/p&gt;

&lt;h2&gt;
  
  
  Tirer profit de l'API de stockage et de lecture de PubNub pour votre tableau de bord
&lt;/h2&gt;

&lt;p&gt;PubNub conserve un enregistrement de chaque message envoyé, et fournit aux développeurs un moyen d'accéder à ces messages sauvegardés avec l'&lt;a href="https://www.pubnub.com/products/pubnub-platform/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;API Storage &amp;amp; Playback (History&lt;/a&gt;). Plus profondément dans le tableau de bord web, vous verrez le code suivant :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;displayMessages&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;displayMessage&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="nx"&gt;pubnub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;history&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;channel&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;pubnub-git&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;displayMessages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;count&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Il s'agit d'une requête visant à récupérer les 1 000 derniers messages envoyés sur le canal pubnub-git. Ainsi, même si le tableau de bord web était hors ligne lorsque ces messages ont été envoyés, il est capable de les récupérer et d'utiliser ces données pour alimenter le tableau de bord comme s'il était en ligne en permanence.&lt;/p&gt;

&lt;p&gt;Cette fonctionnalité est particulièrement utile lorsqu'il s'agit d'appareils dont la connectivité est intermittente ou peu fiable, comme les applications mobiles sur les réseaux cellulaires ou les voitures connectées. Grâce au réseau PubNub, notre tableau de bord de visualisation ne nécessite pas de backend pour stocker l'état de l'application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Création de votre propre tableau de bord GitHub
&lt;/h2&gt;

&lt;p&gt;Pour commencer à construire votre tableau de bord Github, prenez le dépôt Git Commit UI sur github.com et suivez le README pour les instructions d'installation. Les demandes d'extraction sont les bienvenues dans le cadre de la collaboration avec la communauté open source.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fL31VUXB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/asset-17suaysk1qa1huv/16fe7d9c1c2eb1d0d182c33c37a40f57/687474703a2f2f692e696d6775722e636f6d2f4d524b32304b622e676966.gif%3Fw%3D700%26h%3D550" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fL31VUXB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://www.pubnub.com/cdn/3prze68gbwl1/asset-17suaysk1qa1huv/16fe7d9c1c2eb1d0d182c33c37a40f57/687474703a2f2f692e696d6775722e636f6d2f4d524b32304b622e676966.gif%3Fw%3D700%26h%3D550" title="687474703a2f2f692e696d6775722e636f6d2f4d524b32304b622e676966" width="700" height="274"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tendances et développements futurs en matière de tableaux de bord en temps réel
&lt;/h2&gt;

&lt;p&gt;Il est essentiel de garder un œil sur les dernières tendances et évolutions en matière de tableaux de bord en temps réel et de technologies connexes. Cela inclut les websockets pour la transmission de données en temps réel, l'utilisation de notifications pour un aperçu immédiat, et l'utilisation de tableaux de bord en temps réel dans divers flux de travail.&lt;/p&gt;

&lt;h2&gt;
  
  
  L'expérience PubNub
&lt;/h2&gt;

&lt;p&gt;PubNub a aidé de nombreux clients à réussir leurs applications en temps réel. Par exemple, le système de notifications en temps réel de LinkedIn...&lt;/p&gt;

&lt;h2&gt;
  
  
  S'installer
&lt;/h2&gt;

&lt;p&gt;Créez un compte PubNub pour obtenir un accès immédiat et gratuit aux clés PubNub. Les dernières fonctionnalités disponibles dans votre compte PubNub incluent ...&lt;/p&gt;

&lt;h2&gt;
  
  
  Démarrer
&lt;/h2&gt;

&lt;p&gt;Notre &lt;a href="https://www.pubnub.com/docs?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;documentation&lt;/a&gt; complète &lt;a href="https://www.pubnub.com/docs?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;sur PubNub&lt;/a&gt; vous permettra d'être opérationnel en un rien de temps, quel que soit votre cas d'utilisation ou votre &lt;a href="https://www.pubnub.com/docs?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;SDK&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;PubNub offre une plateforme conviviale pour améliorer votre expérience utilisateur. Nos services sont conçus en gardant à l'esprit les développeurs pour un processus d'intégration transparent.&lt;/p&gt;

&lt;p&gt;N'oubliez pas que nous sommes là pour rendre votre parcours de développement en temps réel plus fluide et plus efficace. Configurez l'URL de votre charge utile et commençons !&lt;/p&gt;

&lt;p&gt;La documentation officielle et les sources faisant autorité peuvent être référencées tout au long de l'article de blog pour confirmer la validité de l'information.&lt;/p&gt;

&lt;h1&gt;
  
  
  Comment PubNub peut-il vous aider ?
&lt;/h1&gt;

&lt;p&gt;Cet article a été publié à l'origine sur &lt;a href="https://www.pubnub.com/blog/tracking-realtime-github-dashboard-commits/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;PubNub.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notre plateforme aide les développeurs à construire, livrer et gérer l'interactivité en temps réel pour les applications web, les applications mobiles et les appareils IoT.&lt;/p&gt;

&lt;p&gt;La base de notre plateforme est le réseau de messagerie en temps réel le plus grand et le plus évolutif de l'industrie. Avec plus de 15 points de présence dans le monde, 800 millions d'utilisateurs actifs mensuels et une fiabilité de 99,999 %, vous n'aurez jamais à vous soucier des pannes, des limites de concurrence ou des problèmes de latence causés par les pics de trafic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Découvrez PubNub
&lt;/h2&gt;

&lt;p&gt;Découvrez le &lt;a href="https://www.pubnub.com/tour/introduction/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;Live Tour&lt;/a&gt; pour comprendre les concepts essentiels de chaque application alimentée par PubNub en moins de 5 minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  S'installer
&lt;/h2&gt;

&lt;p&gt;Créez un &lt;a href="https://admin.pubnub.com/signup/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;compte PubNub&lt;/a&gt; pour un accès immédiat et gratuit aux clés PubNub.&lt;/p&gt;

&lt;h2&gt;
  
  
  Commencer
&lt;/h2&gt;

&lt;p&gt;La &lt;a href="https://www.pubnub.com/docs?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;documentation PubNub&lt;/a&gt; vous permettra de démarrer, quel que soit votre cas d'utilisation ou votre &lt;a href="https://www.pubnub.com/docs?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;SDK&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Comment modérer en toute sécurité le chat et les utilisateurs avec BizOps Workspace</title>
      <dc:creator>PubNub Developer Relations</dc:creator>
      <pubDate>Thu, 23 May 2024 10:15:13 +0000</pubDate>
      <link>https://forem.com/pubnub-fr/comment-moderer-en-toute-securite-le-chat-et-les-utilisateurs-avec-bizops-workspace-51ee</link>
      <guid>https://forem.com/pubnub-fr/comment-moderer-en-toute-securite-le-chat-et-les-utilisateurs-avec-bizops-workspace-51ee</guid>
      <description>&lt;p&gt;Cet article fait partie d'une série d'articles qui traitent des capacités de gestion des données de PubNub, connues collectivement sous le nom de &lt;a href="https://pubnub.com/docs/bizops-workspace/basics?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;BizOps Workspace&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://pubnub.com/how-to/manage-users-and-channels-with-bizops-workspace/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Comment gérer les utilisateurs et les canaux avec BizOps Workspace&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://www.pubnub.com/how-to/monitor-and-moderate-conversations-with-bizops-workspace/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Comment surveiller et modérer les conversations avec BizOps Workspace&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  Comment modérer en toute sécurité les conversations et les utilisateurs avec l'espace de travail BizOps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;BizOps Workspace est un ensemble d'outils qui vous aide à gérer votre application. Cet article développe l'article précédent "&lt;a href="https://www.pubnub.com/how-to/monitor-and-moderate-conversations-with-bizops-workspace/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Comment surveiller et modérer les conversations avec BizOps Workspace&lt;/a&gt;" pour montrer une application de chat sécurisée de bout en bout avec des capacités de modération manuelle, c'est-à-dire la capacité de surveiller les conversations en temps réel et de mettre en sourdine ou de bannir les utilisateurs.&lt;/p&gt;

&lt;p&gt;Bien que cet article puisse être lu seul, je recommande fortement de lire l'article précédent "&lt;a href="https://www.pubnub.com/how-to/monitor-and-moderate-conversations-with-bizops-workspace/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Comment surveiller et modérer les conversations avec BizOps Workspace&lt;/a&gt;" pour mieux comprendre le contexte des concepts discutés ici.&lt;/p&gt;

&lt;h2&gt;
  
  
  Qu'est-ce que le moniteur de canaux ?
&lt;/h2&gt;

&lt;p&gt;Le moniteur de canaux permet aux modérateurs de chats de regarder des aperçus en direct des conversations qui se déroulent en temps réel sur plusieurs canaux. Si le modérateur repère quelque chose d'inquiétant, comme un utilisateur qui se comporte mal ou des messages offensants, il peut agir immédiatement pour résoudre le problème.&lt;/p&gt;

&lt;p&gt;Le modérateur dispose d'une grande souplesse quant aux mesures à prendre :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Observer un utilisateur sans limiter ses droits d'accès&lt;/li&gt;
&lt;li&gt;  Modifier ou supprimer le message incriminé&lt;/li&gt;
&lt;li&gt;  Limiter la capacité de l'utilisateur à publier des messages&lt;a href="https://pubnub.com/docs/bizops-workspace/channel-monitor#mute?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;(mettre en sourdine&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;  Limiter la capacité de l'utilisateur à lire ou à publier des messages&lt;a href="https://pubnub.com/docs/bizops-workspace/channel-monitor#ban?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;(interdiction&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Toutes les fonctionnalités de la fonction "Surveiller" sont manuelles : examen manuel des messages, mise en sourdine manuelle des utilisateurs, etc. Cet article ne traite pas de la modération automatique.&lt;/p&gt;

&lt;p&gt;Pour utiliser le Channel Monitor, vous devez avoir plusieurs fonctionnalités activées sur votre clé PubNub, en particulier le &lt;a href="https://www.pubnub.com/docs/general/metadata/channel-metadata?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;contexte de l'application&lt;/a&gt; et la &lt;a href="https://www.pubnub.com/docs/general/storage?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;persistance des messages&lt;/a&gt; au minimum. Pour plus de détails, veuillez consulter la section 'Keyset requirements for the Channel Monitor' dans l'&lt;a href="https://www.pubnub.com/how-to/monitor-and-moderate-conversations-with-bizops-workspace/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;article précédent&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Qu'est-ce que le PubNub Access Manager ?
&lt;/h2&gt;

&lt;p&gt;Les*&lt;em&gt;développeurs doivent se prémunir contre les utilisateurs qui tentent de contourner leur système de modération&lt;/em&gt;*, ce qui est possible grâce au gestionnaire d'accès PubNub.&lt;/p&gt;

&lt;p&gt;Le &lt;a href="https://www.pubnub.com/docs/general/security/access-control?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;gestionnaire&lt;/a&gt; d'accès vous permet de définir un ensemble de règles qui décrivent les permissions de l'utilisateur (ou des utilisateurs) spécifié(s) et les actions qu'il(s) peut(vent) effectuer sur les ressources spécifiées. Par exemple :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  L'utilisateur dont l'ID est &lt;code&gt;123&lt;/code&gt; a le droit de lire et d'écrire sur le canal &lt;code&gt;456&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;  Tous les utilisateurs dont l'ID correspond à l'expression régulière &lt;code&gt;user-*&lt;/code&gt; peuvent lire sur n'importe quel canal dont l'ID correspond à l'expression régulière &lt;code&gt;global-*&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;  L'utilisateur ayant l'ID &lt;code&gt;123&lt;/code&gt; a le droit de mettre à jour les métadonnées du canal (c'est-à-dire le contexte de l'application).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pour une liste complète des permissions, veuillez vous référer à la documentation à l'&lt;a href="https://www.pubnub.com/docs/general/security/access-control#permissions?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;adresse https://www.pubnub.com/docs/general/security/access-control#permissions.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;PubNub Access Manager est basé sur des jetons, et la façon la plus simple de le décrire est de parcourir le flux d'autorisation tel qu'il est montré dans la &lt;a href="https://www.pubnub.com/docs/general/security/access-control?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;documentation&lt;/a&gt; et de fournir un contexte supplémentaire sur la façon dont ce flux est lié à la modération :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2F6VXlbbCqQz8X8GKG1yU7Xc%2Fa8597a87f1bf8a701737935141b45918%2Fpam-v3-authorization-flow-d3c28108b6948645d029e42097d1b30e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2F6VXlbbCqQz8X8GKG1yU7Xc%2Fa8597a87f1bf8a701737935141b45918%2Fpam-v3-authorization-flow-d3c28108b6948645d029e42097d1b30e.png" title="How-to - BizOps Workspace Secure Chat - Image 01" alt="Access Manager workflow"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Tentative de connexion&lt;/strong&gt;. Votre client s'authentifie auprès de votre serveur pour connecter vos utilisateurs à votre application. Après cette étape, votre serveur est certain de parler à un utilisateur enregistré de l'application et de savoir qui il est. Le client demande un jeton d'authentification PubNub Access Manager dans le cadre de son initialisation.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Demande d'autorisation&lt;/strong&gt;. Le serveur traite la demande de jeton du client en invoquant l'API SDK '&lt;a href="https://www.pubnub.com/docs/sdks/javascript/api-reference/access-manager#grant-token?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;grantToken()&lt;/a&gt;'. Quelques points à noter à propos de cette API : Elle ne peut être appelée qu'avec la &lt;strong&gt;clé secrète&lt;/strong&gt; PubNub et, par conséquent, ne peut être invoquée qu'à partir d'un serveur ; elle est disponible pour tous nos SDK côté serveur ; et cette API acceptera des objets JSON pour définir les ressources et les permissions qui définissent l'accès de l'utilisateur (ou des utilisateurs).&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Jeton retourné&lt;/strong&gt;. PubNub accorde les permissions demandées à l'utilisateur ou aux utilisateurs demandés et renvoie un jeton d'authentification au serveur.&lt;/li&gt;
&lt;li&gt; Jeton*&lt;em&gt;transmis&lt;/em&gt;*. Votre serveur renvoie ensuite le jeton d'authentification au client demandeur initial.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Jeton défini&lt;/strong&gt;. Le client peut spécifier ce jeton d'authentification lors de son initialisation ou à n'importe quel moment du cycle de vie de l'application grâce à la méthode &lt;a href="https://www.pubnub.com/docs/sdks/javascript/api-reference/access-manager#set-token?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;setToken()&lt;/a&gt;. Il est essentiel de pouvoir mettre à jour le jeton à tout moment car les jetons expirent, mais un client devra également demander un nouveau jeton si le Channel Monitor met à jour ses autorisations (c'est-à-dire s'il est mis en sourdine ou banni).&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Demande d'API autorisée&lt;/strong&gt;. Tout appel ultérieur à PubNub sera désormais considéré comme autorisé. PubNub autorisera ou refusera toute demande d'API en fonction des permissions accordées à l'étape 2 et de la validité du jeton du client.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A quoi ressemble une solution de modération sécurisée ?
&lt;/h2&gt;

&lt;p&gt;Vers la fin de l'&lt;a href="https://www.pubnub.com/how-to/monitor-and-moderate-conversations-with-bizops-workspace/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;article précédent&lt;/a&gt;, j'ai montré une démonstration de ce à quoi ressemblerait l'inhibition ou le bannissement du côté du client. Le SDK Chat contient des &lt;a href="https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/moderation#listen-to-moderation-events?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;événements de modération&lt;/a&gt; qui indiquent à un client s'il a été mis en sourdine ou banni ; cependant, à part la mise à jour de l'interface utilisateur, cela n &lt;strong&gt;'empêche pas le client de continuer à envoyer des messages même s'il a été mis en sourdine ou banni&lt;/strong&gt;. Pour sécuriser la mise en sourdine ou le bannissement du client, vous devez révoquer les autorisations existantes du gestionnaire d'accès et lui en accorder de nouvelles pour refléter son nouveau statut de mise en sourdine ou de bannissement.&lt;/p&gt;

&lt;p&gt;Prenons le scénario suivant : un utilisateur est mis en sourdine du canal "Musiques" :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2F2CHx5c361f7BWbrHAbI99t%2F220aebf2f99c53ba43b91053a2902d28%2FSecure_chat_sequence_diagram.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2F2CHx5c361f7BWbrHAbI99t%2F220aebf2f99c53ba43b91053a2902d28%2FSecure_chat_sequence_diagram.png" title="How-to - BizOps Workspace Secure Chat - Image 02" alt="Secure chat sequence diagram"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Un utilisateur peut accéder à deux canaux, "films" et "comédies musicales", mais l'administrateur souhaite lui interdire l'accès au seul canal "comédies musicales".&lt;/li&gt;
&lt;li&gt; Le modérateur coupe le son de l'utilisateur à l'aide du moniteur de canaux. En clair, il invoque l'API "&lt;a href="https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/moderation#method-signature-1?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;setRestrictions()&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; L'application serveur reçoit la notification "mute" par le biais d'un &lt;a href="https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/moderation#listen-to-moderation-events?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;événement de modération&lt;/a&gt; et &lt;a href="https://www.pubnub.com/docs/sdks/javascript/api-reference/access-manager#revoke-token?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;révoque&lt;/a&gt; le jeton d'accès existant de l'utilisateur.&lt;/li&gt;
&lt;li&gt; L'application cliente reçoit la notification "mute" associée au canal "musicals" par le biais d'un événement de &lt;a href="https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/moderation#listen-to-moderation-events?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;modération&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt; L'application met à jour son interface utilisateur pour empêcher l'envoi d'autres messages. L'utilisateur peut contourner ce changement d'interface en modifiant le code JavaScript de la page, mais toute tentative d'envoi de messages échouera puisque son jeton d'authentification a été révoqué.&lt;/li&gt;
&lt;li&gt; L'application demande un nouveau jeton d'authentification au serveur, comme décrit dans la section Gestionnaire d'accès ci-dessus. Le nouveau jeton d'authentification reflète les nouvelles autorisations de l'utilisateur, qui n'a plus que l'accès "lecture" au canal "comédies musicales".&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;L'&lt;a href="https://www.pubnub.com/how-to/monitor-and-moderate-conversations-with-bizops-workspace/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;article précédent&lt;/a&gt; décrivait les "Composants d'une solution de modération" et dressait la liste des API disponibles pour le client et le serveur à l'aide du graphique ci-dessous. Les API dont il est question dans les étapes ci-dessus sont également indiquées dans ce graphique.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2F50rOVZsxRPDbpl2azfmGCx%2F76842024f05c290e76ef9169f89994ad%2Fmoderation.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2F50rOVZsxRPDbpl2azfmGCx%2F76842024f05c290e76ef9169f89994ad%2Fmoderation.png" title="How-to - BizOps Workspace Channel Monitor - Image 09" alt="Table showing components of a chat moderation solution"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  L'exemple d'application Chat SDK
&lt;/h2&gt;

&lt;p&gt;La même équipe d'ingénieurs chargée de développer le Channel Monitor et le Chat SDK a également créé un exemple d'application écrit en React Native qui utilise le Chat SDK.&lt;/p&gt;

&lt;p&gt;L'exemple montre les capacités du SDK et les meilleures pratiques pour développer une application de chat réaliste et complète à l'aide de PubNub. Il est open source et fait partie du même dépôt GitHub qui contient le Chat SDK sous &lt;a href="https://github.com/pubnub/js-chat/tree/master/samples/react-native-group-chat" rel="noopener noreferrer"&gt;/samples/react-native-group-chat&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2F3LN1pHPw77sxb284B3ae3d%2F51cccbcd3b841bcb5dad1d3a3f0ced49%2Ftemp-chat-sdk-mobile-demo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2F3LN1pHPw77sxb284B3ae3d%2F51cccbcd3b841bcb5dad1d3a3f0ced49%2Ftemp-chat-sdk-mobile-demo.png" title="How-to - BizOps Workspace Channel Monitor - Image 02" alt="Sample app running on iOS and Android"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cette application a récemment été mise à jour pour demander des jetons à un serveur Access Manager et pour demander un nouveau jeton lorsque les permissions de l'utilisateur changent, c'est-à-dire lorsqu'il est banni ou mis en sourdine d'un canal. Cette amélioration a été apportée depuis la rédaction de l'&lt;a href="https://www.pubnub.com/how-to/monitor-and-moderate-conversations-with-bizops-workspace/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;article précédent&lt;/a&gt;, alors assurez-vous d'obtenir la dernière source sur &lt;a href="https://github.com/pubnub/js-chat/tree/master/samples/react-native-group-chat" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. Au moment de la rédaction de cet article, l'ID du commit git le plus récent est &lt;a href="https://github.com/pubnub/js-chat/tree/ae9dfa0/samples/react-native-group-chat" rel="noopener noreferrer"&gt;ae9dfa0&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sécuriser la mise en sourdine et le bannissement des utilisateurs : Démonstration à l'aide de l'exemple d'application
&lt;/h2&gt;

&lt;p&gt;Cette section décrit comment mettre en œuvre notre démo de bout en bout, en montrant la modération sécurisée du point de vue du client et du serveur.&lt;/p&gt;

&lt;h3&gt;
  
  
  Créer un jeu de clés PubNub
&lt;/h3&gt;

&lt;p&gt;Je recommande de créer un nouveau jeu de clés PubNub pour exécuter cette démo comme suit :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Connectez-vous au &lt;a href="https://admin.pubnub.com/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;portail d'administration&lt;/a&gt; et créez une nouvelle application ou un nouveau jeu de clés dans une application existante. Si nécessaire, vous pouvez trouver des instructions étape par étape sur notre page &lt;a href="https://www.pubnub.com/how-to/admin-portal-create-keys/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Comment créer des jeux de clés sur le portail d'administration&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt; Sur la page des jeux de clés, activez les options de configuration suivantes. Vous pouvez accepter les valeurs par défaut, sauf indication contraire :&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://www.pubnub.com/docs/general/metadata/channel-metadata?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;App Context&lt;/a&gt;. Il stocke des métadonnées sur vos canaux et vos utilisateurs et est décrit plus en détail dans l'article précédent sur la&lt;a href="https://pubnub.com/how-to/manage-users-and-channels-with-bizops-workspace/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;"Gestion des utilisateurs et des canaux&lt;/a&gt;". Activez également les &lt;code&gt;événements de métadonnées d'utilisateur&lt;/code&gt;, les &lt;code&gt;événements de métadonnées de canal&lt;/code&gt; et les &lt;code&gt;événements d'adhésion&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://www.pubnub.com/docs/general/storage?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Persistance des messages&lt;/a&gt;. Ceci stocke l'historique de vos messages avec PubNub afin que l'administrateur puisse revoir et éditer les conversations.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://www.pubnub.com/docs/general/security/access-control?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Gestionnaire d'accès&lt;/a&gt;. Empêche l'accès non autorisé aux données et est nécessaire pour créer une solution de modération sécurisée.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://www.pubnub.com/docs/general/presence/overview?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Présence&lt;/a&gt;. Utilisé pour savoir si un utilisateur est en ligne ou hors ligne.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Enregistrez vos modifications.&lt;/p&gt;

&lt;p&gt;Vous aurez besoin de la &lt;code&gt;clé de publication&lt;/code&gt;, de la &lt;code&gt;clé d'abonnement&lt;/code&gt; et de la &lt;code&gt;clé secrète&lt;/code&gt; dans les étapes suivantes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Créer l'exemple d'application
&lt;/h3&gt;

&lt;p&gt;Comme décrit précédemment, l'application Chat SDK Sample est une application client multiplateforme écrite en React Native à l'aide du framework Expo.&lt;/p&gt;

&lt;p&gt;Clonez et construisez l'application exemple en suivant les instructions données dans &lt;a href="https://github.com/pubnub/js-chat/tree/ae9dfa0/samples/react-native-group-chat#readme" rel="noopener noreferrer"&gt;le readme de l'application&lt;/a&gt;. En particulier, assurez-vous que les prérequis sont installés, y compris yarn et Node.js. Le ReadMe parle d'utiliser XCode et iOS, mais vous pouvez également exécuter l'application sur un émulateur Android. Au moment où j'écris ces lignes, l'ID du commit git le plus récent est &lt;a href="https://github.com/pubnub/js-chat/tree/ae9dfa0/samples/react-native-group-chat" rel="noopener noreferrer"&gt;ae9dfa0&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Lorsque vous fournissez les clés Pub/Sub, utilisez les clés que vous avez générées à l'étape précédente. Si vous n'incluez pas les clés dans le fichier &lt;code&gt;.env&lt;/code&gt;, l'application utilisera par défaut des clés de &lt;code&gt;démonstration&lt;/code&gt;; vous pouvez désactiver cette logique à l'&lt;a href="https://github.com/pubnub/js-chat/blob/ae9dfa0/samples/react-native-group-chat/App.tsx#L60" rel="noopener noreferrer"&gt;adresse https://github.com/pubnub/js-chat/blob/ae9dfa0/samples/react-native-group-chat/App.tsx#L60&lt;/a&gt; pour éviter toute confusion.&lt;/p&gt;

&lt;p&gt;Exécutez l'application. Le ReadMe vous indiquera de lancer &lt;code&gt;yarn ios&lt;/code&gt;, mais vous pouvez également lancer &lt;code&gt;yarn android&lt;/code&gt; ou &lt;code&gt;yarn run start&lt;/code&gt;, ce dernier vous donnant un menu interactif.&lt;/p&gt;

&lt;p&gt;Lorsque vous vous connectez, vous devriez voir l'avertissement suivant dans votre console :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2F7jc5aAT6ohAvQdvszqUerY%2F36987e68ee4386813332e69c0d1d6ab0%2FFailed_to_obtain_auth_token.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2F7jc5aAT6ohAvQdvszqUerY%2F36987e68ee4386813332e69c0d1d6ab0%2FFailed_to_obtain_auth_token.png" title="How-to - BizOps Workspace Secure Chat - Image " alt="Failed log message"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;C'est parce que le client n'a pas réussi à se connecter au serveur Access Manager, alors construisons-le.&lt;/p&gt;

&lt;h3&gt;
  
  
  Construire le serveur d'exemple de gestionnaire d'accès
&lt;/h3&gt;

&lt;p&gt;L'exemple de serveur de gestion d'accès peut être trouvé à &lt;a href="https://github.com/pubnub/js-chat/tree/master/samples/access-manager-api" rel="noopener noreferrer"&gt;https://github.com/pubnub/js-chat/tree/master/samples/access-manager-api,&lt;/a&gt; c'est la même monorepo que l'application client discutée précédemment.&lt;/p&gt;

&lt;p&gt;Ouvrez le fichier &lt;code&gt;src/chatsdk.service.ts&lt;/code&gt; dans l'éditeur de votre choix et remplissez les champs &lt;code&gt;publishKey&lt;/code&gt;, &lt;code&gt;subscribeKey&lt;/code&gt; et &lt;code&gt;secretKey&lt;/code&gt;. Les clés de publication et de souscription doivent correspondre à celles que vous avez utilisées pour construire l'application cliente, et la clé secrète est disponible depuis la page du jeu de clés de l'application sur le &lt;a href="https://admin.pubnub.com?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;portail d'administration&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Depuis le répertoire &lt;code&gt;REPO/samples/access-manager-api&lt;/code&gt;, exécutez &lt;code&gt;yarn run start&lt;/code&gt; pour démarrer le serveur Access Manager, et vous devriez voir quelque chose comme ci-dessous :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2F7vrAN5Y2vD6yQKucs25iHy%2Fb8fb34f5ab9c1e75a23606c2b980cea3%2Fauth_token_server.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2F7vrAN5Y2vD6yQKucs25iHy%2Fb8fb34f5ab9c1e75a23606c2b980cea3%2Fauth_token_server.png" title="How-to - BizOps Workspace Secure Chat - Image 04" alt="Sample Access Manager Server output"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pour voir ce que fait le serveur Access Manager, regardez &lt;code&gt;app.service.ts&lt;/code&gt;. Vous y verrez les structures de permission générées pour l'utilisateur demandeur et l'appel à &lt;code&gt;chat.sdk.grantToken()&lt;/code&gt; pour appliquer ces permissions, renvoyant l'authKey générée au client appelant.&lt;/p&gt;

&lt;p&gt;Il s'agit des permissions requises par l'application de démonstration, mais votre application aura probablement besoin de permissions différentes. Vous pouvez utiliser ce jeu de règles comme modèle de départ, mais lorsque vous créez le serveur Access Manager pour votre application, consultez &lt;a href="https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/permissions?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/permissions&lt;/a&gt; pour comprendre exactement quelles autorisations sont nécessaires pour quelles fonctionnalités du Chat SDK.&lt;/p&gt;

&lt;p&gt;Relancez l'application client de démonstration et vous devriez maintenant pouvoir vous connecter sans erreur. Vous saurez que tout s'est bien passé lorsque vous obtiendrez un toast "Authkey refreshed".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2F6DXY3wSm18YpJ4K08iwoJ4%2Ff5db7a28ca9efcfcff54ddfb36369729%2Fauthkey_refreshed.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2F6DXY3wSm18YpJ4K08iwoJ4%2Ff5db7a28ca9efcfcff54ddfb36369729%2Fauthkey_refreshed.png" title="How-to - BizOps Workspace Secure Chat - Image 05" alt="AuthKey refreshed"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Entamez une conversation entre deux clients.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2F1VS5T3rvnRYCDK6ITsSVZG%2F63901926e457c4d9cdf1bea009921bb1%2FIn_Conversation.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2F1VS5T3rvnRYCDK6ITsSVZG%2F63901926e457c4d9cdf1bea009921bb1%2FIn_Conversation.png" title="How-to - BizOps Workspace Secure Chat - Image 06" alt="Initiate a conversation between two clients"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Couper le son et bannir les utilisateurs à l'aide du moniteur de canaux
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Important :&lt;/strong&gt; si vous n'avez pas encore initié une conversation entre deux clients, faites-le maintenant. Les canaux sont créés dynamiquement par l'application de démonstration et ne s'affichent donc dans le moniteur de canaux qu'après le début de la conversation.&lt;/p&gt;

&lt;p&gt;Notez que les mises à jour de l'interface utilisateur présentées ci-dessous, telles que la bannière "clé d'authentification rafraîchie" ou la fenêtre modale "utilisateur interdit", font partie de l'application de démonstration - votre application affichera ces informations à l'utilisateur par le biais de sa propre interface utilisateur.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Lancez le Channel Monitor en vous connectant au &lt;a href="https://admin.pubnub.com/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;portail d'administration&lt;/a&gt; et en sélectionnant le jeu de clés que vous avez utilisé pour l'échantillon d'Access Manager et l'application client.&lt;/li&gt;
&lt;li&gt;  Allez à la section &lt;strong&gt;BizOps Workspace&lt;/strong&gt; dans le panneau de navigation de gauche, et sélectionnez &lt;strong&gt;Channel Monitor&lt;/strong&gt;. Si vous ne voyez pas la section &lt;strong&gt;BizOps Workspace&lt;/strong&gt;, vous devez certainement mettre à niveau votre &lt;a href="https://www.pubnub.com/pricing/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;plan PubNub&lt;/a&gt;, mais n'hésitez pas à &lt;a href="https://support.pubnub.com/hc/en-us?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;contacter notre support&lt;/a&gt; si vous avez des problèmes.&lt;/li&gt;
&lt;li&gt;  Vous serez invité à sélectionner vos canaux pour commencer la modération. Le nom du canal sera &lt;code&gt;1:1 user with USER_ID&lt;/code&gt;, où USER_ID est le nom d'utilisateur de la personne qui a initié la conversation.&lt;/li&gt;
&lt;li&gt;  Les messages du canal seront affichés en temps réel, y compris les messages précédents, si la persistance est activée sur votre clavier.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2F3bjU02EMdQk4dwYcgaAS0d%2F6dd2b2b1c9b7be3e8fef76ca8306b8db%2F1._Channel_Monitor.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2F3bjU02EMdQk4dwYcgaAS0d%2F6dd2b2b1c9b7be3e8fef76ca8306b8db%2F1._Channel_Monitor.png" title="How-to - BizOps Workspace Secure Chat - Image 07" alt="Initial conversation with channel monitor"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Mettez l'utilisateur en sourdine en appuyant sur le bouton du microphone situé à côté d'un message envoyé par cet utilisateur. Un message s'affiche sur l'appareil de l'utilisateur en sourdine pour l'informer que la clé d'authentification a été actualisée. Si vous tentez d'envoyer un message en tant qu'utilisateur en sourdine, vous verrez apparaître une boîte de dialogue indiquant que cette opération est interdite, bien que l'utilisateur en sourdine n'en soit pas affecté.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2F1RdO4jGGHDiSiL4Qq7TReO%2F0d924dae0e07f5b4ac0f5c3ef5dc11cd%2F2._Muted_User.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2F1RdO4jGGHDiSiL4Qq7TReO%2F0d924dae0e07f5b4ac0f5c3ef5dc11cd%2F2._Muted_User.png" title="How-to - BizOps Workspace Secure Chat - Image 08" alt="Muted user"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Rétablissez le son de l'utilisateur en appuyant à nouveau sur le bouton du microphone. Un message s'affiche sur l'appareil de l'utilisateur non mutique, vous informant que la clé d'authentification a été actualisée et que l'envoi de messages est désormais possible.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2F58g7AQjJ7pRqc3eoV8RB49%2F428d3ca094f369bc1f4fa592eeb53589%2F3._Unmuted_User.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2F58g7AQjJ7pRqc3eoV8RB49%2F428d3ca094f369bc1f4fa592eeb53589%2F3._Unmuted_User.png" title="How-to - BizOps Workspace Secure Chat - Image 09" alt="User unmuted"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Bannissez l'utilisateur en appuyant sur le bouton de bannissement situé à côté du message envoyé par cet utilisateur et indiquez le motif du bannissement. Le motif est un texte libre, vous pouvez donc fournir toute information pertinente. La clé d'authentification sera rafraîchie et l'utilisateur sera renvoyé à l'écran de sélection du chat dans son application.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2F5ZaHnr78P2KEkPnb71RbGU%2F90d13bab4b2e144b0582ec58cdcb7bf0%2F4._Banned_User.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2F5ZaHnr78P2KEkPnb71RbGU%2F90d13bab4b2e144b0582ec58cdcb7bf0%2F4._Banned_User.png" title="How-to - BizOps Workspace Secure Chat - Image 10" alt="User is banned"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Si l'utilisateur tente d'accéder au canal banni, il recevra un message d'erreur :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2F2eyswSTv0uMNS6SedvR0Ea%2F68c0f54239a1283c7fc56e7a9df765d7%2F5._Banned_User_error.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2F2eyswSTv0uMNS6SedvR0Ea%2F68c0f54239a1283c7fc56e7a9df765d7%2F5._Banned_User_error.png" title="How-to - BizOps Workspace Secure Chat - Image 11" alt="Banned user error message"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Débanquez l'utilisateur en sélectionnant "Remove ban" sur le Channel Monitor. La clé d'authentification sera actualisée. L'utilisateur sera débanni et pourra à nouveau accéder à la discussion.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2F3L0k1itC0X4yHApaWxohJU%2F340c12f4a84503a165f3b98904e0aaa0%2F6_Unbanned_User_2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2F3L0k1itC0X4yHApaWxohJU%2F340c12f4a84503a165f3b98904e0aaa0%2F6_Unbanned_User_2.png" title="How-to - BizOps Workspace Secure Chat - Image 12" alt="User is unbanned"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Résumé
&lt;/h2&gt;

&lt;p&gt;Le développement d'une &lt;a href="https://www.pubnub.com/solutions/chat/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;application de chat&lt;/a&gt; n'est que la première étape. Les défis les plus difficiles se présentent après le déploiement de cette application pour soutenir votre base d'utilisateurs croissante. BizOps Workspace est un ensemble d'outils conçus pour gérer tous les aspects de votre application de chat, simplifiant ainsi les défis postérieurs au lancement.&lt;/p&gt;

&lt;p&gt;Bien que cet article se soit concentré sur la mise en sourdine et le bannissement d'utilisateurs en toute sécurité, nous continuons à développer les fonctionnalités de &lt;a href="https://pubnub.com/docs/bizops-workspace/basics?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;BizOps Workspace&lt;/a&gt;. Cet article s'est également concentré exclusivement sur le SDK Chat, mais le Channel Monitor peut également &lt;a href="https://www.pubnub.com/docs/bizops-workspace/basics#configuration?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;être configuré&lt;/a&gt; pour fonctionner avec n'importe lequel de nos SDK.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2FFYH6PoZLSHGPgvikC9vCd%2Fe74f82e37fbfb7fe6f370594adf1da7f%2FChannel_Monitor_Configuration.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.pubnub.com%2Fcdn%2F3prze68gbwl1%2FFYH6PoZLSHGPgvikC9vCd%2Fe74f82e37fbfb7fe6f370594adf1da7f%2FChannel_Monitor_Configuration.png" title="How-to - BizOps Workspace Channel Monitor - Image 00" alt="Channel monitor configuration"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Si vous avez besoin d'aide ou de soutien, n'hésitez pas à contacter notre équipe &lt;a href="https://support.pubnub.com/hc/en-us?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;de soutien spécialisée&lt;/a&gt; ou à envoyer un courriel à notre équipe de relations avec les développeurs à l'adresse &lt;a href="//mailto:devrel@pubnub.com"&gt;devrel@pubnub.com&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Comment PubNub peut-il vous aider ?
&lt;/h1&gt;

&lt;p&gt;Cet article a été publié à l'origine sur &lt;a href="https://www.pubnub.com/how-to/securely-moderate-chat-and-users/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;PubNub.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notre plateforme aide les développeurs à construire, fournir et gérer l'interactivité en temps réel pour les applications web, les applications mobiles et les appareils IoT.&lt;/p&gt;

&lt;p&gt;La base de notre plateforme est le réseau de messagerie en temps réel le plus grand et le plus évolutif de l'industrie. Avec plus de 15 points de présence dans le monde, 800 millions d'utilisateurs actifs mensuels et une fiabilité de 99,999 %, vous n'aurez jamais à vous soucier des pannes, des limites de concurrence ou des problèmes de latence causés par les pics de trafic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Découvrez PubNub
&lt;/h2&gt;

&lt;p&gt;Découvrez le &lt;a href="https://www.pubnub.com/tour/introduction/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;Live Tour&lt;/a&gt; pour comprendre les concepts essentiels de chaque application alimentée par PubNub en moins de 5 minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  S'installer
&lt;/h2&gt;

&lt;p&gt;Créez un &lt;a href="https://admin.pubnub.com/signup/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;compte PubNub&lt;/a&gt; pour un accès immédiat et gratuit aux clés PubNub.&lt;/p&gt;

&lt;h2&gt;
  
  
  Commencer
&lt;/h2&gt;

&lt;p&gt;La &lt;a href="https://www.pubnub.com/docs?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;documentation PubNub&lt;/a&gt; vous permettra de démarrer, quel que soit votre cas d'utilisation ou votre &lt;a href="https://www.pubnub.com/docs?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr" rel="noopener noreferrer"&gt;SDK&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Comment ajouter un chat en temps réel à votre jeu Unity</title>
      <dc:creator>PubNub Developer Relations</dc:creator>
      <pubDate>Thu, 16 May 2024 21:29:53 +0000</pubDate>
      <link>https://forem.com/pubnub-fr/comment-ajouter-un-chat-en-temps-reel-a-votre-jeu-unity-a4b</link>
      <guid>https://forem.com/pubnub-fr/comment-ajouter-un-chat-en-temps-reel-a-votre-jeu-unity-a4b</guid>
      <description>&lt;p&gt;Le chat en temps réel ou le chat dans le jeu augmente l'engagement des joueurs et favorise la fidélisation des utilisateurs. Le chat en temps réel permet aux joueurs de communiquer entre eux, ce qui favorise le sentiment d'appartenance à une communauté et offre une plateforme d'interaction sociale qui rend l'expérience de jeu plus agréable.&lt;/p&gt;

&lt;p&gt;Intégrer le chat en temps réel est plus facile à dire qu'à faire. Si l'on part de zéro, il faut beaucoup de ressources pour construire, maintenir et faire évoluer le système lorsque le nombre de joueurs augmente. Heureusement, PubNub a rendu plus facile que jamais l'injection de fonctionnalités en temps réel dans les jeux Unity grâce à notre plateforme API en temps réel et à faible latence. Que vous développiez pour Windows, Mac, iOS, Android, des systèmes de réalité virtuelle tels qu'Oculus et Meta Quest, ou que vous soyez multiplateforme, notre &lt;a href="https://www.pubnub.com/docs/sdks/unity?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;SDK Unity&lt;/a&gt; vous couvre.&lt;/p&gt;

&lt;p&gt;Continuez à lire pour apprendre comment ajouter un chat en temps réel à votre jeu vidéo Unity avec PubNub, en commençant par comprendre comment configurer différents modèles de canaux, apprendre comment envoyer/recevoir des messages, puis améliorer/sécuriser votre chat dans le jeu avec d'autres fonctionnalités telles que la modération, les emojis, les réactions et les GIFs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Démarrer avec PubNub
&lt;/h2&gt;

&lt;p&gt;Avant de commencer à comprendre comment mettre en place votre chat dans le jeu, vous devez comprendre la plateforme PubNub et comment configurer votre application pour profiter des fonctionnalités de la plateforme.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vue d'ensemble
&lt;/h3&gt;

&lt;p&gt;PubNub est basé sur le modèle Pub/Sub (Publier/S'abonner). Un utilisateur &lt;a href="https://www.pubnub.com/docs/general/messages/publish?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;publie&lt;/a&gt; un message, qui est essentiellement une charge utile contenant toutes les informations pertinentes, sur le réseau PubNub. Les utilisateurs qui souhaitent recevoir ou écouter le message &lt;a href="https://www.pubnub.com/docs/general/messages/receive?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;s'abonneront&lt;/a&gt; au réseau PubNub et analyseront le message. Le message peut contenir tout ce que vous voulez, tant qu'il ne dépasse pas 32 Ko (et de préférence en JSON).&lt;/p&gt;

&lt;p&gt;Pour s'assurer que le message parvient aux bons destinataires, des &lt;a href="https://www.pubnub.com/docs/general/channels/overview?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;canaux&lt;/a&gt; sont utilisés comme mécanisme de transmission des données d'un appareil à l'autre. Les canaux sont nécessaires chaque fois qu'un appareil souhaite publier et s'abonner au réseau PubNub. Alors qu'un utilisateur ne peut publier qu'un seul message à la fois, un utilisateur peut s'abonner à plusieurs canaux différents à la fois, en écoutant un assortiment de messages.&lt;/p&gt;

&lt;p&gt;Alors que vous devez spécifier le nom exact du canal lorsque vous publiez un message, vous pouvez vous abonner à plusieurs canaux à la fois via le &lt;a href="https://www.pubnub.com/docs/general/channels/subscribe#channel-multiplexing?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;multiplexage&lt;/a&gt;, qui consiste à s'abonner à un ou plusieurs canaux en fournissant les noms des canaux sous la forme d'un tableau de chaînes de caractères.&lt;/p&gt;

&lt;p&gt;Pourquoi ces informations sont-elles nécessaires ? L'ensemble de votre système de messagerie dans le jeu sera basé sur le concept des canaux : la &lt;em&gt;façon dont vous formatez et sécurisez le nom du modèle de canal détermine le type de chat que vous souhaitez&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Installer et configurer le SDK PubNub Unity
&lt;/h3&gt;

&lt;p&gt;Pour commencer, vous devrez configurer le SDK Unity de PubNub pour connecter votre application au réseau PubNub. Veuillez vous référer à la &lt;a href="https://www.pubnub.com/docs/sdks/unity?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;documentation du SDK Un&lt;/a&gt; ity pour plus de détails, mais à titre indicatif, vous devrez :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Ajouter le package Unity via le &lt;a href="https://www.pubnub.com/docs/sdks/unity#install-via-package-manager?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;Package Manager&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt; Créer un &lt;a href="https://admin.pubnub.com/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;compte PubNub gratuit&lt;/a&gt; et obtenir vos clés PubNub. Il est essentiel d'activer les fonctionnalités de votre jeu de clés dont votre application a besoin - pour la fonctionnalité essentielle Pub/Sub, vous aurez simplement besoin d'activer Stream Controller. Nous nous assurerons de couvrir tous les autres paramètres que vous pourriez avoir besoin de configurer pour les fonctionnalités avancées.&lt;/li&gt;
&lt;li&gt; Fournissez à Unity les clés de publication et d'abonnement que vous avez obtenues à l'étape précédente pour &lt;a href="https://www.pubnub.com/docs/sdks/unity#configure-pubnub?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;configurer le&lt;/a&gt; GameObject PubNub. Vous devez également fournir un UserId, car chaque objet PubNub a besoin d'un identifiant unique pour établir une connexion avec PubNub. Une fois cela fait, initialisez l'objet PubNub :
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;using&lt;/span&gt; &lt;span class="nx"&gt;PubnubApi&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;using&lt;/span&gt; &lt;span class="nx"&gt;PubnubApi&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Unity&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;…&lt;/span&gt;
&lt;span class="nx"&gt;PubNub&lt;/span&gt; &lt;span class="nx"&gt;pubnub&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Pubnub&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pnConfiguration&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt; Ajoutez des &lt;a href="https://www.pubnub.com/docs/sdks/unity#add-event-listeners?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;récepteurs d'événements&lt;/a&gt; pour que votre jeu réagisse aux événements et aux messages. Il existe différents écouteurs d'événements permettant d'implémenter une logique personnalisée pour répondre à chaque type de message ou d'événement, mais pour la fonctionnalité principale d'échange de messages de chat, vous aurez simplement besoin de l'écouteur d'événements Message (vous apprendrez comment ajouter des fonctionnalités supplémentaires à votre chat en temps réel pour le rendre plus attrayant plus loin dans ce guide) :
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;listener&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;SubscribeCallbackListener&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;pubnub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;AddListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;listener&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;listener&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;onMessage&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="nx"&gt;OnPnMessage&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;…&lt;/span&gt;
&lt;span class="kr"&gt;private&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nc"&gt;OnPnMessage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;Pubnub&lt;/span&gt; &lt;span class="nx"&gt;pn&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;PNMessageResult&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;object&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;Debug&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Message received: {result.Message}&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Avant de commencer à publier pour envoyer des messages à d'autres appareils et à vous abonner pour recevoir des messages des éditeurs, vous devez définir le nom de votre canal. N'oubliez pas : la façon dont vous mettez en forme votre modèle de canal détermine le type de chat que vous souhaitez mettre en œuvre.&lt;/p&gt;

&lt;h2&gt;
  
  
  Définition des différents modèles de chat
&lt;/h2&gt;

&lt;p&gt;Vous devrez réfléchir aux types de chat que vous devrez mettre en place pour votre jeu. Cette section traite du modèle de canal à suivre, et non de l'ensemble de la configuration permettant d'obtenir les informations requises de la part de votre jeu ou de vos utilisateurs. Si vous souhaitez voir les différents modèles de chat dans un projet Unity qui utilise PubNub, consultez notre &lt;a href="https://github.com/PubNubDevelopers/unity-multiplayer-shooter"&gt;Unity Showcase Game&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Chat global
&lt;/h3&gt;

&lt;p&gt;Le chat global permet à tous les joueurs d'un jeu de communiquer entre eux. Vous pouvez mettre en place un chat général en publiant et en vous abonnant à des messages sur un canal commun auquel tous les joueurs sont abonnés. Vous pouvez configurer la structure du canal pour les joueurs globaux :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;string&lt;/span&gt; &lt;span class="nx"&gt;allChat&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="nb"&gt;global&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Chaque client s'abonne alors au canal et veille à ce que tout le monde reçoive les mêmes messages en temps réel, créant ainsi une expérience de discussion partagée à laquelle tout le monde peut participer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Chat privé/chuchotage
&lt;/h3&gt;

&lt;p&gt;Le chat privé ou chuchotage permet aux joueurs d'avoir des conversations en tête-à-tête, où seuls les deux joueurs concernés peuvent discuter entre eux et personne d'autre. Dans un modèle de canal de chat privé ou chuchotage, chaque utilisateur s'abonne à une structure de canal destinée aux conversations privées :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;string&lt;/span&gt; &lt;span class="nx"&gt;privateChatBase&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="nx"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kr"&gt;private&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cette structure utilise le concept de &lt;a href="https://www.pubnub.com/docs/general/channels/subscribe#wildcard-subscribe?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;Wildcard Subscribe&lt;/a&gt;. Cette fonctionnalité peut être utilisée pour s'abonner à une liste hiérarchique de canaux, ce qui permet de s'abonner à de nombreux canaux avec une seule déclaration de nom.&lt;/p&gt;

&lt;p&gt;Par exemple, lorsqu'un utilisateur est sur le point d'envoyer un message privé à un autre utilisateur, vous devez concaténer l'ID utilisateur PubNub actuel (ou UUID/uuid), qui représente l'identifiant unique permettant d'identifier l'utilisateur dans le réseau PubNub, et l'ID utilisateur du destinataire du message. Bien que vous puissiez toujours obtenir l'ID utilisateur de l'utilisateur actuel (via pubnub.GetCurrentUserId()), vous devez obtenir l'ID utilisateur du destinataire prévu. Une fois que vous avez l'ID utilisateur du destinataire, vous pouvez concaténer le canal comme suit :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;string&lt;/span&gt; &lt;span class="nx"&gt;privateChatMessage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="nx"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kr"&gt;private&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;uuid&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;uuid&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Puisque vous spécifiez un motif de canal joker comme chat.private.*, votre application s'abonnera à tous les noms de canaux qui correspondent à ce motif. Ainsi, vous n'avez pas besoin de connaître le nom du canal au moment de l'exécution. Enfin, l'utilisation des identifiants d'utilisateur garantit que le nom du canal est unique et que la conversation reste entre les deux utilisateurs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Chat entre amis
&lt;/h3&gt;

&lt;p&gt;La création d'une discussion entre amis permet aux joueurs de communiquer en privé avec des joueurs spécifiques avec lesquels ils souhaitent établir une connexion plus étroite, qu'il s'agisse de joueurs nouvellement rencontrés ou d'amis en dehors du jeu.&lt;/p&gt;

&lt;p&gt;Dans une discussion entre amis, vous devez créer un modèle de canal unique pour chaque appareil ou joueur, de la même manière que vous construisez un modèle de canal de discussion privée en y ajoutant votre identifiant d'utilisateur :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;string&lt;/span&gt; &lt;span class="nx"&gt;chanFriendChat&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;chat.friends.” + pubnub.GetCurrentUserId();”
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vous devez ensuite répéter cette opération pour chaque utilisateur avec lequel vous souhaitez être ami : vous devez remplacer leur ID utilisateur dans la chaîne chanFriendChat par celui de pubnub.GetCurrentUserId(). Bien que vous ayez maintenant le modèle de canal en place, vous ne pouvez pas simplement vous abonner en utilisant un motif joker tel que chat.friends.* ; au lieu de cela, vous aurez besoin d'un mécanisme pour déterminer quels joueurs sont amis.&lt;/p&gt;

&lt;p&gt;Une solution à ce problème est le &lt;a href="https://www.pubnub.com/docs/general/channels/subscribe#channel-groups?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;groupe de canaux de&lt;/a&gt; PubNub, qui vous permet de gérer un grand nombre de canaux à la fois. Les groupes de canaux sont essentiellement un pointeur vers une liste de canaux ; dans ce cas, le groupe de canaux est unique au joueur et contient une référence à tous les amis du joueur :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;string&lt;/span&gt; &lt;span class="nx"&gt;chanGroupFriendChat&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;chanGroupFriendChat_&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;pubnub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;GetCurrentUserId&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Remarque : les noms des groupes de chaînes suivent les mêmes conventions que les noms de chaînes, mais ils &lt;a href="https://www.pubnub.com/docs/general/channels/subscribe#channel-group-names?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;ne peuvent pas contenir de points&lt;/a&gt; dans leur nom, d'où la différence de structure.&lt;/p&gt;

&lt;p&gt;Comme pour l'abonnement aux chaînes avec l'objet pubnub (expliqué dans la section suivante), vous pouvez également vous abonner aux groupes de chaînes en même temps. Cela signifie que puisque le joueur est abonné à son groupe de canaux d'amis, chaque fois qu'un nouvel ami est ajouté, le chanFriendChat de cet ami est ajouté au groupe de canaux d'amis du joueur et recevra des messages dans l'écouteur d'événements Message chaque fois que l'un de ces canaux publiera un message. Bien que vous ne puissiez pas publier dans un groupe de canaux, vous pouvez simplement publier un message dans n'importe quel canal affilié au groupe de canaux et chaque abonné (ami) recevra ce message.&lt;/p&gt;

&lt;p&gt;En utilisant l'&lt;a href="https://www.pubnub.com/docs/sdks/unity/api-reference/channel-groups?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;API Channel Groups pour le SDK PubNub Unity&lt;/a&gt;, vous pouvez ajouter, lister et supprimer des amis/canaux des Channel Groups pour lesquels vous avez l'autorisation de le faire. La fonction Groupes de canaux est également utilisée pour déterminer quand les amis sont également en ligne/hors ligne, ce qui est connu sous le nom de Présence. Ce point sera abordé en détail dans notre &lt;a href="https://www.pubnub.com/how-to/add-friend-list-to-your-unity-game/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;guide Comment ajouter une liste d'amis dans Unity&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Chat de guilde/d'alliance/de plan
&lt;/h3&gt;

&lt;p&gt;Dans les jeux comportant des guildes, des alliances ou des clans, un environnement de discussion dédié peut grandement favoriser la coordination et la camaraderie au sein de l'équipe. Ce type de chat de groupe permet la communication entre plusieurs utilisateurs, ce qui favorise la collaboration et le travail d'équipe entre un plus grand nombre de joueurs que vos seuls amis. Un chat Guilde/Alliance/Clan permet aux membres d'un même groupe de planifier des stratégies, de partager des succès, ou simplement de se rapprocher pour former une communauté plus personnelle au sein du jeu.&lt;/p&gt;

&lt;p&gt;La mise en place de ce type de chat avec PubNub se fait de la même manière que pour le Friend/Buddy Chat. Vous devez créer des groupes de canaux pour chaque type, vous abonner à ces groupes de canaux et ajouter des amis à ces groupes de canaux lorsque vous y êtes autorisé. Tout message publié sur un canal associé à ces groupes de canaux déclenchera l'écoute de l'événement et vous pourrez afficher le chat de manière appropriée.&lt;/p&gt;

&lt;p&gt;Les groupes de canaux sont un excellent moyen de gérer de grands groupes, car le groupe de canaux de chaque joueur peut &lt;a href="https://www.pubnub.com/docs/general/channels/subscribe#channel-groups?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;gérer 2 000 canaux&lt;/a&gt; (dans ce cas, des joueurs), ce qui est plus que suffisant pour les plus grandes guildes des jeux en ligne massifs. Mieux encore, chaque client individuel connecté au réseau PubNub peut avoir 10 groupes de canaux, ce qui signifie que vous pouvez vous abonner à 20 000 canaux si nécessaire.&lt;/p&gt;

&lt;h3&gt;
  
  
  Chat Party/Lobby
&lt;/h3&gt;

&lt;p&gt;Les chats de groupe ou de lobby s'adressent à de petits groupes temporaires formés pour une session de jeu ou une mission particulière. Bien que ces styles de discussion aient des objectifs différents, leur mise en œuvre est similaire au modèle de création d'un canal de discussion privé/chuchoté.&lt;/p&gt;

&lt;p&gt;Tout d'abord, créez une chaîne de base pour chacun des types de chat de groupe. Lorsque vous vous abonnez à votre tableau de canaux (voir l'étape suivante), vous utilisez le caractère générique subscribe pour écouter toutes les requêtes :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;string&lt;/span&gt; &lt;span class="nx"&gt;chanChatParty&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="nx"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;party&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;string&lt;/span&gt; &lt;span class="nx"&gt;chanChatLobby&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="nx"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lobby&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lorsque le lobby ou la partie est formé, un joueur est désigné comme le leader ou le propriétaire du groupe, qu'il ait initié le groupe ou qu'il ait été déterminé en fonction de sa connexion Internet et de sa région. Ces types de joueurs sont appelés chefs de partie ou hôtes. Vous concaténerez alors l'ID utilisateur du joueur hôte avec une chaîne de base, créant ainsi un modèle de canal unique. Tout nouveau joueur invité à rejoindre la partie ou le lobby s'abonnera dynamiquement à ces canaux, ce qui lui permettra de rejoindre le groupe. Le canal peut ensuite être supprimé une fois la fête ou le lobby terminé ou dissous.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mise en place de l'ensemble
&lt;/h2&gt;

&lt;p&gt;Une fois que vous avez déterminé les types de discussion que vous souhaitez intégrer à votre jeu en fonction du modèle de canal, il est temps d'envoyer et de recevoir des messages en temps réel en publiant et en vous abonnant à ces canaux.&lt;/p&gt;

&lt;h3&gt;
  
  
  Publier des messages
&lt;/h3&gt;

&lt;p&gt;Le processus commence par l'élaboration de la charge utile du message. Il peut s'agir d'un simple chat textuel ou de structures de données plus complexes, en fonction des besoins de votre jeu Unity. Une fois que la charge utile est prête, il est temps de publier le message.&lt;/p&gt;

&lt;p&gt;L'&lt;a href="https://www.pubnub.com/docs/sdks/unity/api-reference/publish-and-subscribe#publish?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;API de publication&lt;/a&gt; est utilisée pour envoyer un message à tous les abonnés du canal de discussion spécifié. Bien que vous ne puissiez publier que sur un seul canal à la fois, la publication est effectuée de manière asynchrone, de sorte qu'elle ne bloque pas l'exécution du reste de votre code (bien que vous puissiez toujours publier de manière synchrone si vous le souhaitez).&lt;/p&gt;

&lt;p&gt;Par exemple, si vous souhaitez envoyer un message de chat à la partie, vous devez effectuer l'appel suivant pour non seulement publier, mais aussi déterminer si l'appel PubNub a été effectué avec succès (et gérer l'échec de l'appel) :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;PNResult&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;PNPublishResult&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;publishResponse&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;pubnub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Publish&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Message&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="nx"&gt;Ready&lt;/span&gt; &lt;span class="nx"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;go&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Channel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;chanChatParty&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ExecuteAsync&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;PNPublishResult&lt;/span&gt; &lt;span class="nx"&gt;publishResult&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;publishResponse&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Result&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;PNStatus&lt;/span&gt; &lt;span class="nx"&gt;status&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;publishResponse&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Status&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;Debug&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;pub timetoken: &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;publishResult&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Timetoken&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ToString&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;span class="nx"&gt;Debug&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;pub status code : &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;StatusCode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ToString&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  S'abonner aux messages
&lt;/h3&gt;

&lt;p&gt;Lorsque des messages sont publiés, nous devons nous &lt;a href="https://www.pubnub.com/docs/sdks/unity/api-reference/publish-and-subscribe#receive-messages?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;abonner&lt;/a&gt; aux canaux appropriés pour recevoir tous les messages et événements entrants. Vous pouvez vous abonner à plusieurs canaux de discussion et groupes de canaux en un seul appel :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;pubnub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Subscribe&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;string&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Channels&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;string&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;chanChatAll&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;chanPrivateChat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;chanChatParty&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;*&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;chanChatLobby&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;*&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;               
&lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ChannelGroups&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;string&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;chanFriendGroupChat&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;chanGuildGroupChat&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;chanAllianceGroupChat&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;userId&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Execute&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Le lecteur est maintenant connecté au réseau PubNub et les &lt;a href="https://www.pubnub.com/docs/sdks/unity#add-event-listeners?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;auditeurs d'événements&lt;/a&gt; attendent qu'un événement se produise (dans ce cas, l'arrivée d'un nouveau message) et exécutent ensuite le code associé à cet événement.&lt;/p&gt;

&lt;p&gt;Lorsqu'un message arrive, l'écouteur déclenche un rappel, exécutant le code que vous avez écrit pour gérer les messages entrants. Il peut s'agir simplement d'afficher le message dans un salon de discussion, ou de quelque chose de plus complexe, comme le déclenchement d'événements dans le jeu en fonction des messages de discussion.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fonctionnalités avancées pour rendre le chat dans le jeu attrayant
&lt;/h2&gt;

&lt;p&gt;Vous avez réussi à intégrer le chat dans votre jeu Unity pour permettre aux joueurs d'envoyer et de recevoir des messages en temps réel ! Bien que cela crée déjà un espace pour que les joueurs s'engagent les uns avec les autres, la fonctionnalité mise en œuvre n'est que la partie émergée de l'iceberg - il y a beaucoup de fonctionnalités que vous devriez envisager d'implémenter pour rendre les chats en jeu plus engageants pour vos joueurs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Charger l'historique des messages : Persistance des messages
&lt;/h3&gt;

&lt;p&gt;Dans un jeu, les joueurs peuvent avoir besoin de revenir sur des conversations antérieures ou de rattraper des chats manqués. C'est là qu'intervient la &lt;a href="https://www.pubnub.com/docs/general/storage?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;persistance des&lt;/a&gt; messages, qui permet de sauvegarder et de récupérer l'historique des messages de chat. La mise en œuvre de l'API de persistance des messages dans votre jeu Unity vous permet de stocker et de récupérer les messages de chat, les actions de message et les fichiers en cas de besoin :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;PNResult&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;PNFetchHistoryResult&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;fetchHistoryResponse&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;pubnub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;FetchHistory&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Channels&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;chanPrivateChat&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;IncludeMeta&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;MaximumPerChannel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ExecuteAsync&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nous offrons également la possibilité de contrôler la durée de stockage des messages, ce qui vous permet de gérer le stockage en fonction des besoins et des ressources spécifiques de votre jeu. Pour pouvoir utiliser la persistance des messages, vous devez activer la fonctionnalité dans le &lt;a href="https://admin.pubnub.com/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;portail d'administration&lt;/a&gt; de vos clés. Vous pouvez en savoir plus sur cette fonctionnalité ainsi que sur la façon de l'activer en suivant notre &lt;a href="https://www.pubnub.com/how-to/admin-portal-persistence/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;guide pratique sur la persistance des messages&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Notifier les joueurs des messages manqués : Notifications push sur mobile
&lt;/h3&gt;

&lt;p&gt;Avec les jeux mobiles, les joueurs sont souvent en train d'entrer et de sortir de l'application et peuvent manquer des messages cruciaux de leur équipe ou des mises à jour du jeu. C'est là que les &lt;a href="https://www.pubnub.com/docs/general/push/send?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;notifications push mobiles&lt;/a&gt; entrent en jeu. Elles permettent d'informer les joueurs des messages de chat manqués, des mises à jour du jeu ou d'autres notifications importantes, même lorsqu'ils ne sont pas en train de jouer.&lt;/p&gt;

&lt;p&gt;Avec l'&lt;a href="https://www.pubnub.com/docs/sdks/unity/api-reference/mobile-push?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;API de notifications push mobiles&lt;/a&gt;, nous fournissons une API unifiée pour envoyer des notifications push aux appareils iOS et Android. Cela simplifie le processus et vous permet d'envoyer un seul appel API pour notifier tous les appareils, quelle que soit la plateforme. Vous pouvez également personnaliser vos notifications push, par exemple en envoyant des notifications personnalisées à des joueurs individuels ou en diffusant un message à tous les joueurs. Cette flexibilité vous permet de communiquer efficacement avec vos joueurs, en les gardant engagés et informés.&lt;/p&gt;

&lt;p&gt;Pour pouvoir utiliser les notifications push mobiles avec PubNub, vous devez activer les notifications push mobiles en suivant notre &lt;a href="https://www.pubnub.com/how-to/push-notifications/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;guide pratique&lt;/a&gt; dans le &lt;a href="https://admin.pubnub.com/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;portail d'administration&lt;/a&gt;. Nous avons également des guides plus spécifiques et détaillés pour les Notifications Push Mobiles &lt;a href="https://www.pubnub.com/how-to/admin-portal-push-notifications-android/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;FCM&lt;/a&gt; et &lt;a href="https://www.pubnub.com/how-to/admin-portal-push-notifications-apns/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;APNs&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Plus que des mots : Emojis
&lt;/h3&gt;

&lt;p&gt;Les émojis servent de langage universel des émotions dans la communication numérique. Ils permettent aux joueurs d'exprimer leurs sentiments et leurs réactions d'une manière amusante et colorée, rendant le chat plus interactif et engageant.&lt;/p&gt;

&lt;p&gt;Avec PubNub, vous pouvez facilement implémenter le support des emojis dans votre jeu Unity en demandant aux joueurs de publier des &lt;a href="https://www.pubnub.com/docs/general/messages/publish#send-signals?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;signaux&lt;/a&gt; plutôt que des messages. Les signaux sont destinés à l'envoi de petits morceaux de données, car ils sont beaucoup plus rapides et moins coûteux que les messages. Comme les emojis sont généralement très petits en termes de taille de données, c'est un moyen parfait d'envoyer rapidement les données.&lt;/p&gt;

&lt;p&gt;Vous pouvez utiliser l &lt;a href="https://www.pubnub.com/docs/sdks/unity/api-reference/publish-and-subscribe#signal?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;'API Signals de PubNub&lt;/a&gt; pour publier des emojis dans un chat spécifique. Par exemple, si un joueur souhaite envoyer un emoji de signe de la main au chat global, le code suivant sera exécuté lorsqu'il appuiera sur Envoyer :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Dictionary&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;myMessage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Dictionary&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;myMessage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;emoji&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;:wave:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;pubnub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Signal&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Message&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;myMessage&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Channel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;global&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Execute&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;Debug&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ErrorData&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Information&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;Debug&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Timetoken&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Les joueurs destinataires recevront le signal s'ils sont abonnés au canal spécifié. Dans ce cas, comme il s'agit du canal global, tout le monde recevra l'emoji. Pour pouvoir écouter les signaux, abonnez-vous à l'événement listener :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;listener&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;onSignal&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="nx"&gt;OnPnSignal&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kr"&gt;private&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nc"&gt;OnPnSignal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;Pubnub&lt;/span&gt; &lt;span class="nx"&gt;pn&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;PNSignalResult&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;object&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Handle the emoji by looking up the value and displaying the result.&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vous devez vous assurer que la valeur de l'emoji représente un emoji réel défini dans Unity. Ces emojis peuvent être stockés et récupérés dans le réseau PubNub via &lt;a href="https://www.pubnub.com/docs/sdks/unity/api-reference/objects?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;App Context&lt;/a&gt; (anciennement connu sous le nom d'Objects) afin que tous les emojis auxquels le lecteur a accès puissent être récupérés à partir d'un stockage sans serveur. Pour en savoir plus sur l'implémentation d'App Context dans votre jeu Unity, consultez notre guide pratique.&lt;/p&gt;

&lt;h3&gt;
  
  
  Répondre aux messages : Réactions aux messages
&lt;/h3&gt;

&lt;p&gt;Les&lt;a href="https://www.pubnub.com/docs/sdks/unity/api-reference/message-actions?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;réactions aux&lt;/a&gt; messages, telles que les likes, les cœurs, les pouces en l'air, les autocollants ou les réactions personnalisées spécifiques au jeu, offrent aux joueurs un moyen rapide et facile de répondre aux messages de chat. Elles ajoutent non seulement de l'interactivité au chat, mais favorisent également le sens de la communauté en permettant aux joueurs de reconnaître les messages des autres et de s'y intéresser.&lt;/p&gt;

&lt;p&gt;Vous pouvez utiliser l'&lt;a href="https://www.pubnub.com/docs/sdks/unity/api-reference/message-actions?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;API Message Actions de&lt;/a&gt; PubNub pour créer des fonctions telles que des réactions et des accusés de réception, ou pour associer des métadonnées personnalisées aux messages. Tout comme les applications de chat telles que Discord ont des réactions et des emojis différents selon les serveurs, il en va de même pour vos différents types de chat. Vous pouvez récupérer les réactions aux messages disponibles pour le canal de discussion spécifié à l'aide de l'appel suivant lors du chargement de la discussion :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;pubnub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;GetMessageActions&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Channel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;chanChatLobby&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;PNGetMessageActionsResult&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; 
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;//result is of type PNGetMessageActionsResult.&lt;/span&gt;
  &lt;span class="p"&gt;}));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lorsqu'un joueur est sur le point de répondre à un message par une réaction, vous pouvez le faire en ajoutant une réaction à un message publié :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;pubnub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;AddMessageAction&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Channel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;chanChatLobby&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;MessageTimetoken&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5610547826969050&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;PNMessageAction&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;reaction&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;smiley_face&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;PNAddMessageActionResult&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;//result is of type PNAddMessageActionResult.&lt;/span&gt;
  &lt;span class="p"&gt;}));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PubNub utilise des jetons de temps pour savoir précisément quand un message a été publié dans le réseau. Lorsque vous recevez des messages, le temps écoulé est également inclus dans la charge utile. Vous pouvez alors fournir la valeur appropriée du jeton de temps dans l'argument MessageTimetoken() afin de pouvoir réagir au message.&lt;/p&gt;

&lt;p&gt;Pour pouvoir écouter la réaction et avertir le lecteur qui a envoyé le message original, vous devez ajouter un auditeur et gérer la réaction dans la méthode OnPNMessageAction :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;listener&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;onMessageAction&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="nx"&gt;OnPnMessageAction&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;…&lt;/span&gt;
&lt;span class="kr"&gt;private&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nc"&gt;OnPnMessageAction&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;Pubnub&lt;/span&gt; &lt;span class="nx"&gt;pn&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;PNMessageActionEventResult&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="c1"&gt;//Handle Message Reaction&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Comme pour les emojis, vous pouvez utiliser &lt;a href="https://www.pubnub.com/docs/sdks/unity/api-reference/objects?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;App Context&lt;/a&gt; pour récupérer et stocker la façon dont ces réactions sont représentées visuellement dans votre jeu. Pour pouvoir utiliser les réactions aux messages, vous devez vous assurer que la &lt;a href="https://www.pubnub.com/how-to/admin-portal-persistence/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;persistance des messages&lt;/a&gt; est activée pour vos clés dans le &lt;a href="https://admin.pubnub.com/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;portail d'administration&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  GIFs et autres multimédias
&lt;/h3&gt;

&lt;p&gt;Le partage de fichiers multimédias est une autre fonctionnalité importante qui améliore l'expérience du chat. Qu'il s'agisse de partager des GIF, des captures d'écran de moments drôles ou même des ressources de jeu, le partage de fichiers apporte un autre niveau d'interaction à votre jeu.&lt;/p&gt;

&lt;p&gt;La mise en œuvre de ces types de fichiers multimédias utilise l'&lt;a href="https://www.pubnub.com/docs/sdks/unity/api-reference/files?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;API de partage de fichiers PubNub&lt;/a&gt;. Grâce à cette fonctionnalité, les joueurs peuvent charger, télécharger et supprimer les fichiers auxquels ils ont accès. Pour pouvoir envoyer un fichier, vous devez effectuer l'appel suivant :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;PNResult&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;PNFileUploadResult&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;fileUploadResponse&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;pubnub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;SendFile&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Channel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;string&lt;/span&gt; &lt;span class="nx"&gt;chanFriendChatSamantha&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;File&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;cat_picture.jpg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;//checks the bin folder if no path is provided&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Message&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Look at this photo!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ExecuteAsync&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;PNFileUploadResult&lt;/span&gt; &lt;span class="nx"&gt;fileUploadResult&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;fileUploadResponse&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Result&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;PNStatus&lt;/span&gt; &lt;span class="nx"&gt;fileUploadStatus&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;fileUploadResponse&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Status&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;fileUploadStatus&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;Error&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;fileUploadResult&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;Debug&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pubnub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;JsonPluggableLibrary&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;SerializeToJsonString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;fileUploadResult&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Handle File Upload Error.&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pour que les abonnés écoutent le fichier, vous devez ajouter l'écouteur d'événement et gérer l'affichage du fichier dans la méthode OnPNFile :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;listener&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;onFile&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="nx"&gt;OnPnFile&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;…&lt;/span&gt;
&lt;span class="kr"&gt;private&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nc"&gt;OnPnFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;Pubnub&lt;/span&gt; &lt;span class="nx"&gt;pn&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;PNFileEventResult&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;//Handle how to display the file received&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vous pouvez également obtenir, répertorier des informations et supprimer n'importe quel fichier associé à différents canaux de discussion. Vous devrez vous assurer d'activer la fonction de partage de fichiers dans le portail d'administration, ainsi que la persistance des messages. Pour en savoir plus, consultez notre &lt;a href="https://www.pubnub.com/how-to/admin-portal-enabling-files/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;guide pratique sur l'activation des fichiers&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sécurisez vos canaux de discussion : Gestionnaire d'accès
&lt;/h3&gt;

&lt;p&gt;Dans tout environnement de jeu, il est primordial d'assurer la sécurité des canaux de discussion. Qu'il s'agisse de protéger les joueurs des messages indésirables ou de protéger les discussions stratégiques sensibles, le système de chat de votre jeu Unity doit être conçu avec la sécurité à l'esprit.&lt;/p&gt;

&lt;p&gt;C'est là que le &lt;a href="https://www.pubnub.com/docs/sdks/unity/api-reference/access-manager?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;gestionnaire d'accès&lt;/a&gt; de PubNub entre en jeu. Il fournit un cadre robuste et flexible pour sécuriser vos canaux de discussion. Avec Access Manager, vous pouvez contrôler qui peut publier ou s'abonner à chacun de vos canaux, ajoutant ainsi une couche supplémentaire de sécurité au système de chat de votre jeu Unity.&lt;/p&gt;

&lt;p&gt;Le gestionnaire d'accès vous permet d'accorder des autorisations au niveau de l'utilisateur, du canal ou même au niveau des clés individuelles. Vous pouvez spécifier si un utilisateur peut lire, écrire ou gérer un canal, et ces permissions peuvent être mises à jour dynamiquement en fonction des besoins de votre jeu. Par exemple, dans une discussion privée entre deux joueurs, vous pouvez accorder à ces deux seuls joueurs les permissions de lecture et d'écriture pour leur canal privé. De même, dans une discussion de guilde, vous pouvez accorder des droits de lecture et d'écriture à tous les membres de la guilde, tout en n'accordant des droits de gestion qu'au chef de la guilde.&lt;/p&gt;

&lt;p&gt;Access Manager prend également en charge l'authentification par jeton, ce qui vous permet d'authentifier les utilisateurs en toute sécurité et de leur accorder les autorisations appropriées. Ainsi, seuls les joueurs autorisés peuvent accéder aux canaux de discussion de votre jeu, ce qui protège la communauté de votre jeu contre les menaces potentielles.&lt;/p&gt;

&lt;p&gt;Vous devez vous assurer que vous avez activé le gestionnaire d'accès dans le &lt;a href="https://admin.pubnub.com/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;portail d'administration&lt;/a&gt; pour pouvoir utiliser cette fonctionnalité. Vous pouvez en savoir plus sur la façon de procéder en suivant cette &lt;a href="https://support.pubnub.com/hc/en-us/articles/360051974791-How-do-I-enable-add-on-features-for-my-keys-?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;page d'assistance&lt;/a&gt; sur l'activation de cette fonctionnalité complémentaire.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prochaines étapes
&lt;/h2&gt;

&lt;p&gt;Dans ce guide pratique, vous avez appris à ajouter un système de chat en temps réel robuste à votre jeu Unity. Nous avons tout abordé, de l'initialisation d'un objet PubNub dans votre environnement à la mise en place d'un modèle de chat représentant les différents types de chat, en passant par l'envoi et la réception de messages. Vous avez même appris à mettre en œuvre des fonctionnalités avancées comme les emojis, les réactions aux messages et le partage de fichiers, ainsi que les aspects importants de tout bon système de chat avec la persistance des messages, les notifications push mobiles et la sécurité des canaux.&lt;/p&gt;

&lt;p&gt;Que vous soyez un développeur indépendant travaillant sur votre premier jeu ou un développeur chevronné cherchant à améliorer votre jeu multijoueur, la fonctionnalité en temps réel de PubNub peut servir d'infrastructure pour soutenir votre chat en jeu, afin que vous puissiez vous concentrer sur ce qui compte le plus.&lt;/p&gt;

&lt;p&gt;Pour en savoir plus, consultez les ressources suivantes :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Lisez notre &lt;a href="https://www.pubnub.com/docs/sdks/unity?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;documentation Unity&lt;/a&gt; pour apprendre tout ce que vous devez savoir sur l'ajout d'un chat en temps réel à votre jeu.&lt;/li&gt;
&lt;li&gt;  Comprenez comment ajouter une &lt;a href="https://www.pubnub.com/how-to/add-friend-list-to-your-unity-game/?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;liste d'amis&lt;/a&gt; grâce à notre guide Unity.&lt;/li&gt;
&lt;li&gt;  Découvrez comment notre &lt;a href="https://github.com/PubNubDevelopers/unity-multiplayer-shooter"&gt;jeu de démonstration Unity&lt;/a&gt; utilise des modèles de chat pour gérer les salons de discussion et bien plus encore.&lt;/li&gt;
&lt;li&gt;  Plongez dans le &lt;a href="https://github.com/pubnub/unity"&gt;code source du SDK Unity&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;N'hésitez pas à contacter l'équipe chargée des relations avec les développeurs à l'&lt;a href="//mailto:devrel@pubnub.com"&gt;adresse devrel@pubnub.com&lt;/a&gt; si vous avez des questions ou des préoccupations.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Comment configurer Illuminate pour votre jeu</title>
      <dc:creator>PubNub Developer Relations</dc:creator>
      <pubDate>Wed, 15 May 2024 23:54:34 +0000</pubDate>
      <link>https://forem.com/pubnub-fr/comment-configurer-illuminate-pour-votre-jeu-p86</link>
      <guid>https://forem.com/pubnub-fr/comment-configurer-illuminate-pour-votre-jeu-p86</guid>
      <description>&lt;h2&gt;
  
  
  Qu'est-ce que Illuminate ?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.pubnub.com/products/illuminate/?utm_source=medium&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;PubNub Illuminate&lt;/a&gt; est une solution de prise de décision et d'action instantanée basée sur un suivi analytique en direct des données de votre jeu. Illuminate vous donne le pouvoir de cartographier les KPI qui sont importants pour votre jeu, de déclencher des décisions basées sur les comportements des utilisateurs, et de voir les résultats instantanés - tout cela sans impliquer lourdement votre équipe d'ingénieurs. Avec Illuminate, vous pouvez immédiatement prendre des décisions intelligentes basées sur des données alors que les interactions et le jeu se déroulent en temps réel, afin de stimuler la croissance et d'optimiser l'efficacité de votre jeu.&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dKyu6IFj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.ctfassets.net/3prze68gbwl1/TXpocUbj1UohYKUEK3Cp7/643f958d6cfa08df8e3ec0e0c6cfac8e/Illuminate_-_General_Infographic__Color___2_.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dKyu6IFj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.ctfassets.net/3prze68gbwl1/TXpocUbj1UohYKUEK3Cp7/643f958d6cfa08df8e3ec0e0c6cfac8e/Illuminate_-_General_Infographic__Color___2_.svg" alt="Illuminate allows you to experiment and iterate in real time" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dans ce tutoriel, vous en apprendrez plus sur Illuminate, pourquoi il est important pour le succès de votre jeu (et de votre studio), et comment configurer Illuminate pour créer des décisions dans l'instant qui déclenchent des actions basées sur les données de votre jeu.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pourquoi Illuminate pour les jeux ?
&lt;/h2&gt;

&lt;p&gt;Avec la plupart des outils d'analyse traditionnels, la prise de mesures sur les données en temps réel est généralement réactive. Les ajustements, tels que les changements de prix basés sur les commentaires des joueurs, sont entravés par de longs cycles de correctifs qui impliquent la collecte de données, les tests et le déploiement sur les différentes plateformes, ce qui détourne encore plus les ressources du développement et de la création de contenu futur. Il y a un besoin critique de visibilité en temps réel de l'engagement des joueurs et de la monétisation pour permettre des décisions tactiques rapides, car les informations exploitables deviennent inefficaces si elles sont retardées ne serait-ce que de quelques heures après l'occurrence de l'événement.&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--t-HT4tTS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.ctfassets.net/3prze68gbwl1/5VONbyesGtOfH2IARy6zQi/6eab4f3544cdae45066a4b3869f045b4/illuminate-problems-game-companies-face.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--t-HT4tTS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.ctfassets.net/3prze68gbwl1/5VONbyesGtOfH2IARy6zQi/6eab4f3544cdae45066a4b3869f045b4/illuminate-problems-game-companies-face.png" alt="There are a lot of problems that game companies face when trying to experiment or deploy changes based on feedback. Illuminate can help solve these problems." width="800" height="259"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Illuminate est un produit personnalisable à code bas qui permet aux gestionnaires de jeux et aux analystes de données d'appliquer et d'évaluer l'impact de leurs décisions stratégiques instantanément. Illuminate permet aux équipes de procéder à des ajustements à la volée de l'équilibre du jeu, à des stratégies de monétisation plus efficaces et plus appropriées grâce à l'expérimentation en temps réel, et à des récompenses personnalisées pour les joueurs afin d'améliorer la rétention et l'expérience des joueurs, tout en détectant les activités frauduleuses sans alourdir le travail des développeurs de jeux.&lt;/p&gt;

&lt;p&gt;Avec Illuminate, vous pouvez gérer votre plateforme et prendre des mesures en temps réel :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Lancer des expériences de monétisation ciblées dans les canaux et voir les résultats immédiats.&lt;/li&gt;
&lt;li&gt; Envoyez immédiatement des recommandations personnalisées basées sur les actions des joueurs au moment où elles se produisent.&lt;/li&gt;
&lt;li&gt; Déclenchez des actions basées sur les comportements des utilisateurs ou des cohortes, et constatez les résultats instantanément.&lt;/li&gt;
&lt;li&gt; Améliorez la détection des fraudes, identifiez les comportements suspects et agissez en conséquence en temps réel.&lt;/li&gt;
&lt;li&gt; Ajustez et expérimentez les prix des articles de la boutique du jeu. Ajustez les prix si les joueurs achètent plusieurs exemplaires d'un même article et déclenchez des événements dans le jeu pour affecter tous les prix du magasin.&lt;/li&gt;
&lt;li&gt; Récompenser les joueurs qui ont relevé des défis ou obtenu des résultats en leur offrant des codes de réduction sur les articles du jeu. Déterminer où les joueurs passent le moins de temps et envisager de les récompenser pour qu'ils passent du temps dans cette zone ou modifier le type de récompenses qu'ils obtiennent.&lt;/li&gt;
&lt;li&gt; Faire apparaître des objets utiles et ajuster les fonctionnalités de base du jeu à la volée, sans avoir besoin d'interroger les ingénieurs.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Vous pouvez en savoir plus sur la façon dont Illuminate alimente les jeux grâce à notre vidéo &lt;a href="https://www.youtube.com/watch?v=2TXLPfAWNVI"&gt;Illuminate pour les jeux&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comment configurer Illuminate pour votre jeu
&lt;/h2&gt;

&lt;p&gt;Avant de plonger dans la configuration d'Illuminate pour votre jeu, vous devez comprendre certains termes clés utilisés tout au long de la configuration. Illuminate se compose de ces trois modules :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Business Object&lt;/strong&gt;: La façon dont vous obtenez des données dans Illuminate. Vous pouvez définir, créer et activer des objets d'affaires, qui sont des conteneurs pour capturer des données à partir des applications et des jeux de clés sélectionnés. Grâce à une série d'options (mesures, dimensions ou métriques), vous pouvez décider des données particulières que vous souhaitez suivre en temps réel et de la manière dont vous souhaitez les agréger.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Décision&lt;/strong&gt;: Il s'agit de l'endroit où vous agissez sur les mesures que vous avez créées. Pour ce faire, vous pouvez définir des règles avec des conditions à remplir et des actions déclenchées lorsque ces règles sont remplies.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Tableau de bord&lt;/strong&gt;: Il s'agit de l'endroit où vous visualisez les mesures que vous avez créées dans Business Objects et les actions exécutées dans Decisions au moyen de graphiques et de tableaux de bord (collections de graphiques).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qtDNhv95--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.ctfassets.net/3prze68gbwl1/D1i0KNHkQFIYvVzVbwtDm/a05fdda93a0e7acd44cede7c202f9c40/illuminate-how-to-gaming-illuminate-workflow.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qtDNhv95--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.ctfassets.net/3prze68gbwl1/D1i0KNHkQFIYvVzVbwtDm/a05fdda93a0e7acd44cede7c202f9c40/illuminate-how-to-gaming-illuminate-workflow.png" alt="Illuminate is a constant cycle of experimentation and iteration once you have set up the associated Dashboard, Business Object, and Decisions." width="800" height="619"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Maintenant que nous avons défini la terminologie clé, l'intégration d'Illuminate à votre jeu se fait en six étapes :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Comprendre le schéma du message&lt;/li&gt;
&lt;li&gt; Choisir l'origine de vos données.&lt;/li&gt;
&lt;li&gt; Choisir vos données&lt;/li&gt;
&lt;li&gt; Visualiser vos données&lt;/li&gt;
&lt;li&gt; Mettez vos données au travail&lt;/li&gt;
&lt;li&gt; Visualiser et faire des ajustements&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Comprendre le schéma du message
&lt;/h3&gt;

&lt;p&gt;Il est essentiel de comprendre le schéma de données de votre jeu. Cela signifie qu'il faut identifier les types de données que vous souhaitez suivre et analyser, comme les actions des joueurs, les transactions dans le jeu et les événements du système. En comprenant et en documentant le contenu exact de la charge utile, les développeurs peuvent s'assurer que les analystes et les autres membres de l'équipe peuvent mapper les données vers les sources appropriées de manière efficace à l'aide de JSONPath. Vous comprendrez pourquoi cela est important lorsque vous choisissez vos données lors de la création d'objets de gestion.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sélectionnez l'origine de vos données
&lt;/h3&gt;

&lt;p&gt;Illuminate peut être utilisé avec n'importe quel jeu qui se connecte en ligne, que PubNub l'alimente ou non. Si PubNub alimente l'infrastructure de votre jeu, il suffit de sélectionner l'App et le KeySet appropriés utilisés pour votre jeu lors de la création de l'objet métier (plus d'informations à ce sujet prochainement) dans le &lt;a href="https://admin.pubnub.com/?utm_source=medium&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;portail d'administration&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Si votre jeu n'est pas propulsé par PubNub, vos données peuvent être envoyées en utilisant l'API Fire, soit à travers l'&lt;a href="https://www.pubnub.com/docs/sdks/rest-api/send-fire-request?utm_source=medium&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;API REST&lt;/a&gt;, soit à travers l'un de nos &lt;a href="https://www.pubnub.com/docs/sdks?utm_source=medium&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;SDK&lt;/a&gt;. Le point de terminaison Fire permet au client d'envoyer un message aux gestionnaires d'événements Functions. Ces messages iront directement à tous les gestionnaires d'événements enregistrés sur le canal auquel vous envoyez un message et déclencheront leur exécution.&lt;/p&gt;

&lt;p&gt;Pour utiliser l'API Fire de PubNub, vous devez créer un compte PubNub et configurer votre jeu de clés avec les fonctionnalités dont vous aurez besoin pour votre jeu. Ce jeu de clés contient les clés de publication et d'abonnement nécessaires à l'API Fire. Vous pouvez apprendre à le faire en suivant notre &lt;a href="https://www.pubnub.com/how-to/admin-portal-create-keys/?utm_source=medium&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;guide pratique&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Choisissez vos données : Objets d'affaires
&lt;/h3&gt;

&lt;p&gt;Les Business Objects sont fondamentaux dans Illuminate. Ce sont des conteneurs pour les données que vous voulez utiliser pour la prise de décision et la visualisation dans Illuminate et c'est essentiellement la façon dont vous obtenez des données dans Illuminate.&lt;/p&gt;

&lt;p&gt;Trois éléments composent un objet d'affaires :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Sélectionner les données (Mesures et Dimensions)&lt;/li&gt;
&lt;li&gt; Source de données (d'où proviennent les données)&lt;/li&gt;
&lt;li&gt; Conditions (métriques)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Bien qu'il ne s'agisse pas de bases de données, il est utile de penser à la structure d'un objet de gestion en termes de SELECT (mesures et dimensions), FROM (source de données), WHERE (métriques) de SQL. Lorsque vous créez vos objets de gestion, veillez à suivre la &lt;a href="https://www.pubnub.com/docs/illuminate/business-objects/basics?utm_source=medium&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;documentation&lt;/a&gt; pour connaître les détails spécifiques ou les solutions de contournement à prendre en compte.&lt;/p&gt;

&lt;h4&gt;
  
  
  Sélectionner les données
&lt;/h4&gt;

&lt;p&gt;Il existe deux types de valeurs différentes que vous pouvez sélectionner pour un objet de gestion : Les mesures et les dimensions.&lt;/p&gt;

&lt;p&gt;Les&lt;a href="https://www.pubnub.com/docs/illuminate/business-objects/basics#measures?utm_source=medium&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;mesures&lt;/a&gt; sont des valeurs numériques et quantitatives. Les exemples de mesures comprennent la durée du jeu, le nombre de pièces, le nombre de tués, les dommages causés par les armes ou la valeur de la commande.&lt;/p&gt;

&lt;p&gt;Les&lt;a href="https://www.pubnub.com/docs/illuminate/business-objects/basics#dimensions?utm_source=medium&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;dimensions&lt;/a&gt; sont des valeurs qualitatives, telles que la langue du joueur, les cosmétiques sélectionnés, le type de quête, le type d'arme choisi ou le niveau de jeu.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LX_501on--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.ctfassets.net/3prze68gbwl1/2g5KUkmNBlZ9GXWe7ofZlJ/479b6478e62cb00ca07cd0cbd7b205c0/illuminate-how-to-gaming-business-object-edit.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LX_501on--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.ctfassets.net/3prze68gbwl1/2g5KUkmNBlZ9GXWe7ofZlJ/479b6478e62cb00ca07cd0cbd7b205c0/illuminate-how-to-gaming-business-object-edit.png" alt="With Illuminate, you can create and edit Business Objects which contain mapped quantitative and qualitative data to capture." width="800" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Selon le type de données que vous souhaitez suivre, vous devrez &lt;a href="https://www.pubnub.com/docs/illuminate/business-objects/basics#data-mapping?utm_source=medium&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;mapper les données&lt;/a&gt; à vos mesures et dimensions à l'aide de JSONPath. Illuminate doit savoir où chercher pour commencer à capturer ces données à partir de votre source de données (que vous avez configurée à l'étape précédente). Pour définir la source de données, sélectionnez le bouton Map à côté de chaque mesure et dimension et fournissez les chemins JSON correspondants.&lt;/p&gt;

&lt;p&gt;C'est la partie la plus délicate de la configuration de Business Objects, car vous devez comprendre votre schéma de messages. Puisque vous avez documenté ou compris votre schéma de messages précédemment, vous devez le faire correspondre à la manière dont Iluminate recherche les données.&lt;/p&gt;

&lt;p&gt;Si vous capturez des messages (spécifiquement Publish Message API), Illuminate recherche la structure suivante. Si votre infrastructure n'est pas alimentée par PubNub, vos données devront être mappées dans la même structure que l'API Publish Message :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;message&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:{&lt;/span&gt; &lt;span class="c1"&gt;// data from the published message&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;body&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;message&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt; &lt;span class="nx"&gt;payload&lt;/span&gt; &lt;span class="nx"&gt;defined&lt;/span&gt; &lt;span class="nx"&gt;by&lt;/span&gt; &lt;span class="nx"&gt;you&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;meta&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;meta&lt;/span&gt; &lt;span class="nx"&gt;query&lt;/span&gt; &lt;span class="nx"&gt;params&lt;/span&gt; &lt;span class="nx"&gt;defined&lt;/span&gt; &lt;span class="nx"&gt;by&lt;/span&gt; &lt;span class="nx"&gt;you&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;userId&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="nx"&gt;ID&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;k&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="nx"&gt;UUID&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nx"&gt;sender&lt;/span&gt; &lt;span class="nx"&gt;ID&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;channel&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;the&lt;/span&gt; &lt;span class="nx"&gt;channel&lt;/span&gt; &lt;span class="nx"&gt;on&lt;/span&gt; &lt;span class="nx"&gt;which&lt;/span&gt; &lt;span class="nx"&gt;the&lt;/span&gt; &lt;span class="nx"&gt;message&lt;/span&gt; &lt;span class="nx"&gt;is&lt;/span&gt; &lt;span class="nx"&gt;published&lt;/span&gt;
 &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pour mapper correctement une mesure ou une dimension, vous devez fournir l'objet du &lt;code&gt;message&lt;/code&gt; suivi d'un autre champ. La structure sera toujours la suivante : &lt;code&gt;$.message.{obligatoire-secondary-field}.{optional-further-fields}&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;La_manière dont vous mappez les données dépend entièrement de la structure de votre message_. Voici quelques exemples de mappage des données pour les messages :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Nombre de pièces de monnaie (mesure) =&amp;gt; $.message.meta.coins&lt;/li&gt;
&lt;li&gt;  Article cosmétique équipé (dimension) =&amp;gt; $.message.body&lt;/li&gt;
&lt;li&gt;  Nom du canal (dimension) =&amp;gt; $.message.channel&lt;/li&gt;
&lt;li&gt;  Dommages causés (mesure) =&amp;gt; $.message.body[6]&lt;/li&gt;
&lt;li&gt;  Obtenir certains noms d'utilisateurs (dimension) =&amp;gt; $.message.userId&lt;/li&gt;
&lt;li&gt;  Nombre d'amis (mesure) =&amp;gt; $.message.body.user.friends_count&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xSMgYJkd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.ctfassets.net/3prze68gbwl1/1s2MtcR50cmcLk0s2EapsL/5aa0bb25a6fcb384f5e3f0b6932c99af/illuminate-how-to-gaming-map-coins-purchased.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xSMgYJkd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.ctfassets.net/3prze68gbwl1/1s2MtcR50cmcLk0s2EapsL/5aa0bb25a6fcb384f5e3f0b6932c99af/illuminate-how-to-gaming-map-coins-purchased.png" alt="In Illuminate, you can map different data to be captured via Business Objects." width="800" height="484"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Illuminate peut également capturer des données en utilisant le &lt;a href="https://www.pubnub.com/docs/general/metadata/channel-metadata?utm_source=medium&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;contexte applicatif&lt;/a&gt; de PubNub, qui vous permet de persister les métadonnées sur les canaux, les membres des canaux, les membres des canaux et les utilisateurs envoyés à travers le réseau PubNub. Vous pouvez accéder à ces informations en suivant exactement comment Illuminate capture ces données.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="c1"&gt;// data from the sending user metadata, can be null&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;externalId&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="err"&gt;’&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt; &lt;span class="nx"&gt;external&lt;/span&gt; &lt;span class="nx"&gt;ID&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="nx"&gt;type&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;status&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="nx"&gt;status&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;custom&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="nx"&gt;metadata&lt;/span&gt; &lt;span class="nx"&gt;defined&lt;/span&gt; &lt;span class="nx"&gt;by&lt;/span&gt; &lt;span class="nx"&gt;you&lt;/span&gt;
 &lt;span class="p"&gt;},&lt;/span&gt;
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;channel&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:{&lt;/span&gt; &lt;span class="c1"&gt;// data from the channel the message is sent on, can be null&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;channel&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;channel&lt;/span&gt; &lt;span class="nx"&gt;type&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;status&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;channel&lt;/span&gt; &lt;span class="nx"&gt;status&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;custom&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt; &lt;span class="nx"&gt;channel&lt;/span&gt; &lt;span class="nx"&gt;metadata&lt;/span&gt; &lt;span class="nx"&gt;defined&lt;/span&gt; &lt;span class="nx"&gt;by&lt;/span&gt; &lt;span class="nx"&gt;you&lt;/span&gt;
 &lt;span class="p"&gt;},&lt;/span&gt;
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;membership&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:{&lt;/span&gt; &lt;span class="c1"&gt;// data from the user's membership to the channel, can be null&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;status&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;membership&lt;/span&gt; &lt;span class="nx"&gt;status&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;custom&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt; &lt;span class="nx"&gt;membership&lt;/span&gt; &lt;span class="nx"&gt;metadata&lt;/span&gt; &lt;span class="nx"&gt;defined&lt;/span&gt; &lt;span class="nx"&gt;by&lt;/span&gt; &lt;span class="nx"&gt;you&lt;/span&gt;
 &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Comme pour les messages, pour mapper correctement une mesure ou une dimension, vous devez fournir l'objet &lt;code&gt;utilisateur&lt;/code&gt;, &lt;code&gt;canal&lt;/code&gt; ou &lt;code&gt;membre&lt;/code&gt; suivi d'au moins une clé de votre JSON. La structure sera toujours la suivante : &lt;code&gt;$.user.{obligatoire-secondary-field}.{optional-further-fields}&lt;/code&gt;. Voici quelques exemples de mappage des données pour App Context :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Détails de l'article de la boutique (dimension) =&amp;gt; $.channel.custom.details&lt;/li&gt;
&lt;li&gt;  Statut de la liste d'amis (dimension) =&amp;gt; $.membership.status&lt;/li&gt;
&lt;li&gt;  Langue du joueur (dimension) =&amp;gt; $.user.custom.language&lt;/li&gt;
&lt;li&gt;  Score moyen du joueur (dimension) =&amp;gt; $.user.custom.team_deathmatch_score&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Remarque&lt;/strong&gt;: pour créer un Business Object, vous devez ajouter au moins une dimension ou une mesure.&lt;/p&gt;

&lt;h4&gt;
  
  
  Source de données
&lt;/h4&gt;

&lt;p&gt;Une fois que vous avez défini vos mesures et vos dimensions, vous devez déterminer l'origine de vos données. C'est ce que vous avez déterminé précédemment. Assurez-vous de sélectionner l'application et l'ensemble de clés appropriés que vous avez définis plus tôt pour vous assurer qu'Illuminate capture les données de la bonne source.&lt;/p&gt;

&lt;h4&gt;
  
  
  Conditions (métriques)
&lt;/h4&gt;

&lt;p&gt;Une fois que vous avez sélectionné votre source de données, vous pouvez ajouter des conditions appelées &lt;a href="https://www.pubnub.com/docs/illuminate/business-objects/basics#metrics?utm_source=medium&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;métriques&lt;/a&gt;. Analogues à l'instruction WHERE de SQL, les métriques ne sont pas nécessaires pour que Business Objects capture des données, mais elles sont extrêmement utiles pour filtrer et appliquer des calculs à vos mesures et dimensions. Gardez à l'esprit que les métriques sont nécessaires pour créer une décision ou pour visualiser les tableaux de bord sous forme de graphiques (nous y reviendrons plus tard).&lt;/p&gt;

&lt;p&gt;Lorsque vous &lt;a href="https://www.pubnub.com/docs/illuminate/business-objects/create-business-object#create-metrics?utm_source=medium&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;créez des indicateurs&lt;/a&gt;, vous devez attribuer et sélectionner des champs aux filtres. Il y a quelques champs dont il faut tenir compte :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Nommez votre mesure de manière logique, car le graphique qui visualisera les données dans le tableau de bord portera le même nom.&lt;/li&gt;
&lt;li&gt;  Lors de la sélection de la fonction, les mesures peuvent actuellement être agrégées à l'aide de &lt;code&gt;SUM&lt;/code&gt;, &lt;code&gt;AVG&lt;/code&gt;, &lt;code&gt;MAX&lt;/code&gt; et &lt;code&gt;MIN&lt;/code&gt;. Les dimensions ne peuvent utiliser que la fonction &lt;code&gt;COUNT&lt;/code&gt;. Le choix de la fonction vous permet de sélectionner la mesure ou la dimension dans une liste déroulante.&lt;/li&gt;
&lt;li&gt;  Pour la période, sélectionnez la fenêtre d'agrégation ou la période de temps pour votre fonction.&lt;/li&gt;
&lt;li&gt;  Veillez à sélectionner les dimensions que vous souhaitez voir apparaître dans vos graphiques et décisions (car vous ne pourrez pas segmenter dans les graphiques et les appliquer aux règles dans les décisions si vous ne les sélectionnez pas ultérieurement).&lt;/li&gt;
&lt;li&gt;  Filtrer des messages spécifiques ou des données de contexte d'application en fonction de différentes dimensions. Gardez à l'esprit que pour visualiser les tableaux de bord et rassembler les données, vous n'avez pas besoin d'appliquer des filtres à l'indicateur.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vous pouvez créer plusieurs indicateurs pour un même objet de gestion afin de capturer des données différentes. Vous trouverez ci-dessous un exemple de mesure permettant d'enregistrer les dommages causés par une mesure et le type d'arme qui a causé ces dommages :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9tFdditq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.ctfassets.net/3prze68gbwl1/Sq6bSPz7hn0Gwy0VWUYqV/76f0278d0d5cc533d9c3d7a1b47d25d0/illuminate-how-to-gaming-business-object-edit-metric.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9tFdditq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.ctfassets.net/3prze68gbwl1/Sq6bSPz7hn0Gwy0VWUYqV/76f0278d0d5cc533d9c3d7a1b47d25d0/illuminate-how-to-gaming-business-object-edit-metric.png" alt="In Illuminate, you can edit a metric associated with a Business Object to capture specific data by using Filters." width="800" height="548"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Visualisez vos données : Tableaux de bord et graphiques
&lt;/h3&gt;

&lt;p&gt;Illuminate vous permet de &lt;a href="https://www.pubnub.com/docs/illuminate/dashboards/basics?utm_source=medium&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;visualiser&lt;/a&gt; non seulement les métriques que vous voulez suivre, mais aussi les actions de décision et leurs résultats à travers des graphiques sur les tableaux de bord.&lt;/p&gt;

&lt;p&gt;De cette façon, vous pouvez observer les tendances de votre produit en temps réel, réagir et raffiner votre approche avec des décisions d'affaires basées sur les données. C'est aussi une excellente façon de déterminer si Illuminate capture correctement vos données en fonction des objets d'affaires que vous avez configurés plus tôt !&lt;/p&gt;

&lt;p&gt;Vous pouvez créer un &lt;a href="https://www.pubnub.com/docs/illuminate/dashboards/basics#dashboards?utm_source=medium&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;tableau de bord&lt;/a&gt;, qui est une collection de graphiques qui vous permet de voir toutes vos mesures en un seul endroit et d'ajouter des graphiques à votre tableau de bord. Un &lt;a href="https://www.pubnub.com/docs/illuminate/dashboards/basics#charts?utm_source=medium&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;graphique&lt;/a&gt; est une représentation visuelle d'une mesure définie pour un objet de gestion donné.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2NwoFfyK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.ctfassets.net/3prze68gbwl1/6PLWtomxwi4aQ6zQwXdPDo/a30d85ab378d640247158556624d8e35/illuminate-how-to-gaming-add-chart.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2NwoFfyK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.ctfassets.net/3prze68gbwl1/6PLWtomxwi4aQ6zQwXdPDo/a30d85ab378d640247158556624d8e35/illuminate-how-to-gaming-add-chart.png" alt="With Illuminate, you can add charts to Dashboards to visualize data." width="800" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vous pouvez à tout moment personnaliser l'affichage des données métriques dans un graphique, par exemple en affichant un intervalle de temps différent (30 minutes, 1 heure ou une date personnalisée) et en affichant les données métriques dans différents types de graphiques, soit sous forme de diagramme à barres (affichage par défaut), soit sous forme de graphique linéaire.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DjSDXefD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.ctfassets.net/3prze68gbwl1/4B7KLgDDQWyZuTrTjxWF2Y/f602d35dc8da99a64dde0a9aa43d844e/illuminate-how-to-gaming-monetization-dashboard.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DjSDXefD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.ctfassets.net/3prze68gbwl1/4B7KLgDDQWyZuTrTjxWF2Y/f602d35dc8da99a64dde0a9aa43d844e/illuminate-how-to-gaming-monetization-dashboard.png" alt="In Illuminate, you can monitor data captured in real time by visualizing the charts in your Dashboard and see when any associated Decisions are triggered." width="740" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vous pouvez ajouter plusieurs graphiques (mesures) à un tableau de bord, et avoir différents tableaux de bord pour visualiser différents aspects de votre jeu (monétisation, gameplay, récompenses de quêtes, etc.). Une fois que vous aurez configuré vos décisions, vous pourrez visualiser les actions de décision déclenchées et leurs résultats sous forme de graphiques dans les tableaux de bord.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mettez vos données à profit : Décisions et actions
&lt;/h3&gt;

&lt;p&gt;Une fois votre métrique créée, vous pouvez commencer à évaluer ces données, surveiller les tendances et, plus important encore, agir en conséquence.&lt;/p&gt;

&lt;p&gt;Illuminate contient le module &lt;a href="https://www.pubnub.com/docs/illuminate/decisions/basics?utm_source=medium&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;Décisions&lt;/a&gt; qui vous permet de définir les métriques sur lesquelles vous voulez agir en créant des actions de différents types et des règles définissant quand ces actions doivent être exécutées.&lt;/p&gt;

&lt;p&gt;Lors de la création d'une décision, vous devez&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Choisissez un objet de gestion et l'une des mesures qui lui sont liées.&lt;/li&gt;
&lt;li&gt;  Définir les &lt;a href="https://www.pubnub.com/docs/illuminate/decisions/basics#actions?utm_source=medium&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;actions&lt;/a&gt; à entreprendre.&lt;/li&gt;
&lt;li&gt;  Configurer [rules}&lt;a href="https://www.pubnub.com/docs/illuminate/decisions/basics#rules?utm_source=medium&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;(https://www.pubnub.com/docs/illuminate/decisions/basics#rules)&lt;/a&gt; à l'aide des conditions choisies et des actions configurées. Ces règles déclencheront des actions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Les décisions visent à aider les gestionnaires de produits à expérimenter des stratégies d'engagement et de monétisation avant de les codifier et de les déployer. Avec Illuminate, ils peuvent prendre des décisions basées sur des données réelles plutôt que sur des hypothèses, puis agir sur ces données par le biais de conditions et d'actions automatisées.&lt;/p&gt;

&lt;p&gt;Les décisions se composent de deux parties : Les actions et les règles.&lt;/p&gt;

&lt;h4&gt;
  
  
  Actions
&lt;/h4&gt;

&lt;p&gt;Les actions définissent ce qui se passera lorsque les conditions (discutées ci-dessous) seront remplies.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SP1kLL6b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.ctfassets.net/3prze68gbwl1/2scdabnjHhwn2ygxEKaPcF/63e4c9b8988c3f64f08b9d61bbe712b2/illuminate-how-to-gaming-edit-configuration.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SP1kLL6b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.ctfassets.net/3prze68gbwl1/2scdabnjHhwn2ygxEKaPcF/63e4c9b8988c3f64f08b9d61bbe712b2/illuminate-how-to-gaming-edit-configuration.png" alt="In Illuminate, edit the configuration of your Decision to trigger on different conditions and execute various actions." width="800" height="632"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vous avez le choix entre cinq types d'actions lors de la configuration des actions :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Envoyer un message : Publie un message à un utilisateur ou à un canal et utilise l'API de publication PubNub. Vous pouvez éventuellement ajouter des variables (${variableThatChanges}) que vous pouvez contrôler et modifier dynamiquement lors de la mise en place de règles de décision.&lt;/li&gt;
&lt;li&gt; Webhook : Envoie un appel à une URL spécifique en se connectant à l'intégration d'un service tiers. Vous pouvez éventuellement ajouter des variables (${variableThatChanges}) que vous pouvez contrôler et modifier dynamiquement lors de la définition des règles de décision.&lt;/li&gt;
&lt;li&gt; Update User : Définit toute métadonnée utilisateur prédéfinie ou personnalisée en fournissant les informations souhaitées sous forme de paires clé/valeur, en utilisant l'API PubNub App Context pour les utilisateurs.&lt;/li&gt;
&lt;li&gt; Mettre à jour le canal : Définit toute métadonnée de canal prédéfinie ou personnalisée en fournissant les informations souhaitées sous forme de paires clé/valeur, en utilisant l'API PubNub App Context pour les canaux.&lt;/li&gt;
&lt;li&gt; Mise à jour des membres : Définit toute métadonnée d'adhésion prédéfinie ou personnalisée en fournissant les informations souhaitées sous forme de paires clé/valeur, en utilisant l'API PubNub App Context pour les adhésions.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Bien que vous ne puissiez configurer qu'une seule mesure par décision, vous pouvez créer plusieurs décisions pour couvrir vos cas d'utilisation. Veillez à suivre la &lt;a href="https://www.pubnub.com/docs/illuminate/decisions/basics#actions?utm_source=medium&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;documentation&lt;/a&gt; lorsque vous créez des actions pour votre décision.&lt;/p&gt;

&lt;p&gt;Une fois que vous avez fini de configurer vos actions, vous devez définir les règles de déclenchement des actions.&lt;/p&gt;

&lt;h4&gt;
  
  
  Règles
&lt;/h4&gt;

&lt;p&gt;Les&lt;a href="https://www.pubnub.com/docs/illuminate/decisions/basics#rules?utm_source=medium&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;règles&lt;/a&gt; se composent de &lt;a href="https://www.pubnub.com/docs/illuminate/decisions/basics#conditions?utm_source=medium&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;conditions&lt;/a&gt;, c'est-à-dire de critères qui doivent être remplis pour déclencher une action, à évaluer et d'actions à exécuter lorsque les conditions sont remplies. Une règle est une définition (ligne dans une table de décision) indiquant quelle action doit être déclenchée pour quelle condition.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--y8j6NLRN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.ctfassets.net/3prze68gbwl1/4r1hj3lXGlVwIM1zB2pUkG/808ad92653032c9bd901571a3ac000a1/illuminate-how-to-gaming-edit-rules.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--y8j6NLRN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.ctfassets.net/3prze68gbwl1/4r1hj3lXGlVwIM1zB2pUkG/808ad92653032c9bd901571a3ac000a1/illuminate-how-to-gaming-edit-rules.png" alt="In Illuminate, you can add and edit rules that when satisfied, trigger various Actions associated with your Decisions." width="800" height="705"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;La table de décision se compose de quatre parties :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Politique de frappe : Paramètre qui définit si vous souhaitez déclencher une ou plusieurs actions uniquement pour la première règle correspondante (Simple) ou pour toutes les règles (Multiple) si leurs conditions sont remplies.&lt;/li&gt;
&lt;li&gt; Fenêtre d'agrégation : La seule valeur que vous ne pouvez pas modifier dans la fenêtre de configuration des règles. Elle se remplit automatiquement à partir de la valeur de la période choisie pour la fonction lors de la création d'une mesure. Elle indique la fréquence à laquelle une mesure exécute une fonction donnée (COUNT, AVG, MAX ou autre) pour une mesure ou une dimension.&lt;/li&gt;
&lt;li&gt; Fréquence d'évaluation : Fenêtre de rétroaction pour la règle qui définit la fréquence à laquelle Illuminate doit exécuter la (les) règle(s) dans cette décision.&lt;/li&gt;
&lt;li&gt; Conditions : Ensemble d'exigences que vous définissez vous-même à l'aide de la table de configuration. C'est ici que vous définissez quelles conditions (et les seuils qu'elles atteignent) doivent déclencher quelles actions.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;N'oubliez pas que chaque ligne de la table de décision est une règle de décision distincte, composée de conditions et d'actions. L'&lt;strong&gt;ordre des règles détermine l'ordre dans lequel elles sont exécutées&lt;/strong&gt;. Si vous souhaitez modifier l'ordre existant, sélectionnez Modifier les règles d'une décision et modifiez l'ordre à l'aide des options Déplacer vers le haut ou Déplacer vers le bas du menu "Actions" situé à côté de chaque règle.&lt;/p&gt;

&lt;h3&gt;
  
  
  Visualiser et effectuer des ajustements
&lt;/h3&gt;

&lt;p&gt;Une fois que vous avez configuré vos objets de gestion, tableaux de bord et graphiques, ainsi que vos décisions, vous pouvez analyser et expérimenter des changements en temps réel. Vous n'avez plus besoin d'attendre les correctifs d'équilibrage pour voir si les changements que vous avez apportés ont un impact positif sur les joueurs ou le jeu.&lt;/p&gt;

&lt;p&gt;C'est ici que vous passerez le plus clair de votre temps, à prendre des décisions d'expérimentation afin d'effectuer des ajustements pour stimuler l'engagement dans votre jeu.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prochaines étapes
&lt;/h2&gt;

&lt;p&gt;Illuminate met le pouvoir de l'expérimentation en temps réel entre les mains des équipes directement responsables de la croissance et des résultats de l'entreprise. Il s'agit d'une plateforme précieuse pour expérimenter et prendre des décisions intelligentes basées sur des données relatives au gameplay et aux comportements des utilisateurs, en cartographiant les KPI qui sont importants pour votre jeu et en déclenchant des décisions basées sur ces comportements.&lt;/p&gt;

&lt;p&gt;Consultez nos &lt;a href="https://www.pubnub.com/products/Illuminate-gaming/?utm_source=medium&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=off_domain&amp;amp;utm_content=fr"&gt;ressources Illuminate&lt;/a&gt; pour voir comment Illuminate peut aider votre jeu et apprendre à tester Illuminate vous-même. Comme toujours, si vous avez des questions, n'hésitez pas à contacter l'équipe des relations avec les développeurs à l'&lt;a href="//mailto:devrel@pubnub.com"&gt;adresse devrel@pubnub.com.&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
