Try using ESL Outbound mode, I am not sure why it would make a difference, but I have recently used outbound mode and I was able to answer the call. See the mod_event_socket wiki page and the sample code in the managed_esl project for more information.

Duvid Rottenberg




On Tue, Dec 24, 2013 at 10:47 AM, Moishe Grunstein <max@nysolutions.com> wrote:

What are you seeing in the logs?

 

 

Thanks,

 

Moishe Grunstein

Tornado Computer Systems, Inc.

212.400.7650 888.IPPBX.US
Service Request Email: support@nysolutions.com

Polycom Certified VAR
Microsoft Small Business Specialist, Cisco SMB Select Certified

cid:image001.jpg@01C72F94.9EE45D60

Computer Networking * Managed Services * IP Video Surveillance * Network Assessments * Web Solutions * Voice over IP * Disaster Recovery * Network Security * Site Surveys * CMS

 

From: freeswitch-users-bounces@lists.freeswitch.org [mailto:freeswitch-users-bounces@lists.freeswitch.org] On Behalf Of Yisroel M. Olewski
Sent: Tuesday, December 24, 2013 4:23 AM
To: freeswitch-users@lists.freeswitch.org
Subject: [Freeswitch-users] answer via .net esl is getting ignored

 

Hello everyone

This is my first posting via the mailing list

I’m trying my hand at freeswitch esl with .net

I’ve managed to get a hold of all incoming events, but can’t seem to "pick up the phone"

my first goal is to pick up the phone and read out some text via tts

I’ve scoured the web, tried everything I can find or think of but no luck

here’s my code

 

    Private Sub winMain_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded

        ThreadPool.QueueUserWorkItem(New WaitCallback(Sub(stateInfo)

                                                          FreeSwitch = New ESLconnection("10.0.0.1", 8021, "mypass")

                                                          Dim eslEvent = FreeSwitch.SendRecv("event plain ALL")

                                                          FreeSwitch.SendRecv("event plain DTMF")

                                                          If eslEvent IsNot Nothing Then

                                                              AddEvent(eslEvent)

                                                              While FreeSwitch.Connected

                                                                  eslEvent = FreeSwitch.RecvEvent

                                                                  AddEvent(eslEvent)

                                                              End While

                                                          End If

                                                      End Sub))

 

    End Sub

 

    Private Sub AddEvent(e As ESLevent)

        Dim dd = TextCollection(e.Serialize(""), ": ", vbLf)

        Dim eventname = dd("event-name")

        'Dim uid = dd("Unique-ID")

        Dim uid = dd("Channel-Call-UUID")

        If dd("Caller-Network-Addr") <> "" Then

            Dim dcx = DBEntities()

            Dim ses = dcx.Sessions.SingleOrDefault(Function(x) x.ServerCode = uid)

            Dim ChannelState = dd("Channel-State")

            Dim ChannelCallState = dd("Channel-Call-State").ToLower

            Select Case eventname

                Case "CHANNEL_STATE"

                    If ses Is Nothing Then

                        ses = New Session

                        dcx.Sessions.AddObject(ses)

                    End If

                    ses.CallerHost = dd("Caller-Network-Addr")

                    ses.CallerName = UrlDecoded(dd("Caller-Caller-ID-Name"))

                    ses.CallerPhone = dd("Caller-Caller-ID-Number")

                    ses.CallerUser = dd("Caller-Username")

                    ses.CalleeUser = dd("Caller-Destination-Number")

                    ses.ServerCode = uid

                    If {"cs_destroy", "cs_hangup"}.Contains(ChannelState) Then ses.HungUpOn = Now

                Case "CHANNEL_CALLSTATE"

                    If ChannelCallState = "ringing" Then

                        Dim evn = FreeSwitch.Execute("answer", String.Empty, uid)

                        Dim res = evn.Serialize("")

                    End If

                Case "CHANNEL_DESTROY"

                    If ses IsNot Nothing Then ses.HungUpOn = Now

            End Select

            dcx.SaveChanges()

        End If

    End Sub

 

the answer line is getting reached, and the result is "+OK" but the phone still keeps ringing

please note that I’m unsure which is the correct uuid, but trying both of them gave me identical results

 

As per advise from Nuwan Wijerathne, I put the “answer” action in the dialplan, and tried just the playback from code (just a wav file), but the result is the same. Freeswitch ignores entirely my commands.

It picks up, and immediately hangs up because it has finished the whole dialplan

 

I’d appreciate your help. I’m pretty new to freeswitch and esl

 

Please advise

 

Sincerely,

ymo

 

 

 

 


_________________________________________________________________________
Professional FreeSWITCH Consulting Services:
consulting@freeswitch.org
http://www.freeswitchsolutions.com

FreeSWITCH-powered IP PBX: The CudaTel Communication Server
http://www.cudatel.com

Official FreeSWITCH Sites
http://www.freeswitch.org
http://wiki.freeswitch.org
http://www.cluecon.com

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