Data Sources → Customer Touchpoints

Call Center

Voice interactions through the contact center — call metadata, IVR selections, agent notes, and outcomes — usually sourced from a CCaaS platform.

High-Level Design

CCaaS export → Azure Blob Storage → .NET Core microservices on Azure.

Touchpoint
Call Center
Inbound/outbound voice via CCaaS
→
Ingestion
.NET Core Batch Connector
CCaaS export → Azure Blob Storage → Ingestion API
→
Processing
.NET Core Batch Worker
Azure Functions — redaction, transcript enrichment
→
Foundation
Data Lakehouse
Call metadata + linked transcripts
→
Intelligence
.NET Core AI & Insights API
Azure OpenAI — topic modeling, CSAT prediction
→
Activation
.NET Core Activation API
CRM case updates, agent coaching (Reverse ETL)

💼 Business Context

  • The highest-cost-per-interaction channel — connecting it to CXOS ties call outcomes to lifetime value and churn risk
  • Enables agent coaching and QA automation at scale instead of manual sampling
  • Owned by Contact Center Operations, often co-funded by CX Analytics

🔌 Technical Overview

CCaaS platforms (Genesys, NICE, Five9) export call metadata and recordings to Azure Blob Storage on a schedule; a timer-triggered .NET Core Azure Function picks up new files and calls the Ingestion API through Cxos.Ingestion.Client — the same contract as every real-time touchpoint. Recordings are transcribed and redacted (PCI/PII) by a .NET Core batch worker before the transcript is attached to the call record. Caller ID or an IVR-entered account number is matched to a known customer profile via the Identity API.

Typical Events

call_started ivr_selection call_transferred call_ended csat_recorded

💾 Sample Event Payload

{
  "event": "call_ended",
  "event_id": "a4d1c9e2-5b8f-4a3e-9c1d-7e2f8a0b4d56",
  "timestamp": "2026-08-01T11:03:12Z",
  "user_id": "cust_004821",
  "context": {
    "channel": "call_center",
    "agent_id": "agt_302",
    "queue": "billing"
  },
  "properties": {
    "duration_seconds": 342,
    "disposition": "resolved",
    "csat_score": 4
  }
}

🔗 Integration Points

  • Azure Blob Storage — CCaaS export landing zone
  • Timer-triggered Azure Function (.NET Core) — batch pickup and Ingestion API call
  • Cxos.Ingestion.Client NuGet package — shared ingestion contract
  • Azure OpenAI Service — transcript topic/sentiment modeling
  • Reverse ETL — CRM case sync via the Activation API

🧰 Services Consumed

  • Owning microservice — Cxos.Ingestion.Api (see the Full Application Service Map)
  • Database — Azure Cache for Redis (cache only, no system-of-record database)

⚠️ Non-Functional Considerations

  • Scale: call volume spikes correlate with outages/incidents — the batch pipeline is decoupled from real-time load
  • Latency: most call analytics run as scheduled batch (hourly); escalation-risk flags use a near-real-time path where the CCaaS platform supports it
  • Reliability: the batch worker supports reprocessing/backfill when the redaction model is updated
  • Security/Privacy: PCI redaction runs before the transcript reaches the Data Lakehouse; the Blob landing zone uses short retention + Azure Key Vault-managed encryption

🎯 Enterprise Example

A financial services contact center exports call metadata and recordings to Azure Blob Storage nightly. The .NET Core batch worker redacts PCI data and calls the AI & Insights API, backed by Azure OpenAI Service, which surfaces a rising cluster of "fee dispute" calls tied to a recent statement change — reaching the product and billing teams within a day instead of the next quarterly QA review, and cutting related call volume by 22% within two weeks.

← Back to Customer Touchpoints