@bravophone/webphone 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -3
- package/dist/bravophone.mjs +358 -287
- package/dist/bravophone.umd.js +43 -7
- package/host/_locales/pt_BR/messages.json +1430 -0
- package/host/allowed-origins.json +8 -0
- package/host/css/bravophoneContactDialer.css +385 -0
- package/host/css/dark-theme.css +116 -0
- package/host/favicon.ico +0 -0
- package/host/fonts/Audiowide-Regular.ttf +0 -0
- package/host/fonts/Seguiemj.ttf +0 -0
- package/host/images/answer-gray.png +0 -0
- package/host/images/answer.png +0 -0
- package/host/images/auto-answer-off.png +0 -0
- package/host/images/auto-answer-on.png +0 -0
- package/host/images/avatar.png +0 -0
- package/host/images/bravophone-logo.svg +39 -0
- package/host/images/bravotech_Bravotech_logo.png +0 -0
- package/host/images/circle-green.png +0 -0
- package/host/images/circle-orange.png +0 -0
- package/host/images/circle-red.png +0 -0
- package/host/images/dialer-button-down.png +0 -0
- package/host/images/dialer-button.png +0 -0
- package/host/images/gateways/activecampaign.png +0 -0
- package/host/images/gateways/agendor.png +0 -0
- package/host/images/gateways/appfacilita.png +0 -0
- package/host/images/gateways/call-in.png +0 -0
- package/host/images/gateways/click-to-call.png +0 -0
- package/host/images/gateways/clickup.png +0 -0
- package/host/images/gateways/exactsales.png +0 -0
- package/host/images/gateways/go-high-lvl.png +0 -0
- package/host/images/gateways/groner.png +0 -0
- package/host/images/gateways/hubspot.png +0 -0
- package/host/images/gateways/kommo.png +0 -0
- package/host/images/gateways/moskit.png +0 -0
- package/host/images/gateways/nectar.png +0 -0
- package/host/images/gateways/pipedrive.png +0 -0
- package/host/images/gateways/pipefy.png +0 -0
- package/host/images/gateways/piperun.png +0 -0
- package/host/images/gateways/ploomes.png +0 -0
- package/host/images/gateways/rdstation-crm.png +0 -0
- package/host/images/gateways/salesforce.png +0 -0
- package/host/images/gateways/sharpspring.png +0 -0
- package/host/images/gateways/sunhub.png +0 -0
- package/host/images/gateways/vendfly.png +0 -0
- package/host/images/gateways/zendesk.png +0 -0
- package/host/images/gateways/zoho.png +0 -0
- package/host/images/hangup.png +0 -0
- package/host/images/hold.png +0 -0
- package/host/images/icons/logo-128-christmas-celebration.png +0 -0
- package/host/images/icons/logo-128.png +0 -0
- package/host/images/icons/logo-16-christmas-celebration.png +0 -0
- package/host/images/icons/logo-16.png +0 -0
- package/host/images/icons/logo-24-christmas-celebration.png +0 -0
- package/host/images/icons/logo-24.png +0 -0
- package/host/images/icons/logo-32-christmas-celebration.png +0 -0
- package/host/images/icons/logo-32.png +0 -0
- package/host/images/icons/logo-48-christmas-celebration.png +0 -0
- package/host/images/icons/logo-48.png +0 -0
- package/host/images/loading.gif +0 -0
- package/host/images/logo-bravotech-white.png +0 -0
- package/host/images/logo-bravotech.png +0 -0
- package/host/images/logo-inline-christmas-celebration.png +0 -0
- package/host/images/logo-inline.png +0 -0
- package/host/images/mic-off.png +0 -0
- package/host/images/mic-on.png +0 -0
- package/host/images/play.png +0 -0
- package/host/images/transfer.png +0 -0
- package/host/index.html +34 -0
- package/host/js/bravophone-noise-suppressor.js +418 -0
- package/host/js/bravophone-route-selector.js +1099 -0
- package/host/js/libwebphone.js +20 -0
- package/host/js/noise/LICENSE-web-noise-suppressor.txt +21 -0
- package/host/js/noise/rnnoise-worklet.js +13 -0
- package/host/js/noise/rnnoise.wasm +0 -0
- package/host/js/noise/rnnoise_simd.wasm +0 -0
- package/host/mock-webphone.js +195 -0
- package/host/mock.html +54 -0
- package/host/popup.js +23 -0
- package/host/shim/chrome-shim.js +287 -0
- package/host/shim/guest-bridge.js +353 -0
- package/host/shim/messages.js +13 -0
- package/host/styles/theme-fixes.css +92 -0
- package/package.json +4 -2
- package/types/index.d.ts +21 -1
package/README.md
CHANGED
|
@@ -178,9 +178,16 @@ Bravophone-SDK/
|
|
|
178
178
|
for atualizada:
|
|
179
179
|
|
|
180
180
|
```bash
|
|
181
|
-
npm run sync
|
|
181
|
+
npm run sync # host servido de um domínio próprio (public path "/")
|
|
182
|
+
npm run prepare:host # host servido do CDN — é o que vai no pacote publicado
|
|
182
183
|
```
|
|
183
184
|
|
|
185
|
+
O `prepare:host` reescreve o `public_path` do bundle para
|
|
186
|
+
`cdn.jsdelivr.net/npm/@bravophone/webphone@<versão>/host/`. **Rode-o depois de
|
|
187
|
+
cada bump de versão e antes de publicar**: se a URL apontar para outra versão,
|
|
188
|
+
o pacote busca assets que podem não existir. O `npm test` recusa esse
|
|
189
|
+
descompasso.
|
|
190
|
+
|
|
184
191
|
O script recusa rodar se um asset obrigatório sumir, em vez de gerar um host quebrado
|
|
185
192
|
silenciosamente.
|
|
186
193
|
|
|
@@ -256,7 +263,7 @@ exercitar o postMessage cross-origin de verdade, incluindo a validação de orig
|
|
|
256
263
|
|
|
257
264
|
| Porta | Papel | Serve |
|
|
258
265
|
|---|---|---|
|
|
259
|
-
| 5173 | site do cliente | `examples/test.html`, carrega `dist/bravophone.umd.
|
|
266
|
+
| 5173 | site do cliente | `examples/test.html`, carrega `dist/bravophone.umd.js` por `<script>`, como no CDN |
|
|
260
267
|
| 5174 | host do webphone | `host/mock.html`, com os headers `frame-ancestors` e `Permissions-Policy` de produção |
|
|
261
268
|
|
|
262
269
|
### Testar sem SIP nem backend
|
|
@@ -330,7 +337,8 @@ um major não quebre a página deles.
|
|
|
330
337
|
| Opção | Tipo | Padrão | Descrição |
|
|
331
338
|
|---|---|---|---|
|
|
332
339
|
| `token` | `string` | — | Token de sessão emitido pelo seu backend |
|
|
333
|
-
| `
|
|
340
|
+
| `mode` | `'hosted' \| 'srcdoc'` | `'hosted'` | Como o webphone é carregado — ver abaixo |
|
|
341
|
+
| `hostUrl` | `string` | `https://webphone.bravophone.com/` | Origem do webphone (só no modo `hosted`) |
|
|
334
342
|
| `position` | `string` | `'bottom-right'` | Canto inicial |
|
|
335
343
|
| `open` | `boolean` | `false` | Abrir já visível |
|
|
336
344
|
| `launcher` | `boolean` | `true` | Exibir a aba lateral de abertura |
|
|
@@ -361,6 +369,44 @@ Use `frame: 'bar'` se preferir a barra com título, indicador de estado e contro
|
|
|
361
369
|
**Janela** — `show()` · `hide()` · `toggle()` · `minimize(force?)` · `move(x, y)` ·
|
|
362
370
|
`resize(w, h)` · `dock(zone)` · `destroy()` · `isOpen` · `geometry`
|
|
363
371
|
|
|
372
|
+
### Dois modos de carregar o webphone
|
|
373
|
+
|
|
374
|
+
```js
|
|
375
|
+
Bravophone.init({ token }) // hospedado (padrão)
|
|
376
|
+
Bravophone.init({ token, mode: 'srcdoc' }) // na origem do próprio site
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
| | `hosted` (padrão) | `srcdoc` |
|
|
380
|
+
|---|---|---|
|
|
381
|
+
| Onde o iframe roda | `webphone.bravophone.com` | origem do próprio site |
|
|
382
|
+
| De onde vêm os arquivos | do host | do CDN, travados nesta versão |
|
|
383
|
+
| CORS dos backends | uma origem fixa, não cresce | **uma entrada por integrador** |
|
|
384
|
+
| Iframe de terceiro | sim — sujeito a bloqueador e política | não |
|
|
385
|
+
| Storage particionado | sim (login por site do cliente) | não |
|
|
386
|
+
| Você precisa manter | o domínio do host | nada |
|
|
387
|
+
|
|
388
|
+
**Antes de oferecer o `srcdoc` a um cliente, a origem dele precisa estar na
|
|
389
|
+
allowlist de CORS de `api.bravophone.com`, `reports.teambravotech.com` e
|
|
390
|
+
`devices.wavoip.com`.** Sem isso o webphone carrega, aparece na tela e não
|
|
391
|
+
registra — o navegador descarta as respostas. Isso é trabalho no **nosso**
|
|
392
|
+
backend: o integrador não tem como liberar CORS de um servidor que não é dele.
|
|
393
|
+
|
|
394
|
+
Há requests com `withCredentials`, então `Access-Control-Allow-Origin: *` não
|
|
395
|
+
serve: a resposta precisa ecoar a origem exata mais
|
|
396
|
+
`Access-Control-Allow-Credentials: true`. O caminho sustentável é a allowlist
|
|
397
|
+
sair de banco, para entrar um cliente ser um registro e não um deploy em três
|
|
398
|
+
serviços.
|
|
399
|
+
|
|
400
|
+
Do lado do integrador, o único requisito é o CSP admitir `cdn.jsdelivr.net` em
|
|
401
|
+
`script-src`, `style-src` e `font-src` — a maioria dos sites não tem CSP
|
|
402
|
+
restritivo e não precisa fazer nada.
|
|
403
|
+
|
|
404
|
+
O que foi verificado em navegador (`examples/srcdoc-validation.html`):
|
|
405
|
+
`getUserMedia` funciona dentro do `srcdoc` **sem `allow=`**, a permissão é
|
|
406
|
+
herdada do topo, `enumerateDevices` traz os rótulos, `localStorage` funciona,
|
|
407
|
+
`document.baseURI` resolve para a página pai e `@font-face` com URL absoluta do
|
|
408
|
+
CDN carrega.
|
|
409
|
+
|
|
364
410
|
### A aba de abertura
|
|
365
411
|
|
|
366
412
|
Com a janela fechada, o webphone fica acessível por uma **aba colada na lateral** da
|