Passer au contenu principal
Utilisez le SDK pour les opérations de conversation Connect360.

Obtenez ou créez une conversation

const conversation = await plato.v1.connect.getOrCreateConversation.mutate({
  type: "DIRECT",
  customer: {
    externalId: "website_user_123",
    name: "Jane Customer",
    email: "[email protected]",
  },
  channelIdentifier: "example.com",
  metadata: {
    source: "website-chat",
  },
});
Au moins un de ces éléments doit être fourni :
  • customerId
  • customer
  • memberIds

Saisir

{
  name?: string | null;
  type?: "DIRECT" | "GROUP";
  customerId?: string | null;
  customer?: {
    id?: string | null;
    externalId?: string | null;
    name?: string | null;
    email?: string | null;
    phone?: string | null;
    image?: string | null;
    metadata?: Record<string, unknown> | null;
  } | null;
  memberIds?: string[] | null;
  channelIds?: string[] | null;
  channelIdentifier?: string | null;
  metadata?: Record<string, unknown> | null;
}

Comportement de réutilisation

Lorsqu’un client correspondant a déjà une conversation de niveau supérieur, Plato renvoie la conversation existante. Lorsqu’aucune conversation correspondante n’existe, Plato en crée une. Le membre de l’espace de travail de la clé API est automatiquement inclus en tant que participant.

Créer une sous-conversation

const thread = await plato.v1.connect.createSubConversation.mutate({
  parentId: conversation.id,
  name: "Order #1042",
  type: "GROUP",
  customer: {
    externalId: "website_user_123",
  },
  channelIdentifier: "example.com",
});
Les sous-conversations héritent des canaux parents lorsque channelIds et channelIdentifier sont omis.

Mettre à jour une conversation

const updated = await plato.v1.connect.updateConversation.mutate({
  id: conversation.id,
  name: "VIP customer support",
  metadata: {
    priority: "high",
  },
});
Vous pouvez mettre à jour :
  • name
  • metadata
  • parentId
Les métadonnées sont fusionnées dans l’objet de métadonnées existant.

Supprimer une conversation

await plato.v1.connect.deleteConversation.mutate({
  id: conversation.id,
});
La clé API nécessite connect360:conversation:delete. Supprimez uniquement lorsque l’intégration est propriétaire du cycle de vie de la conversation.

Répertorier les sous-conversations

const page = await plato.v1.connect.listSubConversations.query({
  parentId: conversation.id,
  limit: 30,
});
Réponse:
{
  items: [
    {
      id: "conversation_child_1",
      name: "Order #1042",
      parentId: "conversation_parent_1",
      messages: [],
      participants: [],
      _count: {
        children: 0,
        messages: 3
      }
    }
  ],
  nextCursor: 30
}
Pour récupérer la page suivante :
const nextPage = await plato.v1.connect.listSubConversations.query({
  parentId: conversation.id,
  cursor: page.nextCursor,
  limit: 30,
});