examples/concierge-saas: an Express server, a browser page with a microphone button and message list, and local contract tests. The server signs a two-minute identity JWT, verifies the raw hook signature, acknowledges a final transcript, then sends a signed answer 25 seconds later.
Run it
- Configure an active widget deployment for Existing Concierge Voice. Set its hook to
https://YOUR_TEST_ORIGIN/conversimple/replyand its allowed origin to exactlyhttps://YOUR_TEST_ORIGIN. Copy the shared secret once. - From the repository’s
examples/concierge-saasdirectory, install dependencies and run the checks:
- Serve this app behind HTTPS at the configured origin. Open
https://YOUR_TEST_ORIGIN/?deployment_id=YOUR_DEPLOYMENT_ID, click Start voice, and speak. Inspectfinal_transcript,waiting_for_reply,reply_text, and browser playback events alongside the conversation timeline.
npm test uses a fake callback server. It verifies the token, request HMAC, acknowledgement, and signed deferred callback without creating a real ConverSimple voice session. A real browser session on your test origin is the separate end-to-end check.
Before using this pattern for customers
The sample/api/voice-token returns a token for a fixed demo user and has no application sign-in check. Replace it with your own authenticated endpoint. Replace the in-memory timer with durable work keyed by turn_id, return your concierge’s actual text, and cancel when conversation_disconnected arrives. Never put the shared secret in browser code. Full contract.