Hi Patrick,
What
kind of .NET application are you developing? In the contrib folder there is the
.NET event socket code (I think that’s where it is). But I don’t
know anything about that.
I do
know a bit about mod_mono, so I’ll talk about that:
To get
mod_mono to build, you’ll need Windows and VS 2008 (well, I don’t
have the linux build steps anyways). You’ll have to generate mono.lib for
your compiler. From here:
http://www.mono-project.com/Embedding_Mono
“On windows you need to generate an import
library for mono.dll by getting the following file:
and creating mono.lib with the command:
lib /nologo /def:mono.def /out:mono.lib /machine:x86“
Make
sure your PATH has the Mono bin folder in it (such as “C:\Program
files\Mono-1.9.1\bin”).
From
there, you can add mod_mono and mod_mono_managed to the build setting in the VS
SLN and compile them. Load mod_mono in the modules.conf.xml, then drop your apps
in <fsdir>\mod\mono\. If you compile debug, a few simple demos will
compile and load (they are in the mod_mono_managed source, Demo.cs).
It’s
quite easy, as it uses the FS C++ API here’s a simple, pointless app in
Javascript for .NET:
import System;
import FreeSWITCH;
class JExample extends
AppFunction
{
protected override
function Run()
{
Session.Answer();
Session.Hangup("USER_BUSY");
}
}
Here
is a 40-line RSS reader (well, printer, since I haven’t gotten Cepstral
building on Windows) in F#:
#light
namespace rss
open System
open System.Net
open System.IO
open System.Xml.Linq
open FreeSWITCH
module funcs =
let httpGet
(url : string) =
let req = WebRequest.Create(url)
use resp = req.GetResponse()
use stream = resp.GetResponseStream()
use reader = new StreamReader(stream)
reader.ReadToEnd()
let getXDoc url
= XDocument.Parse(httpGet url)
let xname s =
XName.Get(s)
let
getChannelTitle (doc : XDocument) = Seq.hd(doc.Descendants(xname
"title")).Value
let
getItemData (item : XElement) = (item.Element(xname "title").Value,
item.Element(xname "description").Value)
open funcs
type reader() =
inherit
AppFunction()
member
app.item : int = 0
member
app.say s =
// We need to init the TTS and all that, but for now...
Log.WriteLine(LogLevel.Info, "Say: " + s)
//app.Session.Speak s |> ignore
override
app.Run() =
app.Session.Answer |> ignore
// app.Session.SetTtsParameters ("cepstral", "david")
app.say ("Reading " + app.Arguments)
let doc = getXDoc (app.Arguments)
app.say (getChannelTitle doc)
doc.Descendants(xname "item")
|> Seq.map getItemData
|> Seq.iter (fun (title, desc) ->
app.say ("Item, " + title)
app.say ("Description, " + desc))
app.Session.Hangup("NORMAL_CLEARING")
Hope that helps a bit.
-Michael
From:
freeswitch-dev-bounces@lists.freeswitch.org
[mailto:freeswitch-dev-bounces@lists.freeswitch.org] On Behalf Of Patrick
Tran
Sent: Wednesday, June 25, 2008 6:24 PM
To: freeswitch-dev@lists.freeswitch.org
Subject: [Freeswitch-dev] .NET Development
I’m new to Freeswitch and trying to develop a .NET
Application. I’m having a lot of trouble getting started though. There
doesn’t seem to be a lot support out there for this. My development has
sort of come to a stand-still and I was wondering if anyone could help me get
pointed in the right direction. Any help would be much appreciated.
Thanks
-Patrick