Aller au contenu principal

Démarrage rapide Websocket en temps réel

Ce démarrage rapide rassemble le minimum nécessaire pour commencer à recevoir les événements GraphQL Legalesign en temps réel.

info

Si vous préférez les rappels serveur-à-serveur aux connexions persistantes, les webhooks sont également disponibles (décrits dans la section REST API).

Vous utilisez un assistant de codage IA ?

Pour de meilleurs résultats, fournissez à votre outil IA ces pages ensemble :

Vous allez :

  • obtenir un jeton d’accès
  • ouvrir une connexion websocket AppSync
  • vous abonner à un flux utilisateur ou groupe
  • analyser l’enveloppe d’événement
  • router selon category et event

Avant de commencer

Vous avez besoin de :

  • accès API activé pour votre compte
  • un compte utilisateur Legalesign
  • un jeton d’accès
  • un groupId si vous souhaitez utiliser subscribeGroupFeed

Commencez ici si vous n’avez pas encore effectué ces étapes :

Étape 1 : Choisir un flux

Utilisez :

  • subscribeUserFeed pour les événements ciblant un utilisateur comme la progression des uploads
  • subscribeGroupFeed pour les événements ciblant un groupe comme les mises à jour de documents, destinataires, modèles, tâches, crédits, et cycle de vie

Flux utilisateur

subscription SubscribeUserFeed {
subscribeUserFeed {
userId
data
}
}

Flux groupe

subscription SubscribeGroupFeed($groupId: String!) {
subscribeGroupFeed(groupId: $groupId) {
groupId
data
}
}

Étape 2 : Se connecter au point de terminaison Websocket

Utilisez le point de terminaison websocket AppSync :

wss://graphql.uk.legalesign.com/graphql

Passez votre token bearer dans les paramètres de connexion.

import { createClient } from 'graphql-ws';

import WebSocket from 'ws';

const client = createClient({
url: 'wss://graphql.uk.legalesign.com/graphql',
webSocketImpl: WebSocket,
connectionParams: {
Authorization: `Bearer ${accessToken}`,
},
});

Étape 3 : S’abonner

client.subscribe(
{
query: `
subscription SubscribeGroupFeed($groupId: String!) {
subscribeGroupFeed(groupId: $groupId) {
groupId
data
}
}
`,
variables: {
groupId: '<your-group-id>',
},
},
{
next: ({ data }) => {
console.log('raw message', data);
},
error: console.error,
complete: () => console.log('subscription closed'),
}
);

Étape 4 : Analyser la charge utile interne

Le champ d’abonnement retourne :

  • un wrapper de livraison (groupId ou userId)
  • une chaîne JSON dans data

Analysez d’abord le champ interne data avant toute autre action :

const parseEnvelope = (payload) => {
const raw = payload?.data;
if (!raw) return null;
return typeof raw === 'string' ? JSON.parse(raw) : raw;
};

Exemple :

next: ({ data }) => {
const wrapper = data?.subscribeGroupFeed;
const event = parseEnvelope(wrapper);

console.log('event id', event?.eventId);
console.log('category', event?.category);
console.log('event', event?.event);
console.log('payload', event?.data);
}

Étape 5 : Router selon category et event

Ne créez pas de nouvelles intégrations basées sur les codes hérités de type systemMessage.

Utilisez :

  • category pour identifier la famille d’événements
  • event pour identifier le changement spécifique

Exemples :

  • category: "upload", event: "uploadCompleted"
  • category: "task", event: "taskCompleted"
  • category: "documentLifecycle", event: "documentCreated"
  • category: "recipientLifecycle", event: "recipientVisiting"

Schémas de démarrage typiques

Si vous devez choisir où commencer :

Que lire ensuite