[Freeswitch-users] Fwd: IVR Problem

Thangappan.M thangappan143 at gmail.com
Thu Jul 30 22:04:46 PDT 2009


If I missed out the async mode from the dial plan I am not able to get the
events from it.

Here is my Perl script.

# Create a conenction with Event socket library.
my $conn = new ESL::ESLconnection($fd);

# Getting the connection informations and values of the variables.
my $info = $conn->getInfo();

# Getting the caller id and print the statement.
my $caller_id =$info->getHeader("caller-caller-id-number");
printf  "Connected from %s\n", $caller_id;

# Receive the events from only in this switch.
$conn->sendRecv("myevents");

# Answer the call.
 $conn->execute("answer");

# playback the welcome message.
 $conn->execute("playback",$sound_path."ivr/ivr-welcome_to_freeswitch.wav");

$conn->execute("playback",$sound_path."ivr/ivr-this_ivr_will_let_you_test_features.wav");

$conn->execute("playback",$sound_path."ivr/ivr-you_may_exit_by_hanging_up.wav");

$conn->execute("sleep", "1000");

# Until the connection get disconnected
 while($conn->connected()){

                # Receive the event
                my $event = $conn->recvEvent();

                # Check the event is received
                if($event){
                        # Get the event name  and print it.
                        my $name = $event->getHeader("event-name");
                        print "EVENT:[$name]\n";

                        # If the event name is DTMF then print the  enterted
digit.
                        if($name eq 'DTMF'){
                                my $digit = $event->getHeader("dtmf-digit");
                                my $duration =
$event->getHeader("dtmf-duration");
                                # And duration.
                                print "DTMF digit $digit ($duration)\n";
                       }
                }
        }


If I specified data field in the dial plan as <127.0.0.1:5000 full> All the
voice files are played in order.But I am not able to get the EVENTS in the
while loop.

If I specified data field in the dial plan as <127.0.0.1:5000 async
full>.The voice files are not played in order.But I am able to get the
events in the while loop.

I need to receive EVENS.Then I check the event name if it is DTMF based on
the DTMF input I processed that option.

In the case of $conn->setEventLock("true") , where can I reset this value to
false.

Please Help Me.......


---------- Forwarded message ----------
From: Thangappan.M <thangappan143 at gmail.com>
Date: Thu, Jul 30, 2009 at 12:42 PM
Subject: IVR Problem
To: freeswitch-users <freeswitch-users at lists.freeswitch.org>


Dear all,

             I am in the process of implementing an IVR using event outbound
socket. In the dial plan I used the following statement.
             <action application="socket" data="127.0.0.1:5000 async full"/>

            I implemented a Perl script which is listening on the dial plan
specified IP address and  PORT ( In this case 127.0.0.1 and 5000). Whenever
the caller is calling 5000 I executed the above dial plan.
            Before dialing to the number I executed the Perl script.

              In my Perl script, first I did the following steps.

                    * Accepting the client connection
                    * Fork a process
                    * Connect with Event Socket Library
                    * Finally send and receive the events to that channel.

           In the sending part, at first I  am sending
($conn->sendRecv("myevents") ) myevents to the freeswitch.It means receive
the events from this channel only.

            I answer for that call ( $conn->execute("answer") )

        Then I play back three files as


$conn->execute("playback",$sound_path."ivr/ivr-welcome_to_freeswitch.wav");

$conn->execute("playback",$sound_path."ivr/ivr-this_ivr_will_let_you_test_features.wav");

$conn->execute("playback",$sound_path."ivr/ivr-you_may_exit_by_hanging_up.wav");

Here the sound path is /usr/local/freeswitch/sounds/en/us/callie/

       But it is not play backed the sound in order. Why?
       I know that it is a problem in mode(async, full). Can you please
clarify these two keywords?
       I have studied from the wiki page. But I was not able to get it.

       I also specified the lock mode after every play back as
       $conn->SetEventBlock("true");

But is not working. Could you please solve this issue?







-- 
Regards,
Thangappan.M



-- 
Regards,
Thangappan.M
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20090731/0306f93f/attachment-0002.html 


More information about the FreeSWITCH-users mailing list