LIVE · AUDIT-KETJU · EU
JÄRJESTELMÄ · 99,99 % KÄYTETTÄVYYS
v 1.0 ↗ TEHTY EU:SSA

@nexbasira/embed

Selainwidget, joka renderöi NexBasiran kenttäpuolen kokemuksen omassa sovelluksessasi. Pudota <div>, osoita se muodostettuun istunto-URL:iin, kuuntele elinkaaritapahtumia. Ei iframe-boilerplatea, joka sinun pitäisi kirjoittaa itse.

Asennus

npm install @nexbasira/embed

Tai <script>-tagilla ei-bundatussa käytössä — katso Script-tagi alla.

Peruskäyttö

import { embed } from "@nexbasira/embed";

const widget = embed({
  container: "#nb-host",          // selector or HTMLElement
  sessionUrl: invite.url,          // minted by your backend via the Node/Python SDK
  width: "100%",
  height: "720px",
  onReady: () => console.log("iframe loaded"),
  onSessionJoined: (id) => console.log("field user joined", id),
  onEvidenceAdded: (ev) => console.log("evidence", ev),
  onSessionComplete: (id) => router.push(`/inspections/${id}`),
});

sessionUrl on kertakäyttöinen allekirjoitettu URL, jonka taustajärjestelmäsi saa sessions.invite():sta. Älä koskaan upota API-salaisuutta URL:iin — vain kenttäistunnon token, joka on kertakäyttöinen + IP/UA-sidottu.

Imperatiiviset metodit

Palautettu widget-kahva antaa isäntäsivun ohjata kenttäpuolen kokemusta ohjelmallisesti — tyypillisesti iframen ulkopuolella olevan työkalupalkin käyttämä:

widget.requestSnapshot();    // operator-side trigger; field captures a frame
widget.openWhiteboard();
widget.closeWhiteboard();
widget.switchCamera();        // toggle front / rear on supported devices
widget.mute();
widget.unmute();
widget.endSession();
widget.destroy();             // tear down the iframe + remove listeners

Jokainen metodi lähettää viestin iframen ikkunaan postMessage:n kautta määritetyllä expectedOriginilla; iframen sisäinen dispatcher reitittää ne kyseessä olevaan ohjaukseen.

Elinkaaritapahtumat

Jokainen embed({ on... }):lle välittämäsi callback kutsutaan, kun vastaava postMessage iframesta saapuu. Origin-tarkistus pakotetaan — viestit miltä tahansa muulta originilta ohitetaan, joten voit luottaa hyötykuorman muotoon.

CallbackLaukeaa kunHyötykuorma
onReadyiframe latautui + kättely valmis
onSessionJoinedKenttäkäyttäjä liittyi huoneeseensessionId
onSessionCompleteIstunto suljettu (operaattori päätti tai automaattivanheni)sessionId
onEvidenceAddedUusi tilannekuva / merkintä / valkotaulu / leike{ id, kind }
onWhiteboardOpenedValkotaulupaneeli avattu
onWhiteboardSavedValkotaulu vietiin todisteeksi{ id }
onParticipantJoined / onParticipantLeftOsallistujan tilamuutos{ id, role }
onErrorMikä tahansa iframe-puolen virhe{ message, code }

Script-tagi

Kuluttajille ilman bundleria:

<script src="https://unpkg.com/@nexbasira/embed@latest/dist/index.umd.js"></script>
<div id="nb-host" style="width: 100%; height: 720px"></div>
<script>
  const widget = NexBasira.embed({
    container: "#nb-host",
    sessionUrl: "<minted-by-your-backend>",
    onSessionComplete: (id) => alert("done: " + id),
  });
</script>

Bundle liittää NexBasira.embed:n windowiin tätä kuviota varten.

Origin-sidonta

Oletuksena widget johtaa odotetun iframe-originin välittämästäsi URL:stä (sessionUrl) ja hylkää viestit miltä tahansa muulta originilta. Jos isännöit kenttäpuolen kokemusta mukautetulla domainilla (Pro-taso), välitä expectedOrigin eksplisiittisesti:

embed({
  container: "#nb-host",
  sessionUrl: "https://inspect.yourco.com/r/abc",
  expectedOrigin: "https://inspect.yourco.com",
  // ...
});

React-sovellus?

Käytä @nexbasira/react sen sijaan — sama widget alla, idiomaattinen React-API (<NexBasiraSession>-komponentti + useNexBasiraSession()-hook), tuoreet sulkeuma-callbackit uudelleenrenderöintien yli.

Mitä seuraavaksi