npm.io
2026.7.22 • Published yesterday

@cloudcorp/widget

Licence
UNLICENSED
Version
2026.7.22
Deps
0
Vulns
0
Weekly
0

@cloudcorp/widget

Embeddable voice AI widget. Add real-time voice agents to any website with a single script tag or npm import. Supports React, Vue, Angular, and Svelte.

Install

npm install @cloudcorp/widget

Quick Start

Script Tag (CDN)
<script
  src="https://unpkg.com/@cloudcorp/widget/dist/cloudvoice.js"
  data-agent="your-agent-id"
  data-server="https://your-server.com"
></script>
ES Module
import { Widget } from '@cloudcorp/widget'

const widget = new Widget({
  agent: 'your-agent-id',
  server: 'https://your-server.com',
})

widget.on('transcript', ({ role, text }) => {
  console.log(`${role}: ${text}`)
})

Framework Integration

React
import { CloudVoice, useCloudVoice } from '@cloudcorp/widget/react'

// Component
function App() {
  return (
    <CloudVoice
      agent="your-agent-id"
      server="https://your-server.com"
      onTranscript={({ role, text }) => console.log(`${role}: ${text}`)}
      onReady={({ agentName }) => console.log(`Connected to ${agentName}`)}
    />
  )
}

// Hook
function App() {
  const { ready, sendText, close } = useCloudVoice({
    agent: 'your-agent-id',
    server: 'https://your-server.com',
  })

  return <div>{ready ? 'Connected' : 'Connecting...'}</div>
}
Vue
<script setup>
import { CloudVoice, useCloudVoice } from '@cloudcorp/widget/vue'

// Composable
const { ready, sendText, close } = useCloudVoice({
  agent: 'your-agent-id',
  server: 'https://your-server.com',
})
</script>

<template>
  <!-- Or use the component with events -->
  <CloudVoice
    agent="your-agent-id"
    server="https://your-server.com"
    @transcript="({ role, text }) => console.log(`${role}: ${text}`)"
    @ready="({ agentName }) => console.log(`Connected to ${agentName}`)"
  />
</template>
Angular
import { CloudVoiceDirective } from '@cloudcorp/widget/angular'

@Component({
  selector: 'app-root',
  standalone: true,
  imports: [CloudVoiceDirective],
  template: `
    <div
      cloudVoice
      [agent]="'your-agent-id'"
      [server]="'https://your-server.com'"
      (cvTranscript)="onTranscript($event)"
      (cvReady)="onReady($event)"
    ></div>
  `,
})
export class AppComponent {
  onTranscript({ role, text }) {
    console.log(`${role}: ${text}`)
  }
  onReady({ agentName }) {
    console.log(`Connected to ${agentName}`)
  }
}
Svelte
<script>
  import { cloudVoice, createCloudVoice } from '@cloudcorp/widget/svelte'

  // Action
  const params = {
    agent: 'your-agent-id',
    server: 'https://your-server.com',
    onTranscript: ({ role, text }) => console.log(`${role}: ${text}`),
  }

  // Or programmatic
  const { widget, sendText, close } = createCloudVoice({
    agent: 'your-agent-id',
    server: 'https://your-server.com',
  })
</script>

<div use:cloudVoice={params}></div>

Configuration

Option Type Required Description
agent string Yes Agent ID to connect to
server string No Server URL. Defaults to current page origin
apiKey string No API key for cross-origin usage
sessionToken string No One-time session token (alternative to apiKey)
platform string No Platform identifier. Default: 'widget'
idleText string No Text shown in idle state
modes InteractionMode[] No Interaction modes to offer. Default: ['browser']
agentPhone string No Phone number for "I'll Call" mode
whatsappNumber string No WhatsApp number for WhatsApp modes
requireVerification 'email' | 'phone' | 'both' | false No OTP verification before connecting
verifyMethod 'sms' | 'voice' | 'whatsapp' No How to send verification codes. Default: 'sms'

Interaction Modes

Mode Description
browser Voice conversation directly in the browser
callMe Agent calls the user's phone, transcript shows in widget
illCall Shows a number to call, transcript shows in widget
whatsapp Opens WhatsApp chat, transcript shows in widget
whatsapp_call Voice call via WhatsApp number
<script
  src="https://unpkg.com/@cloudcorp/widget/dist/cloudvoice.js"
  data-agent="your-agent-id"
  data-modes="browser,callMe,whatsapp"
></script>

Events

Event Payload Description
ready { agentName, version } Connected to agent
transcript { role, text, isFinal } Speech transcript
ended { reason } Conversation ended
error string Error message
transfer { status, reason? } Human handoff status
inputRequest { requestId, fieldName, fieldType, label, ... } Agent requesting user input

Methods

Method Description
sendText(text) Send a text message
close() End the current session
destroy() Remove the widget from the page
on(event, handler) Listen for events
off(event, handler) Remove event listener

CDN Data Attributes

All configuration can be set via data-* attributes on the script tag:

<script
  src="https://unpkg.com/@cloudcorp/widget/dist/cloudvoice.js"
  data-agent="your-agent-id"
  data-server="https://your-server.com"
  data-api-key="cv_xxxxx"
  data-modes="browser,callMe,illCall,whatsapp,whatsapp_call"
  data-agent-phone="+1234567890"
  data-whatsapp-number="+1234567890"
  data-require-verification="phone"
  data-verify-method="voice"
  data-idle-text="Hi! How can I help?"
></script>

License

UNLICENSED - proprietary software by CloudCorp

Keywords