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 :
<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 :
window.parent.postMessage(
{
type: "webCallStatus",
status: "success" | "error" | "cancelled"
},
"*"
);Trois statuts terminaux sont émis :
status | Quand l'événement est émis |
|---|---|
success | L'entretien s'est déroulé normalement et le candidat est arrivé à la fin de la conversation |
error | Erreur irrécupérable : permission micro refusée, ou erreur de connexion empêchant le démarrage / la poursuite de l'appel |
cancelled | Le 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 :
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
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