Spaces:
Running
Running
File size: 2,532 Bytes
2ce42d3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
function injectElevenLabsWidget() {
const script = document.createElement('script');
script.src = 'https://elevenlabs.io/convai-widget/index.js';
script.async = true;
script.type = 'text/javascript';
document.head.appendChild(script);
// Create the wrapper and widget
const wrapper = document.createElement('div');
wrapper.className = 'desktop';
const widget = document.createElement('elevenlabs-convai');
widget.setAttribute('agent-id', 'SoMyS9WQqWMY0o3jhcfr');
// Set initial colors based on current theme
updateWidgetColors(widget);
// Watch for theme changes
const observer = new MutationObserver(() => {
updateWidgetColors(widget);
});
observer.observe(document.documentElement, {
attributes: true,
attributeFilter: ['class'],
});
function updateWidgetColors(widget) {
const isDarkMode = !document.documentElement.classList.contains('light');
if (isDarkMode) {
widget.setAttribute('avatar-orb-color-1', '#2E2E2E');
widget.setAttribute('avatar-orb-color-2', '#B8B8B8');
} else {
widget.setAttribute('avatar-orb-color-1', '#4D9CFF');
widget.setAttribute('avatar-orb-color-2', '#9CE6E6');
}
}
widget.innerHTML = `\
<form slot="terms" class="prose text-sm">
<h3>Terms and conditions</h3>
<p>
By clicking "Continue," and each time I interact with this AI agent, I
consent to ElevenLabs collecting and using my voice and data derived from
it to interpret my speech, and provide the support services I request, and
to the recording, storage, and sharing of my communications with
third-party service providers, and as described in the
<a href="/terms-of-use">Privacy Policy</a>. If you do not wish to have
your conversations recorded, please refrain from using this service.
</form>`;
// Listen for the widget's "call" event to inject client tools
widget.addEventListener('elevenlabs-convai:call', (event) => {
event.detail.config.clientTools = {
submitAdviceSentence: (
{adviceText}
) => {
submitAdvice(adviceText)
}
};
});
// Attach widget to the DOM
wrapper.appendChild(widget);
document.body.appendChild(wrapper);
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', injectElevenLabsWidget);
} else {
injectElevenLabsWidget();
}
|