RingCentral AI: transcribe meetings, calls, and recordings
Speak AI joins your RingCentral Video calls, transcribes RingCentral phone recordings in 100+ languages, and turns every conversation into a structured CRM entry. Add the bot by email or wire up RingEX webhooks. Production-ready in under 10 minutes.
Lo que puedes hacer
RingCentral Video meetings and RingEX phone calls both flow into the same Speak workspace. Sales teams log every RingCentral call as a CRM activity. Support teams score agent empathy with custom Magic Prompts. Research teams turn customer conversations into structured deliverables.
Auto-join every RingCentral Video meeting
Dos caminos. Agregar [email protected] as an attendee on the calendar event with the RingCentral Video URL and the bot joins automatically. Or connect Google Calendar or Microsoft 365 to Speak once for ongoing auto-coverage of every event with a RingCentral Video URL. No per-meeting setup either way.
Ingest RingEX call recordings via webhook
Subscribe to RingCentral recording events via the Subscriptions API. When a RingEX call finishes, fetch the recording via GET /restapi/v1.0/account/~/recording/{recordingId}/content and POST to Speak’s upload API. Every phone call transcribed in 100+ languages within minutes of ending.
Speaker-labeled transcript in 100+ languages
Auto-detected language. Typical processing: under 2 minutes per hour of audio. Document and sentence-level VADER sentiment scoring. Speaker diarization across the full call. Output is editable, exportable to DOCX/SRT/PDF/JSON, and queryable through the Speak app.
One-click push to HubSpot, Salesforce, or Zoho
Verified webhook recipe: receive Speak’s media.analyzed event, fetch the insight, create a CRM activity. Same pattern across HubSpot Meetings, Salesforce Tasks, and Zoho Calls. Source-tagged so reports can split RingCentral vs Zoom vs Twilio.
Configuración en 3 pasos
The fastest path takes 30 seconds: invite the bot by email to any RingCentral Video meeting. Auto-coverage for Video takes 2 minutes: connect your Google Calendar or Microsoft 365. RingEX phone call ingest via webhook takes about 10 minutes: register a subscription and wire up the handler.
Inscríbase en Speak AI
Crea una cuenta gratuita en app.speakai.co. Obtienes una prueba de 7 días con acceso completo. No se necesita tarjeta de crédito. Una vez que estés dentro, ve a Configuración > API y copia tu clave API.
Elige tu ruta de integración
[email protected] to a RingCentral Video meeting (no setup)
Open the calendar event that contains the RingCentral Video meeting URL and add [email protected] as an attendee. The bot accepts the invite and joins the RingCentral Video call automatically. Zero in-app configuration. The same email works for Zoom, Teams, and Google Meet events too.
For ongoing coverage of every RingCentral Video meeting on your calendar, connect Google Calendar or Microsoft 365 in Speak under Asistente de reuniones > Calendario. Speak finds calendar events that contain a RingCentral Video URL and sends the bot automatically. Note: auto-coverage works through your calendar OAuth (Google or Microsoft 365), not a native RingCentral OAuth. The trigger is the RingCentral Video URL on the calendar event.
Register a subscription via POST /restapi/v1.0/subscription with event filter /restapi/v1.0/account/~/telephony/sessions o /restapi/v1.0/account/~/recording/~ and a webhook delivery mode. When a call recording completes, fetch the binary audio via GET /restapi/v1.0/account/~/recording/{recordingId}/content using Authorization: Bearer $RC_TOKEN and POST it to Speak’s /v1/media/upload endpoint. Full recipe in Tab 2 below.
Already have RingCentral recordings saved locally or in cloud storage? Upload them directly in the Speak dashboard or via the API. For ongoing library querying, connect Claude Desktop with npx @speakai/mcp-server init and search your entire RingCentral library through conversation.
Suscribirse a media.analyzed
Speak dispara un webhook firmado cuando se completa la transcripción y el análisis AI (generalmente dentro de 60 segundos para una llamada de 10 minutos). Registra tu endpoint a través de POST /v1/webhook and act on transcripts as they land in your CRM, support dashboard, or BI tooling.
Flujos de trabajo reales, resultados reales
Four production patterns Speak customers ship with RingCentral. Pick the one that fits your team and copy the recipe.
Auto-join every RingCentral Video meeting
Dos caminos, mismo resultado. Lo más fácil: añadir [email protected] as an attendee on the calendar event that hosts the RingCentral Video meeting. The bot accepts and joins. Cobertura automática: connect Google Calendar or Microsoft 365 to Speak once and every calendar event with a RingCentral Video URL gets the bot without any per-event invite.
# Manual: open the calendar event (Outlook, Google Calendar, etc.) that contains the RingCentral Video link.
# Click "Add attendees" and enter:
# [email protected]
# Save the event. The bot accepts the invite and joins the RingCentral Video call automatically.
# Programmatic (Google Calendar API) - add the bot as an attendee:
curl -X PATCH "https://www.googleapis.com/calendar/v3/calendars/primary/events/$EVENT_ID"
-H "Authorization: Bearer $GCAL_TOKEN"
-H "Content-Type: application/json"
-d '{
"attendees": [
{ "email": "[email protected]", "displayName": "Speak AI Notetaker" }
]
}'
# In Speak AI dashboard:
# 1. Go to Meeting Assistant -> Calendar
# 2. Click "Connect Google Calendar" or "Connect Microsoft 365"
# 3. Approve the OAuth scopes when prompted
# 4. Speak scans upcoming calendar events for RingCentral Video URLs
# 5. Bot joins every RingCentral Video call that appears on your connected calendar automatically
# Note: auto-coverage works through your calendar OAuth (Google or Microsoft 365),
# not a native RingCentral OAuth. The RingCentral Video URL on the calendar event is the trigger.
curl -X POST https://api.speakai.co/v1/meeting-assistant/events/schedule
-H "x-speakai-key: $SPEAK_API_KEY"
-H "Content-Type: application/json"
-d '{
"title": "Acme Corp - Demo Call",
"meetingURL": "https://v.ringcentral.com/join/acme-team-demo",
"meetingDate": "2026-05-15T16:00:00.000Z",
"meetingLanguage": "en-US",
"folderId": "507f1f77bcf86cd799439011"
}'
// Call this when your CRM creates a RingCentral Video meeting.
async function scheduleSpeakBot({ title, rcVideoURL, scheduledAt, folderId }) {
const r = await fetch(
"https://api.speakai.co/v1/meeting-assistant/events/schedule",
{
method: "POST",
headers: {
"x-speakai-key": process.env.SPEAK_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
title,
meetingURL: rcVideoURL,
meetingDate: scheduledAt,
meetingLanguage: "en-US",
folderId,
}),
}
);
if (!r.ok) throw new Error(`Speak schedule failed: ${r.status}`);
const { data } = await r.json();
// Persist data.meetingAssistantEventId for pause / resume / remove later.
return data.meetingAssistantEventId;
}
import os, requests
def schedule_speak_bot(title: str, rc_video_url: str, scheduled_at: str, folder_id: str | None = None):
r = requests.post(
"https://api.speakai.co/v1/meeting-assistant/events/schedule",
headers={
"x-speakai-key": os.environ["SPEAK_API_KEY"],
"Content-Type": "application/json",
},
json={
"title": title,
"meetingURL": rc_video_url,
"meetingDate": scheduled_at,
"meetingLanguage": "en-US",
"folderId": folder_id,
},
timeout=30,
)
r.raise_for_status()
return r.json()["data"]["meetingAssistantEventId"]
Pause/resume/remove the bot via POST /v1/meeting-assistant/events/{pause|resume|remove} con {meetingAssistantEventId}. Works with RingCentral Video on any plan.
Ingest RingEX phone call recordings as they finish
Subscribe to RingCentral recording events. When a RingEX call recording is ready, your handler fetches the audio content and forwards it to Speak. Every phone call transcribed in 100+ languages within minutes of ending, with speaker labels, sentiment, and custom Magic Prompt scoring.
# Authenticate with RingCentral OAuth (developer.ringcentral.com)
# Base URL: https://platform.ringcentral.com (sandbox: https://platform.devtest.ringcentral.com)
# Register the subscription:
curl -X POST https://platform.ringcentral.com/restapi/v1.0/subscription
-H "Authorization: Bearer $RC_TOKEN"
-H "Content-Type: application/json"
-d '{
"eventFilters": [
"/restapi/v1.0/account/~/recording/~"
],
"deliveryMode": {
"transportType": "WebHook",
"address": "https://your-app.example.com/rc/recording"
},
"expiresIn": 604800
}'
# RingCentral fires a thin notification to your webhook address.
# The payload body contains a subscriptionId and event summary.
# You must call back to fetch the full recording content.
// RingCentral webhook body: { subscriptionId, event, body: { ... } }
import express from "express";
const app = express();
app.use(express.json());
app.post("/rc/recording", async (req, res) => {
// RingCentral requires a 200 before processing
res.sendStatus(200);
const event = req.body.body;
if (!event || event.eventType !== "Recording") return;
// Recordings require the full API call to fetch content.
// The recording ID is in event.id or event.recording.id depending on event filter used.
const recordingId = event.id || event.recording?.id;
if (!recordingId) return;
// Fetch the recording content from RingCentral
const audioResp = await fetch(
`https://platform.ringcentral.com/restapi/v1.0/account/~/recording/${recordingId}/content`,
{ headers: { "Authorization": `Bearer ${process.env.RC_TOKEN}` } }
);
if (!audioResp.ok) return console.error("RC recording fetch failed:", audioResp.status);
// Get audio as buffer and upload to Speak
const audioBuffer = Buffer.from(await audioResp.arrayBuffer());
const form = new FormData();
form.append("name", `RingEX call ${recordingId}`);
form.append("mediaType", "audio");
form.append("sourceLanguage", "en-US");
form.append("tags", "ringcentral,ringex,phone");
form.append("file", new Blob([audioBuffer], { type: "audio/mpeg" }), `rc-${recordingId}.mp3`);
await fetch("https://api.speakai.co/v1/media/upload", {
method: "POST",
headers: { "x-speakai-key": process.env.SPEAK_API_KEY },
body: form,
});
});
app.listen(3000);
import os, io, requests
from fastapi import FastAPI, Request
app = FastAPI()
@app.post("/rc/recording")
async def hook(req: Request):
body = await req.json()
event = body.get("body", {})
if event.get("eventType") != "Recording":
return {"ok": True}
recording_id = event.get("id") or (event.get("recording") or {}).get("id")
if not recording_id:
return {"ok": True}
# Fetch audio content from RingCentral
rc_resp = requests.get(
f"https://platform.ringcentral.com/restapi/v1.0/account/~/recording/{recording_id}/content",
headers={"Authorization": f"Bearer {os.environ['RC_TOKEN']}"},
timeout=60,
)
rc_resp.raise_for_status()
# Upload to Speak
requests.post(
"https://api.speakai.co/v1/media/upload",
headers={"x-speakai-key": os.environ["SPEAK_API_KEY"]},
files={"file": (f"rc-{recording_id}.mp3", io.BytesIO(rc_resp.content), "audio/mpeg")},
data={
"name": f"RingEX call {recording_id}",
"mediaType": "audio",
"sourceLanguage": "en-US",
"tags": "ringcentral,ringex,phone",
},
timeout=120,
)
return {"ok": True}
# Pull call log entries to enrich Speak metadata with caller, duration, direction, extension.
curl "https://platform.ringcentral.com/restapi/v1.0/account/~/call-log?type=Voice&view=Detailed&dateFrom=2026-05-07T00:00:00Z"
-H "Authorization: Bearer $RC_TOKEN"
# Key fields in response:
# .records[].id - call ID
# .records[].duration - seconds
# .records[].direction - Inbound / Outbound
# .records[].from.name - caller name
# .records[].recording.id - recording ID (same ID used in content endpoint)
Subscriptions expire after 7 days by default. Renew via PUT /restapi/v1.0/subscription/{subscriptionId} or set a longer expiresIn (max 604800 seconds). RingCentral webhook payloads are thin — the content fetch is the authoritative source of the audio.
Log every RingCentral call in HubSpot, Salesforce, or Zoho
Same verified middleware pattern as the rest of the integrations cluster: receive Speak’s flat {eventType, state, mediaId} notification, fetch full insight via GET /v1/media/insight/:mediaId, then create the CRM activity. Source-tag with ringcentral so reports can split RingCentral vs Zoom vs Twilio.
// Speak webhook body shape (verified 2026-05-07): { eventType, state, mediaId }
import express from "express";
const app = express();
app.use(express.json());
app.post("/speak/rc-to-crm", async (req, res) => {
const { eventType, state, mediaId } = req.body;
if (eventType !== "media.analyzed" || state !== "processed") return res.sendStatus(204);
res.sendStatus(202);
// 1. Fetch full insight
const { data } = await fetch(
`https://api.speakai.co/v1/media/insight/${mediaId}`,
{ headers: { "x-speakai-key": process.env.SPEAK_API_KEY } }
).then(r => r.json());
// 2. Push to HubSpot Meetings (or Salesforce Tasks, or Zoho Calls)
const start = new Date(data.createdAt);
const end = new Date(start.getTime() + (data.duration?.inSecond || 0) * 1000);
await fetch("https://api.hubapi.com/crm/v3/objects/meetings", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.HUBSPOT_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
properties: {
hs_timestamp: start.toISOString(),
hs_meeting_title: data.name,
hs_meeting_body: `RingCentral call summary. Open in Speak: https://app.speakai.co/media/${mediaId}`,
hs_meeting_external_url: `https://app.speakai.co/media/${mediaId}`,
hs_meeting_start_time: start.toISOString(),
hs_meeting_end_time: end.toISOString(),
hs_meeting_outcome: "COMPLETED",
},
}),
});
});
app.listen(3000);
Full destination-specific code (HubSpot Meeting + association IDs, Salesforce Task + SOQL contact resolution, Zoho Calls + Notes) on /integrations/hubspot/, /integrations/salesforce/y /integrations/zoho/. The Speak side is identical across all three CRM destinations.
Search every RingCentral call from Claude or ChatGPT
Connect Speak’s MCP server to Claude or ChatGPT and your team queries the entire RingCentral call library through conversation. No SQL, no dashboards, no exports. Works equally for RingCentral Video meetings and RingEX phone calls.
# Claude Desktop / Claude Code (detecta automáticamente tu instalación)
npx @speakai/mcp-server init
# Pega tu clave API de Speak cuando se te pida. La configuración toma aproximadamente 2 minutos.
# Claude.ai (web) y conector MCP de ChatGPT
# Settings > Integrations > Add MCP Server
# Remote URL: https://api.speakai.co/v1/mcp
# Auth header: x-speakai-key: YOUR_SPEAK_API_KEY
# Verify the connection responds:
curl -s https://api.speakai.co/v1/mcp
-H "x-speakai-key: $SPEAK_API_KEY"
-H "Accept: application/json"
2. Ejemplos de solicitudes que tu equipo puede usar hoy:
- “Show every RingCentral Video call last week with negative customer sentiment in the last 5 minutes.”
- “Summarize the 3 longest RingEX phone calls with Acme Corp from this quarter.”
- “Pull verbatim quotes from RingCentral calls tagged
descubrimientowhere customers asked about pricing.” - “Which RingEX support calls scored below 7 on empathy last week? Pull the timestamps.”
- “Compare discovery completeness across our top 3 AEs. Use this week’s RingCentral Video calls. Score on a 0-10 rubric.”
Compatible con Claude.ai, Claude Desktop, Claude Code y conectores MCP de ChatGPT. Ver servidor MCP →
Why Speak AI + RingCentral
RingCentral handles the calls and meetings. RingCentral AI covers in-call transcripts and basic summaries on paid RingEX and Webex Suite plans. Speak handles the deeper analysis layer that lives outside RingCentral: cross-call search, custom Magic Prompts, multi-source ingest across every platform, CRM push, and shareable embeds.
Video meetings AND phone calls, one workspace
RingCentral Video meetings arrive via the bot (calendar invite or API schedule). RingEX phone calls arrive via recording webhook. Zoom, Google Meet, Teams, Twilio, and podcast audio land in the same library. One workspace, every conversation across every platform.
Magic Prompts personalizados, no plantillas fijas
RingCentral AI ships fixed summary templates. Speak’s Magic Prompt runs your prompts on every call: discovery checklist scoring, competitor mention extraction, agent empathy scoring, MEDDIC-stage detection. Save prompts once, run them on every new recording forever.
SOC 2 + GDPR + HIPAA-eligible
Speak ships with SOC 2 Type 2, GDPR compliance, and HIPAA-eligible plans for healthcare customers. Your RingCentral data is encrypted in transit and at rest, and Speak does not train on your conversations.
MCP-nativo para Claude y ChatGPT
El oficial @speakai/mcp-server exposes 83 tools to AI assistants. Your team queries the full RingCentral Video and RingEX call library in plain English from Claude Desktop or ChatGPT, without exporting transcripts to other tools.
Los equipos confían en Speak AI para sus llamadas más importantes
4.9 en G2
“Speak AI ha sido fundamental para transformar cómo manejamos datos cualitativos. La precisión de la transcripción es impresionante y los análisis de NLP nos ahorran horas de análisis manual.”
Director de Investigación | Empresa de Consultoría
“Cambiamos de Otter.ai y la profundidad del análisis está en otro nivel. Puntuación de sentimiento, extracción de palabras clave y detección de temas ocurren automáticamente.”
Gerente de producto | Empresa SaaS
“La capacidad de buscar en todas nuestras llamadas con clientes y extraer momentos específicos es un cambio revolucionario para nuestro equipo de soporte.”
Director de Experiencia del Cliente | Tecnología Empresarial
How to use Speak AI with RingCentral for transcription and call intelligence
RingCentral is a leading unified communications platform that combines RingCentral Video (meetings and webinars) with RingEX (cloud phone system, contact center, and call recording). Sales teams run discovery and demo calls on RingCentral Video. Support teams handle inbound calls on RingEX. Every one of those calls is a potential source of customer truth, decisions, and follow-up actions. Speak AI is what turns those calls into structured, searchable, shareable data without forcing a tool change.
Where Speak fits in the RingCentral call lifecycle
Speak runs after the call ends, or in parallel during the call via the bot. RingCentral handles call control: video rooms, call routing, the RingCentral AI features for paid plans. Speak handles transcription in 100+ languages, AI analysis with custom prompts, search across the full library, and downstream automation. For RingCentral Video, the handoff happens via the calendar bot (email invite or Google/Microsoft 365 calendar OAuth) or the per-meeting /v1/meeting-assistant/events/schedule endpoint. For RingEX phone calls, the handoff happens via the Subscriptions API webhook that fires when a recording completes.
RingCentral Video vs RingEX: two paths, one workspace
RingCentral Video meetings (team video calls, external calls) arrive in Speak via the bot: invite [email protected] to the calendar event, or connect Google Calendar or Microsoft 365 for auto-coverage. The trigger is the RingCentral Video URL on the calendar event — there is no native RingCentral OAuth in Speak for this path.
RingEX phone calls (inbound/outbound telephony, contact center calls) arrive via the RingCentral Subscriptions API. Register a webhook for /restapi/v1.0/account/~/recording/~ events. When a call recording is ready, your handler fetches GET /restapi/v1.0/account/~/recording/{recordingId}/content using a Bearer token and POSTs the audio to Speak’s /v1/media/upload endpoint. Same pattern as Twilio, different API surface.
How do I transcribe RingCentral calls automatically?
Four production paths ranked by lift:
- Email invite (RingCentral Video). Añadir
[email protected]as an attendee on the calendar event with the RingCentral Video URL. The bot joins, records, and transcribes. Zero setup. - Calendar OAuth auto-coverage (RingCentral Video). Connect Google Calendar or Microsoft 365 to Speak once. Every calendar event with a RingCentral Video URL gets the bot automatically going forward.
- RingEX recording webhook. Register a RingCentral subscription for recording events. Handler fetches audio from
/recording/{recordingId}/contentand POSTs to Speak. Covers all RingEX phone calls. - API per-meeting schedule. POST a RingCentral Video URL to Speak’s
/v1/meeting-assistant/events/schedulefrom your CRM or scheduling tool. Full control over title, language, and folder.
Do I need both calendar OAuth and RingCentral OAuth?
No. For RingCentral Video auto-coverage, you only need Google Calendar or Microsoft 365 OAuth in Speak — not a RingCentral OAuth. Speak detects RingCentral Video URLs on calendar events and sends the bot. For RingEX phone calls, you need a RingCentral developer account and OAuth token to authenticate against the RingCentral API, but that stays in your webhook handler, not in Speak directly.
Casos de uso por función
Equipos de Ventas y RevOps use Speak with RingCentral Video to auto-log every discovery and demo call into HubSpot, Salesforce, or Zoho. Magic Prompts score discovery completeness, surface objections, and extract competitor mentions. RingEX outbound calls follow the same push pattern. See Speak AI para equipos de ventas.
Equipos de atención al cliente y experiencia del cliente capture every inbound RingEX support call via webhook and route by sentiment. Multilingual contact centers work without per-language setup since Speak supports 100+ languages with auto-detection. See Speak AI for customer success.
Training and enablement teams turn RingCentral Video and RingEX calls into a coaching loop. Speak’s analysis surfaces missed discovery questions, scripted-line drift, and sentiment dips for QA review. See Speak AI for training and development.
Equipos de investigación de clientes bring RingCentral Video interview calls into the same workspace as Zoom and embed recorder sessions. Code themes across the entire library, ask Claude for verbatim quotes via MCP, build research deliverables in hours instead of weeks. See Speak AI para investigadores cualitativos.
Preguntas frecuentes
What is the easiest way to get the Speak bot into a RingCentral Video meeting?
Añadir [email protected] as an attendee on the calendar event hosting the RingCentral Video meeting. The bot accepts the invite and joins the call automatically. No in-app configuration, no OAuth, no API call. The same email works for Zoom, Microsoft Teams, Webex, and Google Meet events too.
Does Speak work with RingEX phone calls, not just video meetings?
Yes. RingEX phone call recordings arrive via the RingCentral Subscriptions API. Register a webhook for recording events, fetch the audio content via GET /restapi/v1.0/account/~/recording/{recordingId}/content using a Bearer token, and POST to Speak’s /v1/media/upload endpoint. Every call transcribed in 100+ languages with speaker labels and sentiment. Tab 2 above has the full Node and Python recipes.
Do I need both calendar OAuth and RingCentral OAuth to set this up?
No. RingCentral Video auto-coverage uses Google Calendar or Microsoft 365 OAuth in Speak — no native RingCentral OAuth required. Speak detects RingCentral Video URLs on calendar events and sends the bot. RingEX webhook setup requires a RingCentral developer token in your own handler (never in Speak directly). The two paths are independent.
Which RingCentral plans does Speak work with?
Speak works with any RingCentral plan that supports call recording and the Subscriptions API. For RingEX, that includes RingEX Core and above (call recording must be enabled by the admin). For RingCentral Video, the bot path works on any plan where external attendees can join the meeting. Contact your RingCentral admin if call recording is not yet enabled on your account.
Can I limit Speak to one extension or department?
Yes. The RingCentral event filter supports extension-level scoping. Use /restapi/v1.0/account/~/extension/{extensionId}/recording/~ instead of the account-level filter to restrict recording webhooks to a specific extension. For department-level routing, add a folder ID in the Speak upload payload and filter by folder in your automations.
Does Speak transcribe RingCentral calls in languages other than English?
Yes. Speak supports 100+ languages with auto-detection. Set sourceLanguage to your target locale (e.g. es-ES, fr-FR, de-DE) in the upload payload, or leave it blank for auto-detection. International contact centers and multilingual teams are fully supported without any per-language configuration in RingCentral.
How does the RingCentral integration differ from Twilio?
Both use a webhook-to-upload pattern for phone calls. RingCentral uses the Subscriptions API (POST /restapi/v1.0/subscription) with a WebHook delivery mode, and you fetch recording content from /recording/{recordingId}/content with a Bearer token. Twilio uses the recordingStatusCallbackEvent parameter and the Recording resource URL. The Speak side is identical: POST audio to /v1/media/upload, subscribe to media.analyzed. Additionally, RingCentral also has a Video meeting surface that Twilio does not have, so the bot invite path applies to RingCentral but not Twilio.
Start using Speak AI with RingCentral today
83 analysis tools. 100+ languages. Calendar bot for RingCentral Video, recording webhook for RingEX phone calls, MCP-native for Claude and ChatGPT. Same workspace as your Zoom, Meet, Teams, and Twilio calls.
Prueba Speak AI gratis
Create your account, invite the bot to your next RingCentral Video meeting (or connect your calendar), and the transcript lands in your Speak workspace automatically. Full access for 7 days. No credit card required.
Reservar una demostración
For sales or IT teams evaluating Speak across an enterprise RingCentral deployment, book a demo with the Speak team. We will walk through the calendar bot, RingEX recording webhook setup, and CRM push live.




