Intégration borne (pour les développeurs)
Embarquer OmniLab dans un wrapper borne, une page hôte iframe ou une WebView avec les bons messages, le bon dimensionnement et les bonnes permissions.
Ce guide explique les aspects techniques du maintien d'OmniLab dans une coque borne ou une application wrapper. Utilisez-le avec les articles d'intégration publics lorsque votre équipe contrôle la page hôte, le conteneur WebView ou l'environnement d'exécution de l'appareil autour d'OmniLab.
Choisir le bon modèle de wrapper
| Modèle de wrapper | Bon usage | Ce que votre équipe gère |
|---|---|---|
| Iframe manuel dans une page web | Une page borne navigateur ou une coque de site existante | La page hôte, l'écouteur de redimensionnement, les permissions et l'UI environnante |
| Tag JavaScript player | Une page hôte réutilisable doit charger différentes campagnes depuis l'URL | Le template de page hôte et la stratégie de paramètre de page |
| WebView native ou managée | Une app mobile ou un wrapper borne contrôle tout l'écran | L'environnement WebView, le bridge, les permissions et le comportement de session |
Utiliser des URLs prêtes pour l'intégration
Partez des mêmes URLs OmniLab documentées dans les guides d'intégration publics :
- page d'accueil de campagne lorsque le wrapper doit afficher plusieurs expériences
- URL directe de point de contact lorsque le wrapper doit lancer immédiatement une expérience
embedded=1lorsque vous utilisez un chemin d'intégration iframe manuel ou WebView
Messages parent-enfant à prendre en charge
OmniLab peut envoyer des événements postMessage au wrapper parent. Le plus important pour la plupart des bornes est le redimensionnement.
<script>
window.addEventListener("message", (event) => {
console.log("Message OmniLab", event.origin, event.data);
if (event.data?.type === "resize" && event.data?.target === "body") {
const iframe = document.getElementById("omnilab-embed");
if (iframe && typeof event.data?.data?.height === "number") {
iframe.style.height = event.data.data.height + "px";
}
}
});
</script>Dans des coques iframe plus avancées, OmniLab peut aussi émettre des messages liés aux modales comme open-modal et close-modal. Si votre wrapper doit participer à ce layout, validez le flux exact des messages en staging avec OmniLab avant de livrer.
Pattern JavaScript player
Lorsqu'une seule page borne doit charger différentes campagnes, utilisez le tag player OmniLab avec un paramètre de requête tel que id.
<div id="omnilab-container"></div>
<script>
(function (b, o, n, u, s) {
var a, t;
a = b.createElement(u);
a.async = 1;
a.src = s;
t = b.getElementsByTagName(u)[0];
t.parentNode.insertBefore(a, t);
o[n] = o[n] || [];
})(document, window, "_om_async", "script", "https://<omnilab-script-host>/omplayer.js");
_om_async.push([
"init",
{
domain: "experience.example.com",
targetId: "omnilab-container",
queryParam: "id",
},
]);
</script>Responsabilités de l'hôte hors d'OmniLab
Votre wrapper doit prendre en charge :
- les permissions au niveau de l'appareil pour la caméra, le microphone et la géolocalisation
- les minuteurs d'inactivité et le comportement d'écran d'accueil de la borne
- le matériel de scan ou les périphériques externes
- le passage de session entre votre coque et OmniLab
- la journalisation et les diagnostics de support à distance pour le conteneur lui-même
Checklist de debug
- Confirmez que le wrapper charge la bonne URL de campagne ou de point de contact.
- Vérifiez que l'iframe ou la WebView peut recevoir la caméra et les autres permissions requises.
- Contrôlez que les événements
postMessaged'OmniLab atteignent la coque parente. - Testez les tiroirs, claviers et flux de modales dans le vrai conteneur borne, pas seulement dans un onglet de navigateur autonome.
- Journalisez les messages OmniLab bruts pendant le staging pour comparer rapidement le comportement attendu et le comportement réel.
Gardez les secrets hors du client borne
Si la borne a aussi besoin d'un accès API server-to-server, effectuez l'authentification et les appels API depuis votre propre backend. N'intégrez pas les identifiants client OmniLab dans la page borne ou le bundle WebView.
Patterns d'URL et paramètres de requête pour borne
Les déploiements borne utilisent généralement l'un de ces patterns d'URL. Incluez toujours embedded=1 lors du chargement dans un iframe ou une WebView.
| Cas d'usage | Pattern d'URL |
|---|---|
| Page d'accueil de campagne | https://experience.example.com/<campaign-public-link>?embedded=1 |
| Point de contact direct | https://experience.example.com/<campaign-public-link>?c=<touchpoint-id>&embedded=1 |
| Espace spécifique | https://experience.example.com/<campaign-public-link>?s=<space-id>&embedded=1 |
| Langue fixe | Ajoutez &l=<language-code> |
| Variante fixe | Ajoutez &v=<variant-id> |
Pour les déploiements utilisant le tag JavaScript player, l'URL de la page hôte contrôle quelle campagne se charge :
https://kiosk.example.com/?id=summer-campaignhttps://kiosk.example.com/?id=summer-campaign%3Fc%3D<touchpoint-id>%26embedded%3D1
Encodez toute query string imbriquée avant de publier le lien vers le tag player.
Pour aller plus loin
Intégration par iframe
Partir des patterns et URLs iframe publics.
Intégration WebView
Revoir les exigences mobiles et côté wrapper pour la diffusion WebView.
Intégration embarquée et WebView
Référence technique complète de tous les modes d'intégration, dont React Native et les domaines personnalisés.
Écrire des scripts d'organisation
Garder tout scripting côté OmniLab Pages sûr lorsque l'expérience est embarquée.
Patterns d'intégration courants
Combiner la diffusion borne avec des parcours booking, CRM ou analytics.
Approfondissement des templates Liquid et des variables
Écrire du Liquid valide pour les notifications OmniLab et comprendre quelles variables chaque type de notification accepte.
Patterns d'intégration courants
Utiliser des patterns OmniLab éprouvés pour la synchro CRM, l'export analytics, le self-service booking, et l'automatisation maîtrisée.