Brief description of Galatea architecture and the protocol

  • The aim of the design
    • To make several modules are decentralized with several machines, and cooperate
    • Readability like the shell script
  • Protocols and conventions
    • module names: "@SRM", "@SSM", "@AM-MCL", etc.
    • example of the message: "to @SRM set Run = START"
    • for "inq (Name)", a reply called "rep (value)" is performed
    • simple information dispatch: "From @xxx tell (msg)"
    • broadcast
      • Treat a transmitted message without specifying a receiver
      • The output from each module "From @xxx"
        • "From @xxx to @yyy" then send to yyy
        • "From @xxx to @yyy,zzz" then send to yyy,zzz
        • without "to @xxx" then send as broadcast
        • the modules receiving bloadcast are specified in am.conf
        • Note: this specification is different from galatea-linux-ipa. It was implemented in AgentManager-gdm.pl
    • Property setting: "prop"
      • For example, it is used for the switches of log output mode

The implementation of the module in Galatea Dialog Studio (DS)

DS itself behaves as the @DM module, and can also offer virtual modules.

  • External submodule
  • Java class group
    • implemented as a Java class inside of DS.
    • examples: @SIM @SND
  • one-shot process group
    • example: @GRM
    • Whenever a certain function is used, DS starts a subprocess.
    • Communicate by file I/O.
    • The input-output of the subprocess is not Galatea protocol.
  • resident process group (no protocol conversion)
    • example: Implementation of @SSM for Windows mode
    • Start gtalk for a subprocess. gtalk continues running.
    • gtalk communicates with standard input-output in Galatea protocol.
  • resident process group (with protocol conversion)
    • example: @SRM (Dialog Studio 2.2.4)
    • Start julius for a subprocess. julius continues running.
    • julius runs with a server mode.
    • The socket client corresponding to julius server is implemented as Java class.
    • A wrapper class converts the input-output of julius server into Galatea protocol.

The architecture of the dialog control system

  • DocLoader
    • fetch of an HTTP resource or a local file, and pass it to a DOM parser
    • Carry out session management with CookieManager of Java 6 in HTTP.
  • Doc group: Convert VoiceXML into a StateMap form.
    • Implemented a parser of VoiceXML in Relaxer
    • Convert it into StateMap by Visitor design pattern of Relaxer
  • IC (InteractionController) : interpreter of StateMap.
    • Perform variable management and branch processing in JavaScript (Rhino) instance.
    • The input from modality is preprocessed in SIM. The converted description is interpreted in Rhino.
    • Manage the event queue of input and output
    • Manage the state model: for example, wait until completed after starting the output.
  • Command group: commands executed in each state of StateMap
  • OutItem group: classes which hold the contents which output Command group should output
    • if use NativeOutItem, it can transmit any command as "to @XXX set XXX" form
    • The output contents are evaluated in Rhino before sending
  • BreakOutItem: pseudo-output. Wait only at a certain time.
  • GrammarOutItem: pseudo-output. Operate the grammar compiler, i.e. @GRM.
  • DeviceManager: Distribute communication with @XXX to a virtual module
    • Implementation by the Chain of Responsibility design pattern