[Freeswitch-users] answer via .net esl is getting ignored

Yisroel M. Olewski yisroel at machshevet.com
Tue Dec 24 12:22:37 MSK 2013


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

 

 

 

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20131224/fbd61b0c/attachment.html 


Join us at ClueCon 2013 Aug 6-8, 2013
More information about the FreeSWITCH-users mailing list