Hi Mitel Developer Support Team,
I’m integrating with MICC and need your help to reliably determine when a voice call is actually answered/connected versus merely ringing or non-ACD. We’re polling the conversations endpoint and occasionally consulting the agent state endpoint, but we’re seeing inconsistent “Answered” signals—especially for NonAcd scenarios—and would appreciate authoritative guidance.
Environment & what we call
- MICC REST (OData):
GET /MiccSdk/api/v1/conversations(active interactions in IVR/queue/agent)GET /MiccSdk/api/v1/agents/{id}/state(agent state)
- Fields we rely on from conversations:
ConversationId,FromAddress/ToAddress,ANI/DNIS,SupplementalDetails.fromAddress/toAddressConversationState(enum),AgentId,AgentName,DirectionTimeOfferedToAgent,TimeOfLastAgentResponse,TimeOfLastCustomerResponse,ModifiedOn
- Poll cadence: ~4/s (250 ms). We publish internal events: Ringing, Answered, Finished.
What we’re observing
- Many items arrive with
ConversationState = NonAcdwhile the call is ringing the device/extension. - For some answered calls,
TimeOfLastAgentResponse(“LAR”) remainsnullor0001-01-01…and never advances, even though the call was clearly answered. - Frequently the only time we’re certain the interaction ended is when a conversation disappears from
/conversationsbetween polls (we treat that as “Finished”). - Because of the above, we sometimes must synthesize “Answered” based on heuristics (e.g., state text equals “Connected/Answered” or we probe
GET /agents/{id}/stateto see if the agent is “on call”). We’d like to stop guessing and follow the official rule.
Questions where we need exact answers
- State semantics & transitions
- What are the authoritative possible values for
ConversationState(names and integer codes) for voice? - Which
ConversationStatevalues unambiguously mean the call is connected/answered to the agent? - Is NonAcd ever expected to represent an answered/connected call, or is it strictly pre/other state?
- Can a connected call still appear as
UnknownorNonAcdin certain routes (e.g., PBX non-ACD, direct-dial, transferred calls)?
- Timestamp fields
- Exact definition of
TimeOfLastAgentResponse:- When is it set?
- Should we expect it to be populated precisely when the agent answers?
- Are there scenarios where it remains
nulleven though the call is answered?
- What about
TimeOfferedToAgent—can it be present without any guaranteed subsequent “answer” timestamp? - Are these UTC values? Any known latency/caching window before timestamps are updated?
- Identity of caller/callee
- For voice, which fields definitively hold the external caller number and the agent’s extension?
- Is
SupplementalDetails.fromAddress/toAddresscanonical on newer builds, or should we prefer top-levelFromAddress/ToAddress, orANI/DNIS?
- Is
- Any best practice to distinguish the agent’s extension from trunk/DID values?
- Snapshot behavior
- Is vanishing from
/conversationsthe official indication of a completed/finished interaction? - Could a conversation temporarily disappear (e.g., paging/resharding) and reappear, or once gone is it guaranteed “finished”?
- Agent state correlation
- Authoritative mapping for
GET /agents/{id}/state→CurrentStatevalues to “on-call/connected”. - Is it recommended to rely on agent state to infer “Answered” if conversation timestamps don’t populate?
- Any race/ordering caveats between conversation updates and agent state updates?
- Recommended detection rule
- Given the above, what is Mitel’s official algorithm to flag “Answered” for a voice conversation?
For example:
Treat as Answered when
ConversationState ∈ {Connected, Answered}or whenTimeOfLastAgentResponsetransitions from null to a valid timestamp (UTC), and never forNonAcd.
- If there are exceptions (e.g., NonAcd direct calls), please document those and the correct indicators to use.
- Filtering & performance
- Are there supported OData filters (e.g., by
AgentId,ConversationState,MediaType) to reduce result sets and avoid missing fast transitions? - Any recommended max poll rate or server-side streaming/events option to avoid race conditions?
- Versioning
- Do these semantics vary by MICC version? If so, which build numbers/documentation should we follow?
Sample logs (redacted) available
We can share short snippets showing NonAcd items that later vanish (“Finished”) without LAR ever getting set, if that helps you pinpoint expected behavior.
Our goal is to implement your recommended, supportable method—no heuristics. If there’s a specific doc/page or state diagram that defines these transitions and timestamp guarantees, a link would be great.
Thanks a lot for your guidance!
Best regards,