Hi,
Based on the documentation, I believe the main limitation is that agent-first callbacks do not perform Call Analysis (AMD). Without AMD, Genesys has no supported mechanism to distinguish between a live answer and a carrier voicemail. Both scenarios simply result in a successful SIP connection, which is why tCallbackNotReached is not emitted once the voicemail answers.
From the Call Analysis documentation:
Call Analysis is used to classify the outcome of an outbound call (live voice, answering machine, SIT tone, fax, etc.).
https://help.mypurecloud.com/glossary/call-analysis/
Because your scenario uses callbacks rather than an Outbound Dialer campaign, the AMD result is not available.
One possible approach that came to mind (although I haven't validated it yet) would be to inspect the SIP signaling instead of relying on Analytics events.
For example:
Trigger a Workflow from v2.detail.events.conversation.{id}.customer.end.
Retrieve the conversationId.
Call the Telephony SIP Traces API:
This would not provide AMD, and I would not expect it to identify voicemail directly, since both a human answer and carrier voicemail typically produce a SIP 200 OK.
However, depending on the carrier, it may be worth comparing SIP traces from:
a call answered by a person, and
a call forwarded to carrier voicemail,
to see whether any forwarding-related SIP headers (such as Diversion, History-Info, Reason, or other carrier-specific headers) are present.
If the carrier exposes this information consistently, it could potentially be used as a custom heuristic for callback retries. Of course, this would be carrier-dependent and not equivalent to Genesys AMD.
Given that this is a callback scenario rather than an Outbound Dialer campaign, I think that's probably the only technical avenue worth exploring beyond wrap-up codes.
------------------------------
Raphael Poliesi
------------------------------