Skip to content

What is Get2Dial

Introduce Get2Dial: what the platform does, who it is for, and the major capabilities it provides.

Get2Dial is a multi-tenant cloud contact-center platform combining an outbound predictive dialer with inbound contact-center routing. Each customer (tenant) gets isolated configuration, data and a dedicated media edge while sharing a common control plane.

The platform is built from a small set of cooperating services:

  • Control plane (cmd/control) — a Go HTTP API (listens on 8080) that owns tenancy, users, campaigns, queues, routing, recordings and reporting. It also runs the dialer pacer, the queue overflow sweeper, a live-metrics publisher and a transactional outbox relay as background goroutines.
  • Datastores — PostgreSQL with the TimescaleDB extension (the cdr and audit_logs tables are hypertables), Redis for hot-path call/pacing state, NATS for messaging, and MinIO for audio and recordings.
  • Web apps — a tenant-facing app and a platform admin console (Next.js).
  • Edge (per tenant) — OpenSIPS (SIP/WSS front door), FreeSWITCH (B2BUA / media), rtpengine (media anchor), a call engine (cmd/callengine) that drives FreeSWITCH over ESL, and a node agent (cmd/nodeagent) that registers the node and syncs media.

There is nothing to configure on this page. Deployment-level configuration is covered under Infrastructure and the Runbooks.

A typical outbound flow:

  1. An operator uploads a lead list and starts a campaign.
  2. The control-plane pacer selects and claims an eligible lead (after a fail-closed compliance gate — DNC, calling hours, attempt caps) and publishes an originate request over NATS to one specific edge.
  3. The edge call engine places the carrier leg through FreeSWITCH, runs answering-machine detection, and on a human answer bridges the call to an available agent.
  4. The agent sets a disposition; the attempt, recording reference and CDR are written back to the control plane.
  • Get2Dial is multi-tenant by default. Every API request is scoped to a tenant from its JWT; the shared control plane is never pinned to one tenant.
  • Each edge serves exactly one tenant — its call engine carries that tenant’s TENANT_ID.
  • This portal documents both operator procedures and developer architecture.