PCA: aggregate limits on disposition metrics: combined prompt length and enum choices
The Write to draft endpoint now enforces two aggregate limits when the payload includes postCallAnalyticsConfig.dispositionMetrics:
- Combined
dispositionMetricPromptlength. The sum across all metrics must be ≤ 50,000 characters. Exceeding it returns400withThe combined disposition metric prompts can be at most 50000 characters. - ENUM choices per metric. Each
dispositionMetricType: ENUMmetric can have at most 20choices. Exceeding it returns400withEach enum metric can have at most 20 choices. Ones already over the limit can stay as they are, but can't grow any further. Remove the extra choices to save.
Both limits are grandfathered: agents already over either limit can still save as long as the change does not make it worse (total prompt length does not grow, and no over-limit enum grows or gains new choices). No cap on the number of metrics or on any single prompt’s length.
Source: atoms-platform#3448.
PCA: document the three no-transcript fallback shapes
Three call outcomes skip post-call analytics and return a fixed fallback in postCallAnalytics. Documented on the Post call metrics prose page and on the postCallAnalytics object description across the three call-response schemas.
Response is still 200; every dispositionMetrics[].value is null with confidence: 0 and a reasoning string. Exact strings:
- Agent-only call:
summary: "User did not speak.",reasoning: "User did not speak — no customer content available for analysis." - Failed call:
summary: "Call could not be completed.",reasoning: "Call could not be completed — no transcript available for analysis." - Unanswered call:
summary: "Call was not answered.",reasoning: "Call was not answered — no transcript available for analysis."
Consumer guidance: treat a null value as not evaluated, not as evaluated-to-null. To catch all three programmatically, either check dispositionMetrics[0].value === null (they are always null together) or match summary against the exact strings above.
Source: apps/temporal-worker-postcall/src/workflows/post-call.workflow.ts in atoms-platform (the skipLLM branch that picks the fallback summary/reasoning per skip reason).