Also, the other question is this: do you need early media? If not then Darren's suggestion is definitely the way to go. Note that if you ignore early media then all calls that fail will show up as a NO ANSWER. If this doesn't work for you then ignoring early media is not an option, in which case there simply is no perfect way to do it and you just have to make the best of it. What I've done in the past is something like this:

originate openzap/1/a/5551212 825551212

Then I define an extension that matches on ^82(\d+)$ and does something like this
<action application="pre_answer"/>
<action application="set" data="execute_on_answer=transfer IVR_ANSWER"/>
<action application="sleep" data="20000"/>
...handle non-answered calls

Then I define another extension that matches on ^IVR_ANSWER$ and does something like this
<action application="sleep" data="500"/>
<action application="ivr" data="my_ivr"/>
...etc...

The idea for me is to handle the different scenarios I might face when dialing. At the very least if the call goes unanswered then I have the hangup_cause variable that tells me if it was busy, no answer, invalid, etc.

Hope that helps.
-MC

On Fri, Dec 12, 2008 at 5:48 AM, Darren Schreiber <d@d-man.org> wrote:
How are you originating calls? You probably need to add
{ignore_early_media=true}. This tells FreeSWITCH not to return from
origination when early media (progress/ringing) was received (I think
anyway)...

See http://wiki.freeswitch.org/wiki/Channel_Variables#ignore_early_media

There is a sample of this in use with the originate command here:
http://wiki.freeswitch.org/wiki/Mod_commands#originate (about halfway down)

Setting channel variables before doing the originate

  originate {ignore_early_media=true}sofia/mydomain.com/18005551212@1.2.3.4
15555551212



Since you are making a dialer, you may want to start the originations in the
background and move on to the next call while tweaking the timeout value for
originated calls. From the WIKI again:

"You can originate a call in the background (asynchronously) and playback a
message with a 60 second timeout.

  bgapi originate
{ignore_early_media=true,originate_timeout=60}sofia/gateway/name/number
&playback(message)"

- Darren



-----Original Message-----
From: Alexandru Nedelcu [mailto:alex@sinapticode.ro]
Sent: Friday, December 12, 2008 3:39 AM
To: freeswitch-users@lists.freeswitch.org
Subject: [Freeswitch-users] Freeswitch streamFile when the user answers

Hi,

I'm working on a simple dialer, and I have the following problem: the audio
file starts playing before the user answeres the phone (while it's ringing).
It only works when I introduce a delay, but that doesn't seem right.

For instance in the asterisk context referred in the call files, I had:

exten => s,4,Answer
exten => s,n,Wait(2)
exten => s,n,Background(${SOUNDFILE})
And indeed it played a soundfile 2 seconds after the called person picked up
the phone

In FS I currently initiate calls like this:

session.waitForAnswer(10000);

if (session.ready()) {
   session.sleep(2000);
   session.streamFile(/*...*/);
}

Is this right?


_______________________________________________
Freeswitch-users mailing list
Freeswitch-users@lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org


_______________________________________________
Freeswitch-users mailing list
Freeswitch-users@lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org