SSkilltecabyclaudinhocode
Enviar skill
← Voltar para o catálogo

digital-samba

Automação

Build video conferencing integrations using Digital Samba's API and SDK. Use when creating meeting rooms, embedding video calls, generating participant tokens, managing recordings, or integrating real-time collaboration features. Triggers include "Digital Samba", "video conferencing API", "embed video calls", "meeting room integration", "WebRTC iframe", "participant tokens".

2estrelas
Ver no GitHub ↗Autor: digitalsambaLicença: MIT

Digital Samba Integration

Build video conferencing into your applications using Digital Samba's prebuilt infrastructure. No WebRTC/Janus/TURN setup required.

Two Integration Approaches

  1. REST API - Server-side room/session/participant management
  2. Embedded SDK - Client-side iframe control and event handling

Quick Start

1. Create a Room (Server-side)

curl -X POST https://api.digitalsamba.com/api/v1/rooms \
  -H "Authorization: Bearer {DEVELOPER_KEY}" \
  -H "Content-Type: application/json" \
  -d '{"friendly_url": "my-meeting", "privacy": "public"}'

2. Generate Access Token (Server-side)

const jwt = require('jsonwebtoken');

const token = jwt.sign({
  td: "team-uuid",      // Your team ID
  rd: "room-uuid",      // Room ID from step 1
  u: "John Doe",        // User display name
  role: "moderator"     // Optional: user role
}, DEVELOPER_KEY, { algorithm: 'HS256' });

3. Embed the Room (Client-side)

Option A: Plain iframe — simplest, no SDK needed:

<iframe
  id="video-frame"
  allow="camera; microphone; display-capture; autoplay;"
  src="https://yourteam.digitalsamba.com/my-meeting?token={jwt}"
  style="width: 100%; height: 100vh; border: none;"
  allowfullscreen="true">
</iframe>

Option B: SDK creates the iframe — lets you add event listeners before loading:

import DigitalSambaEmbedded from '@digitalsamba/embedded-sdk';

// SDK injects an iframe into this container element
const sambaFrame = DigitalSambaEmbedded.createControl({
  url: 'https://yourteam.digitalsamba.com/my-meeting?token={jwt}',
  root: document.getElementById('video-container') // Container div, not an iframe
});

// Set up events before the iframe loads
sambaFrame.on('userJoined', (e) => console.log(`${e.data.name} joined`));
sambaFrame.on('connectionFailure', (e) => console.error('Failed:', e.data));

sambaFrame.load(); // Now create and load the iframe

Option C: SDK wraps an existing iframe — control an iframe you already placed in HTML:

import DigitalSambaEmbedded from '@digitalsamba/embedded-sdk';

// Wrap the iframe from Option A to add SDK control
const sambaFrame = DigitalSambaEmbedded.createControl({
  frame: document.getElementById('video-frame') // Existing iframe element
});

sambaFrame.on('userJoined', (e) => console.log(`${e.data.name} joined`));

Important: The SDK iframe container must have explicit CSS dimensions (width + height). The iframe does not auto-size. See Iframe Sizing in patterns.md.

When to Use What

NeedUse
Create/delete roomsREST API
User authenticationJWT tokens
Embed video UIiframe + SDK
Start/stop recordingREST API or SDK
React to eventsSDK events
Manage participantsREST API
Customize UIRoom settings API

Pre-Built Integration Patterns

The skill includes ready-to-use code patterns for common use cases. Ask your AI assistant for a pattern by describing your use case (e.g., "build a virtual classroom", "add video to my booking system", "set up a webinar page").

PatternBest ForKey Features
Simple Public RoomQuick demos, open meetingsMinimal setup, public access, no auth required
Authenticated UsersSaaS integrations, known usersJWT tokens, role-based access, error handling
SDK-Controlled RoomCustom UIs, programmatic controlEvent handling, mute/unmute, custom buttons
Scheduled MeetingsCalendar integrations, booking systemsTime constraints, invite tokens, email invites
Webinar ModeOne-to-many broadcastsPresenter/attendee roles, Q&A, raise hand
Recording & PlaybackContent archiving, complianceStart/stop recording, download, playback
Online Learning PlatformLMS, virtual classrooms, tutoringInstructor/student roles, attendance tracking, lesson recordings, per-course rooms
Playwright E2E TestingAutomated testing, CI/CDIframe testing, SDK events, demo recordings

Each pattern includes complete server-side and client-side code. See patterns.md for full implementations.

Reference Documentation

For detailed information, see these reference files:

Key Concepts

Room Types

  • Public: Anyone with URL can join (enters name on join screen)
  • Private: Requires JWT token to join

Roles & Permissions

Assign roles via JWT role field. Common roles:

  • moderator - Full control (mute others, recording, etc.)
  • speaker - Can present and speak
  • attendee - View/listen only (configurable)

Authentication Flow

  1. Developer key → Server-side API calls only (find it in Dashboard → Team Settings → Developer)
  2. JWT tokens → Client-side room access (signed with the developer key using HS256)
  3. Never expose developer key to browsers — use it only on your server

Common Errors

API Errors

CodeMeaningSolution
401Invalid/missing keyCheck Authorization header
403Insufficient permissionsVerify role/permissions
404Room not foundCheck room UUID/URL
422Validation errorCheck request body; see errors field for per-field details
429Rate limitedBack off and retry with exponential delay

SDK / Client Errors

IssueCauseSolution
SDK won't loadNot a secure contextServe over HTTPS (localhost exempt) — check window.isSecureContext
connectionFailure eventInvalid room URL, network error, or room deletedVerify room exists and URL is correct
appError eventRuntime error (e.g., media permission denied)Check e.data.code and e.data.message for details
iframe blank / no videoMissing allow attributeAdd allow="camera; microphone; display-capture; autoplay" to iframe

For detailed troubleshooting steps, diagnostic code examples, and API error breakdowns, see the Troubleshooting & Diagnostics section in patterns.md.

Check for Updates

To check if your installed skill is up to date:

  1. Local version: cat .claude/skills/digital-samba/VERSION
  2. Latest version: curl -s https://api.github.com/repos/digitalsamba/digital-samba-skill/releases/latest | grep '"tag_name"'

To update (submodule install):

git submodule update --remote .claude/skills/digital-samba

To update (manual install): Re-clone and copy skill files from https://github.com/digitalsamba/digital-samba-skill

Resources

Como adicionar

/plugin marketplace add digitalsamba/digital-samba-skill

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Comentários · Nenhum comentário

Entre para comentar. Entrar

  • Ainda não há comentários. Seja o primeiro.