What to prepare before you start
Choose an embed method first, then check the go-live list for that path.
Audience: buyers / integration owners · Applies to: DodoSpeak Oral
Goal: Choose an embed method before go-live, then list plan, keys, mount, and completion checks for that path. Trial can switch methods; production locks. If you need both, open a second Oral organization account and run them separately.
Confirm Oral is the right fit: What is DodoSpeak Oral, Choose Oral, SaaS, or private deploy. Compare methods: Two formal embed methods.
Buyers decide
- Plan: Speak Lite / Class / Assess / Exam. The plan controls whether tasks, History, and exams are allowed. It does not hide the four surfaces. See Plans, entitlements, and usage.
- Tenant: after provisioning you get a tenant id and a tenant key (backend only). You can start with an Oral Console trial on the website (sandbox); production tenants and tenant keys follow commercial provisioning.
- Usage: billed in 50-learner packs and minutes (see Minute pool and billing). The signup form asks for expected learner scale to suggest a pack count. Oral is about two-thirds the per-minute price of full SaaS.
Embed method is a go-live fork, not a price tier: page widget and sign-in mint have the same capability and Oral price. Trial can switch in Oral Console; lock the choice before production. Need both → open a second Oral organization account. See below and Two formal embed methods.
Integrators prepare
Do this in order; you do not need every step on day one.
-
Choose page widget or sign-in mint (the fork)
No server / cannot change login → page widget (needs roster learner codes). You already have login and need LMS write-back by student id → sign-in mint. Compare Two formal embed methods.
Trial can switch. Production locks this organization account; you cannot self-serve a change. Need both: open a second Oral organization account. The same school can attach two accounts (one widget, one mint). Usage, keys, and roster / mint identity stay separate and run independently. Do not describe this as hot-switching two methods inside one production tenant. -
Credentials (for the method you chose)
- Mint: use the tenant key on your server to mint embed tokens. Never put the tenant key in the browser, app bundle, or frontend repo.
- Widget: use the publishable key, register Origins, and finish roster learner codes (or OTP/PIN). The shop key still must not enter the page.
-
Mount on the frontend
Place a container, load the embed script, callOralEmbed.mount. Surfaces: practice / assignment / report / exam (must be allowed by plan). You may pass a theme token. See How to embed in your system. -
Treat the API as completion truth
The embed may fire “looks complete.” Scores, submit status, and usage should be confirmed by your backend via Oral API (or a webhook). See How to get exam scores and view records. -
Origin and security
Register allowed embed Origins; set CSP / iframe ancestors as needed. The browser asks the learner for the microphone. -
(Optional) Try Oral Console first
Website trial (includes expected learner scale) → sign in to Oral Console and walk Learner / Publisher / Manager / Developer (Manager: Manager: settings hub, billing, and roster). During trial you can switch embed method in Settings. Do not copy these four roles into your production product.
Go-live checklist
Pick the embed method first, then complete only that path. Shared items apply to both.
Choose an embed method first
- Page widget or sign-in mint is chosen (see Two formal embed methods)
- Trial can switch; production locks this account
- If you need both: a second Oral organization account is open and the two stacks run independently (do not share one shop key or treat one roster as the only identity source)
Shared (either method)
- Plan and usage terms confirmed
- At least one surface mounts with
OralEmbed.mountand the learner can speak - Origin / CSP registered for production hosts
- Completion / scores reconciled via API (if you need write-back)
- Under-plan denials are handled in UX (API rejects; buttons stay visible)
Page widget only
- Roster is ready; you can issue learner codes (or OTP / PIN)
- Use the publishable key; the tenant key never enters the page
- The learner identifies (scan / enter code) before speaking
Sign-in mint only
- Tenant key only on the server
- Short-lived embed tokens can be issued and refreshed
-
external_user_idaligns with the LMS student id
“Can issue short-lived tokens” belongs to mint only. On the widget path, Oral mints after identification — do not check both.