Skip to content

Intégrer Omogen dans une iframe ​

Deux pages Omogen peuvent être intégrées dans un <iframe> au sein de votre propre application (portail candidat, page carrière, outil interne…) :

PageURLPour quoi faire
Formulaire de candidaturehttps://agent.omogen.ai/form/{job_id}Le candidat postule et passe son entretien, par téléphone ou en ligne selon ce que propose l'offre
Page d'invitationhttps://agent.omogen.ai/invitation/{process_id}Un candidat déjà invité démarre son entretien

Les deux pages peuvent lancer un webcall : l'entretien se passe dans le navigateur et utilise le micro du candidat. Cette page documente ce que l'iframe doit autoriser, puis les événements postMessage émis vers votre page aux états terminaux de l'entretien.

Autoriser le micro : allow="microphone; autoplay" ​

html
<iframe
  src="https://agent.omogen.ai/form/{job_id}"
  allow="microphone; autoplay"
  title="Entretien Omogen"
  width="100%"
  height="800"
  style="border: none;"
></iframe>
  • microphone permet à la page Omogen de demander l'accès au micro.
  • autoplay permet à la voix de l'agent de démarrer sans clic supplémentaire.

Attribut obligatoire pour le webcall

Sans allow="microphone", le navigateur refuse le micro à la page intégrée d'office, sans même afficher de demande d'autorisation. C'est le cas sur tous les navigateurs (Chrome, Edge, Safari, Firefox), sur ordinateur comme sur mobile. Le candidat ne peut rien y changer depuis ses réglages, même s'il a déjà autorisé le micro pour Omogen : seule votre iframe peut le débloquer.

Ce que voit le candidat si l'attribut manque ​

Au test du micro qui précède l'entretien, un message lui indique que l'entretien en ligne n'est pas possible sur cette page. Si l'offre propose aussi l'entretien par téléphone, un bouton « Passer l'entretien par téléphone » lui permet de continuer, sans quitter votre page.

Pourquoi le problème peut apparaître du jour au lendemain

Une réservation par téléphone n'a pas besoin du micro : une iframe sans allow fonctionne tant que l'offre ne propose que le téléphone. Le blocage apparaît dès que l'entretien en ligne est activé sur l'offre ou l'organisation, sans que rien n'ait changé dans votre intégration.

Outils no-code (WeWeb, Webflow, Bubble…) ​

L'élément « iframe » standard de certains constructeurs ne renseigne que l'adresse de la page et ne permet pas d'ajouter l'attribut allow. C'est le cas, par exemple, de l'élément iframe de WeWeb. Utilisez alors un élément de code HTML personnalisé qui contient la balise <iframe> complète ci-dessus, avec la même adresse (paramètres dynamiques compris).

Vérifier votre intégration ​

  1. Ouvrez la page de votre application qui contient l'iframe, choisissez l'entretien en ligne et lancez le test du micro. Le navigateur doit afficher sa demande d'accès au micro, ou le test doit passer directement si le micro est déjà autorisé.
  2. Pour un contrôle technique dans Chrome ou Edge : ouvrez les outils de développement, choisissez le contexte agent.omogen.ai dans la console, puis tapez document.featurePolicy.allowsFeature("microphone"). La réponse doit être true.

Testez depuis votre application

Ouvert directement dans un onglet, le lien Omogen fonctionne toujours : le test ne prouve rien sur votre iframe. Faites-le depuis la page qui l'intègre.

Formulaire de candidature ​

Pour pré-remplir les informations du candidat ou masquer certains éléments du formulaire, voir Formulaire de candidature.

Page d'invitation ​

L'URL à intégrer 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; autoplay"
  width="100%"
  height="100%"
></iframe>

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.top.postMessage(
  {
    type: "webCallStatus",
    status: "success" | "error" | "cancelled"
  },
  "*"
);

Le message est envoyé à la fenêtre de plus haut niveau (window.top), même si l'iframe Omogen est imbriquée dans d'autres iframes : écoutez-le dans votre page principale.

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 pendant l'entretien : micro refusé, 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 (page d'invitation uniquement)

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

Le test du micro n'émet aucun événement

Les événements ne concernent que l'entretien lui-même. Un candidat arrêté au test du micro qui le précède, par exemple dans une iframe sans allow, ne déclenche ni error ni cancelled.

É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-09-14

Documentation Omogen