Skip to content

Repository files navigation

CrestApps Soft Phone — Browser Extension

A cross-browser (Chrome + Firefox, Manifest V3) extension that turns your organization's soft phone into a floating, always-on window — so a live WebRTC call survives navigating to any website, and inbound calls ring even when the phone window is minimized or fully closed.

It hosts your tenant's first-party https://{domain}/softphone page in a dedicated, resizable popup window (no iframe, no cookie/framing work), and keeps its own authenticated SignalR connection to the tenant's telephony hub alive in a Chrome offscreen document / Firefox background page. That lets it raise a desktop notification + popup + ringtone and Decline/Voicemail a call without the window being open. It's provider-agnostic: it never loads a telephony SDK and speaks only to your tenant's own endpoints.

Requirements

This extension is a companion to a website running on OrchardCore with the CrestApps Telephony module enabled. The server side — the /softphone page, the /softphone/extension-config endpoint, and the telephony hub the extension connects to — is provided by:

CrestApps.OrchardCore — Telephony module

The tenant must enable the module's Soft Phone Extension feature. Point the extension at your tenant domain (below) and sign in with your normal site login — the extension uses that existing session, no separate password.

Install & configure

Install from the Chrome Web Store / Firefox Add-ons (or load unpacked for development, below). Then:

  1. Open the extension options.
  2. Enter your tenant domain (e.g. phone.example.com) and click Save & grant access — this requests host permission for only that site. Nothing is injected into any other website.
  3. Click the toolbar button to open the phone. Click it again to collapse it to a circle or expand it back; it remembers its size and position.

Develop

npm install
npm run build          # builds dist/chrome and dist/firefox (+ versioned zips)
npm run watch          # rebuild on change
npm run typecheck
npm run lint
npm test

Load unpacked

  • Chrome: chrome://extensions → Developer mode → Load unpackeddist/chrome.
  • Firefox: npm run start:firefox (temporary profile via web-ext), or about:debugging → This Firefox → Load Temporary Add-ondist/firefox/manifest.json.

Tech

TypeScript · esbuild (build.mjs, per-browser dist/) · webextension-polyfill · @microsoft/signalr (bundled locally; MV3 forbids remote code) · Vitest · web-ext.

build.mjs bundles the TypeScript entry points, substitutes the version into each per-browser manifest template under manifests/, copies static assets, and packages dist/<target> into versioned zips for store upload.

Releasing

Store publishing is automated. Push a vX.Y.Z tag to build, package, publish to the Chrome Web Store + Firefox AMO, and cut a GitHub Release — or use the Publish (manual) GitHub Action to publish to a single store. See docs/RELEASING.md for the one-time account setup and required secrets.

License

© CrestApps. All rights reserved.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages