Skip to content

Intégration du webcall en iframe

Le webcall Omogen peut être embarqué dans un <iframe> au sein de votre propre application (portail candidat, page carrière, dashboard interne…). Cette page documente le contrat d'intégration : URL à charger et événements postMessage émis vers la fenêtre parente aux états terminaux de l'entretien.

Charger le webcall dans une iframe

L'URL à embarquer est la page d'invitation du candidat, qui inclut le bouton de démarrage du webcall :

html
<iframe
  src="https://agent.omogen.ai/invitation/{process_id}"
  allow="microphone"
  width="100%"
  height="100%"
></iframe>

Permission micro requise

L'attribut allow="microphone" est obligatoire pour que le candidat puisse autoriser l'accès au micro depuis l'iframe. Sans cet attribut, le navigateur refuse silencieusement la permission et l'entretien échoue.

Le process_id est l'UUID renvoyé par POST /applications (ou /applications/cv-only) dans le champ data.invitation_link — voir Lien d'invitation candidat.

Événements postMessage

Quand l'entretien atteint un état terminal, l'app Omogen appelle :

js
window.parent.postMessage(
  {
    type: "webCallStatus",
    status: "success" | "error" | "cancelled"
  },
  "*"
);

Trois statuts terminaux sont émis :

statusQuand l'événement est émis
successL'entretien s'est déroulé normalement et le candidat est arrivé à la fin de la conversation
errorErreur irrécupérable : permission micro refusée, ou erreur de connexion empêchant le démarrage / la poursuite de l'appel
cancelledLe candidat a raccroché puis cliqué sur « Quitter l'entretien » depuis l'écran de reprise

Garantie unicité

Un seul événement terminal est émis par session d'entretien. Si le candidat clique sur « Réessayer » après une erreur et que le call réussit, l'événement success sera bien émis à la fin (en plus de l'error initial).

Écouter les événements côté parent

Voici un exemple minimal en JavaScript pur :

js
window.addEventListener("message", (event) => {
  // Filtrer les messages : on n'attend que ceux de l'app Omogen
  if (event.origin !== "https://agent.omogen.ai") return;
  if (!event.data || event.data.type !== "webCallStatus") return;

  switch (event.data.status) {
    case "success":
      // Entretien terminé avec succès — passer à l'étape suivante
      break;
    case "error":
      // Afficher un message d'erreur ou proposer un fallback
      break;
    case "cancelled":
      // Le candidat a abandonné — proposer un autre créneau ?
      break;
  }
});

Vérifier l'origin

En production, filtrez toujours les messages sur event.origin pour ignorer les messages provenant d'autres iframes ou de scripts tiers. Omogen utilise "*" comme targetOrigin côté émetteur, donc la vérification doit être faite côté récepteur.

Différence entre cancelled et fermeture d'onglet

L'événement cancelled n'est émis que lorsque le candidat clique explicitement sur le bouton « Quitter l'entretien » sur l'écran qui s'affiche après un raccrochage. Si le candidat ferme l'onglet ou navigue ailleurs en cours d'entretien, aucun message n'est émis — la fermeture du navigateur ne déclenche pas d'événement postMessage fiable.

Pour détecter ce cas côté parent, vous pouvez surveiller l'état de l'iframe (load, unload) ou implémenter un timeout après un dernier événement attendu.

Format type TypeScript

ts
type WebCallStatus = "success" | "error" | "cancelled";

interface WebCallStatusMessage {
  type: "webCallStatus";
  status: WebCallStatus;
}

Support et contact

Pour activer le webcall sur votre organisation ou pour toute question sur l'intégration en iframe : gillian@omogen.ai.

Dernière mise à jour : 2026-05-20

Documentation Omogen