amazon-connect / amazon-connect-streams

Amazon Connect Streams - a browser-based contact center integration API, typically with CRM systems.
https://docs.aws.amazon.com/connect/latest/userguide/
Apache License 2.0
388 stars 311 forks source link

Custom dashboard - no ringtone for incoming calls #837

Closed vtrofin closed 7 months ago

vtrofin commented 7 months ago

Hi team,

I'm working on a custom call dashboard with the CCP iframe hidden. I've noticed that on my incoming calls there is no ringtone unless I make the iframe visible and first interact with it. I would like to ask for your assistance in case you might have any idea about this issue.

I'm on Chrome Version 121.0.6167.85 (Official Build) (arm64). These are my permissions in the page. Image from Gyazo

I've checked the google blog post about the autoplay policy and I seem to be checking all the boxes.

Origin Sessions Sessions with playback Last Playback Is High Score https://localhost:3000 253 52 2024-01-23T12:19:54.596Z Yes 0.21


 - Also checked the iframe delegation and it looks like autoplay is enabled. 

It looks like the audio context is instantiated on the iframe's pageload, before interacting with it. Is there any workaround for this situation?

The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page.


Please find here an export of my console logs.

[HdxWebRTC.js] Redirection status: Connecting... 6The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. 16[Violation] Permissions policy violation: microphone is not allowed in this document.

device default connect-streams-min.48405b9a.js:1 [2024-02-02T08:26:33.335Z] [ERROR] [c89a1e17-4aa6-4a1f-b731-a4a4bdbbbd69]: Ringtone Playback Failure: 2 retries remaining. ERROR @ connect-streams-min.48405b9a.js:1 d.addLogEntry @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 d.write @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 d.error @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 d @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 n @ connect-streams-min.48405b9a.js:1 s @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 Promise.catch (async) (anonymous) @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 d @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 n @ connect-streams-min.48405b9a.js:1 s @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 success @ connect-streams-min.48405b9a.js:1 a._handleResponse @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 v.trigger @ connect-streams-min.48405b9a.js:1 c._dispatchEvent @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 connect-streams-min.48405b9a.js:1 [2024-02-02T08:26:33.339Z] [INFO] [c89a1e17-4aa6-4a1f-b731-a4a4bdbbbd69]: Sending check media stream event, is local media stream active: false 4.cbe71525.chunk.js:2 [CustomerProfiles] func: onCCPMessage: UPDATE: {snapshot: {…}, configuration: {…}} connect-streams-min.48405b9a.js:1 [2024-02-02T08:26:33.358Z] [ERROR] [c89a1e17-4aa6-4a1f-b731-a4a4bdbbbd69]: 'master_response' event handler failed.

[2024-02-02T08:26:33.646Z] [INFO] [c89a1e17-4aa6-4a1f-b731-a4a4bdbbbd69]: Attempting to start ringtone to device default connect-streams-min.48405b9a.js:1 [2024-02-02T08:26:33.646Z] [ERROR] [c89a1e17-4aa6-4a1f-b731-a4a4bdbbbd69]: Ringtone Playback Failure: 1 retries remaining. ERROR @ connect-streams-min.48405b9a.js:1 d.addLogEntry @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 d.write @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 d.error @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 d @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 n @ connect-streams-min.48405b9a.js:1 s @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 Promise.catch (async) (anonymous) @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 d @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 n @ connect-streams-min.48405b9a.js:1 s @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 d @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 n @ connect-streams-min.48405b9a.js:1 s @ connect-streams-min.48405b9a.js:1 Promise.then (async) n @ connect-streams-min.48405b9a.js:1 s @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 Promise.catch (async) (anonymous) @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 d @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 n @ connect-streams-min.48405b9a.js:1 s @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 success @ connect-streams-min.48405b9a.js:1 a._handleResponse @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 v.trigger @ connect-streams-min.48405b9a.js:1 c._dispatchEvent @ connect-streams-min.48405b9a.js:1 (anonymous) @ connect-streams-min.48405b9a.js:1 connect-streams-min.48405b9a.js:1 [2024-02-02T08:26:33.648Z] [ERROR] [c89a1e17-4aa6-4a1f-b731-a4a4bdbbbd69]: 'master_response' event handler failed.

connect-streams-min.48405b9a.js:1 [2024-02-02T08:26:33.866Z] [INFO] [c89a1e17-4aa6-4a1f-b731-a4a4bdbbbd69]: Ringtone is ready to play: connect-streams-min.48405b9a.js:1 [2024-02-02T08:26:33.866Z] [INFO] [c89a1e17-4aa6-4a1f-b731-a4a4bdbbbd69]: Attempting to start ringtone to device default connect-streams-min.48405b9a.js:1 [2024-02-02T08:26:33.866Z] [ERROR] [c89a1e17-4aa6-4a1f-b731-a4a4bdbbbd69]: Ringtone Playback Failure: 0 retries remaining.



I'll link here a couple of the closed issues that i've checked but which don't seem to solve my issue.
#590 - I seem to have the same error but i'm not sure what worked in that case. 
#81 and #112 - As mentioned above, autoplay is enabled in the iframe.
#617

Thank you very much for any potential answer that might help me fix the problem.
andywang219 commented 7 months ago

Hi,

Looks like that is something Google Chrome is enforcing: https://developer.chrome.com/blog/autoplay/#:~:text=Autoplay%20with%20sound%20is%20allowed%20if. Autoplay is only allowed if the user has interacted with the page before any audio is trying to play.

Firefox has something similar, where getUserMedia() does not resolve unless the user interacts with the page.

andywang219 commented 7 months ago

Please reopen if you have any questions