We have a new tool -- 3CX Audio Announcer. It is actually a rebranding/consolidation of three tools we offered in the past -- 3CX Recording Beep, 3CX Agent Greeting, and 3CX Barge Messages. Since they all pretty much do the same thing (barge into a call and play a message), we decided to wrap them together into one tool.
Recording beep can automatically play an initial message when a call is answered, or play an audio (beep) every 15 seconds. Barge Messages enables an agent to play an audio file, from a list, when needed. Agent Greeting is specifically for queue calls -- the agent records their personal greeting, and that greeting is played automatically when they answer a queue call.
May I offer a suggestion for the future? I frequently see posts with two deficiencies -- either the post has insufficient information about what they are trying to achieve, or they describe a challenge they are trying to overcome, but don't explain what they are trying to achieve.
For us to provide the most help, explain as clearly as you can, the desired outcome, not how you want to get the outcome. It's OK to describe how you are attempting to go about achieving the outcome, and any struggles you are experiencing, but sometimes there are easier/better ways of getting what you need... so knowing what you are trying to achieve is important.
In your case, we do not have enough information about what you are trying to achieve. Is this an automated phone call, or a number dialed directly by your staff? After the greeting is played, what should happen? Is the contact offered choices? For example, "To confirm your appointment, press 1, or to reschedule, press 2'. Or is the greeting played, and heard both by the person who placed the call as well as the contact, and after the greeting, the conversation continues much like if the agent had spoken the greeting? Perhaps you want the greeting played first, and only transferred to the agent after the greeting is played?
Also, you implied a technical requirement (using a CFD). As a general rule, a CFD is invoked by an INBOUND phone call, not an outbound call. So now we have to talk about how your outbound phone calls are invoked to see if using a CFD application even applies to your need. Technically, you can invoke a CFD on an outbound call, but it would require a programmatic MakeCall API to do it. So, how far down the rabbit hole do you want to go with designing a solution before we know, for sure, what you are trying to achieve. More detail, rather than less, is always helpful.