RavenclawDev: passing frames to back end seervers + front end

Svetlana Stenchikova sveta at cs.sunysb.edu
Thu Oct 5 10:34:02 EDT 2006


I see - thank you.
Current back end servers (NLG and RavenClaw backend) are perl servers but
are communicated through the C server backendserver2. If you change
RavenClaw to pass frames properly, wouldn't this affect just the
backendserver2?

So, how does Jason communicate with DM, Does it replace the TTY and act as
TTY by receiving its messages?  I have not yet ran Jason, but we will be
also writing a new front-end server to replace the TTY. We don't need it
to work remotely (like Jason), we just need a nicer UI to show a demo, so
I suppose that we do not need the support for sessions that was recently
done to RavenClaw in order to support Jason, right?
If you have any suggestions to us regarding front end server, we would
appreciate them.

Thank you,
Svetlana

---------------------------------------------------------
Svetlana Stenchikova, Ph.D. Candidate
Computer Science Department, Stony Brook University
http://cs.sunysb.edu/~sveta
sveta at cs.sunysb.edu
---------------------------------------------------------

On Thu, 5 Oct 2006 tkharris at cs.cmu.edu wrote:

> Sure,
>
> Oh, the fixup code didn't have anything to do with Jason. Sorry for the
> confusion. The inframe is only intended for the backend, and Jason is a
> front-end component, so the fixup code wasn't required for Jason. The
> reason I have the fixup code is because I needed a new backend, which
> happened to be written in c++.
>
> -Thomas
>
> > Thanks Thomas, this makes sense.
> > I just have one more question. Your Jason server is a Java server, why is
> > the workaround code in C? Do you use the C server as a wrapper for
> > Jason?
> >
> > Svetlana
> >
> >
> > On Wed, 4 Oct 2006, Thomas K Harris wrote:
> >
> >> Yes, the frame is sent by the dialog manager. My fixup code is in my
> >> backend
> >> server to parse the inframe. If you write a java version of the fixup
> >> code
> >> and put it in your java backend, then you can treat the inframe like any
> >> other galaxy frame and make a call something like the following to get
> >> the
> >> inframe properties.
> >>
> >> String EventType =
> >> (String)inframe.getFrame(":event_query").getProperty(":event_type");
> >>
> >> The other solution is to change Ravenclaw to not embed the inframe as a
> >> string, or at least to make that string a validly-formed galaxy frame.
> >> I'll
> >> bring this up tomorrow when the group meets.
> >>
> >> -Thomas
> >>
> >> > -----Original Message-----
> >> > From: Svetlana Stenchikova [mailto:sveta at cs.sunysb.edu]
> >> > Sent: Wednesday, October 04, 2006 12:12 PM
> >> > To: Thomas K Harris
> >> > Cc: 'Basia Mucha'; 'Dialog Group CMU'
> >> > Subject: RE: RavenclawDev: RavenClawDev: reusing agents in another
> >> part of
> >> > atree
> >> >
> >> >
> >> > Thomas,
> >> > The frame is sent by a dialog manager, right?
> >> >
> >> > In our dialog manager we have an agent which calls add_event method of
> >> the
> >> > backend and passes an object "event_add"
> >> >
> >> >
> >> > DEFINE_EXECUTE_AGENT( CDBAddEvent,
> >> >     CALL("java_be.add_event <event_add error>backend_error")
> >> > )
> >> >
> >> > The framework generates the inframe that is passed to the back end.
> >> >
> >> > How would do you embed a galaxy frame in a string when making a CALL
> >> to
> >> > a back end from the dialog manager?
> >> >
> >> > Is this where your fix-up code comes in? Is your fix-up code part of
> >> the
> >> > dialog manager (as opposed to being a part of a back-end server)?
> >> >
> >> > thank you,
> >> > Svetlana
> >> >
> >> > On Wed, 4 Oct 2006, Thomas K Harris wrote:
> >> >
> >> > > No, it's just the frame that Ravenclaw sends to the backend that has
> >> a
> >> > > galaxy frame embedded as a string. Its output frame contents are
> >> > accessible
> >> > > via the normal galaxy frame access calls.
> >> > >
> >> > > -Thomas
> >> > >
> >> > >
> >> > > -----Original Message-----
> >> > > From: Svetlana Stenchikova [mailto:sveta at cs.sunysb.edu]
> >> > > Sent: Wednesday, October 04, 2006 11:14 AM
> >> > > To: Thomas K Harris
> >> > > Cc: 'Basia Mucha'; 'Dialog Group CMU'
> >> > > Subject: Re: RavenclawDev: RavenClawDev: reusing agents in another
> >> part
> >> > of
> >> > > atree
> >> > >
> >> > > Thanks Thomas,
> >> > >
> >> > > in your Jason server you used:
> >> > > int i =
> >> > > Integer.parseInt((String)f.getFrame(":parse").getProperty(":uttid"));
> >> > >
> >> > > How did you make that work, did it require some change in RavenClaw?
> >> > >
> >> > > Svetlana
> >> > >
> >> > > ---------------------------------------------------------
> >> > > Svetlana Stenchikova, Ph.D. Candidate
> >> > > Computer Science Department, Stony Brook University
> >> > > http://cs.sunysb.edu/~sveta
> >> > > sveta at cs.sunysb.edu
> >> > > ---------------------------------------------------------
> >> > >
> >> > > On Wed, 4 Oct 2006, Thomas K Harris wrote:
> >> > >
> >> > > > Yes, Ravenclaw uses this pseudo-galaxy-frame format for the
> >> inframe. I
> >> > > wrote
> >> > > > some fix-up code that converts these frames to real galaxy frames,
> >> but
> >> > the
> >> > > > code is in c++. The code snippet follows. This is something that
> >> > probably
> >> > > > needs to be fixed in Ravenclaw eventually, but there's an
> >> installed
> >> > code
> >> > > > base that depends on the current format, so it will take some
> >> > > coordination.
> >> > > >
> >> > > >
> >> > > >
> >> > > > Gal_PrFrame(f);
> >> > > >
> >> > > > char* s_inframe = Gal_StringValue(aStr);
> >> > > >
> >> > > > if(s_inframe) {
> >> > > >
> >> > > > //frame fixup -> ravenclaw embeds inframe frame
> >> > > >
> >> > > > ostringstream fixed;
> >> > > >
> >> > > >             string notfixed(s_inframe + 1);
> >> > > >
> >> > > >             istringstream inotfixed(notfixed);
> >> > > >
> >> > > >             fixed << "{c zap ";
> >> > > >
> >> > > >             string token;
> >> > > >
> >> > > >             do {
> >> > > >
> >> > > >                         inotfixed >> token;
> >> > > >
> >> > > >                         if(token == "}") break;
> >> > > >
> >> > > >                         fixed << ':' << token << ' ';
> >> > > >
> >> > > >                         char cpVal[255];
> >> > > >
> >> > > >                         inotfixed.ignore();
> >> > > >
> >> > > >                         inotfixed.getline(cpVal, 254);
> >> > > >
> >> > > >                         fixed << '"' << cpVal << "\" ";
> >> > > >
> >> > > >             } while(inotfixed);
> >> > > >
> >> > > >             GalUtil_Error("working with fixed version: %s",
> >> > > > fixed.str().c_str());
> >> > > >
> >> > > >             Gal_Frame inframe =
> >> > > > Gal_ReadFrameFromString(fixed.str().c_str());
> >> > > >
> >> > > > }
> >> > > >
> >> > > >
> >> > > >
> >> > > > -Thomas
> >> > > >
> >> > > >
> >> > > >
> >> > > >   _____
> >> > > >
> >> > > > From: ravenclaw-developers-bounces at LOGANBERRY.srv.cs.cmu.edu
> >> > > > [mailto:ravenclaw-developers-bounces at LOGANBERRY.srv.cs.cmu.edu] On
> >> > Behalf
> >> > > Of
> >> > > > Basia Mucha
> >> > > > Sent: Wednesday, October 04, 2006 10:22 AM
> >> > > > To: Dan Bohus; Dialog Group CMU
> >> > > > Subject: Re: RavenclawDev: RavenClawDev: reusing agents in another
> >> > part of
> >> > > > atree
> >> > > >
> >> > > >
> >> > > >
> >> > > > Sorry for the last email, I pressed send by mistake.
> >> > > >
> >> > > >
> >> > > >
> >> > > > What I wanted to write:
> >> > > >
> >> > > >
> >> > > >
> >> > > > We have created a CalendarBackened that receive GFrames from the
> >> > > > DataManagar.
> >> > > >
> >> > > > The GFrame looks like this:
> >> > > >
> >> > > > Received frame:
> >> > > > {c java_be.get_events
> >> > > >    :hub_opaque_data {c admin_info
> >> > > >                        :reply_requested 1
> >> > > >                        :session_id "Default"
> >> > > >                        :invoked_stype "java_be"
> >> > > >                        :tidx 12
> >> > > >                        :provider_id "[8]"
> >> > > >                        :timestamp [array: type GAL_FLOAT_64, 1
> >> > elements]
> >> > > >                        :scriptless 1 }
> >> > > >    :session_id "Default"
> >> > > >    :tidx 12
> >> > > >    :inframe "{
> >> > > >             event_query {
> >> > > >             event_type  CLASS
> >> > > >             }
> >> > > >
> >> > > >             }
> >> > > >             " }
> >> > > >
> >> > > > I could easity get the inframe by
> >> > > >
> >> > > > String tokens = ((String)f.getProperty(":inframe"));
> >> > > >
> >> > > > however is there a way to get the event_type without parsing the
> >> > string
> >> > > > meaning something like
> >> > > >
> >> > > > String tokesn =
> >> > > > ((String)f.getPropperty(":inframe.event_query.event_type")????
> >> > > >
> >> > > >
> >> > > >
> >> > > > Thank You for all your help.
> >> > > >
> >> > > >
> >> > > >
> >> > > >
> >> > > >
> >> > > > On 10/4/06, Basia Mucha <basiamucha at gmail.com > wrote:
> >> > > >
> >> > > > Received frame:
> >> > > > {c java_be.get_events
> >> > > >    :hub_opaque_data {c admin_info
> >> > > >                        :reply_requested 1
> >> > > >                        :session_id "Default"
> >> > > >                        :invoked_stype "java_be"
> >> > > >                        :tidx 12
> >> > > >                        :provider_id "[8]"
> >> > > >                        :timestamp [array: type GAL_FLOAT_64, 1
> >> > elements]
> >> > > >                        :scriptless 1 }
> >> > > >    :session_id "Default"
> >> > > >    :tidx 12
> >> > > >    :inframe "{
> >> > > >             event_query {
> >> > > >             event_type  CLASS
> >> > > >             }
> >> > > >
> >> > > >             }
> >> > > >             " }
> >> > > >
> >> > > >
> >> > > >
> >> > > >
> >> > > > --
> >> > > > Thanks,
> >> > > > Basia
> >> > > >
> >> > > >
> >> > >
> >> > >
> >> > >
> >>
> >>
> >>
> >
> >
>
>
>


More information about the Ravenclaw-developers mailing list