Design of Fundamental Learning Objects for Interoperability and Maximum Portability R. Gabrielle Reed 01/26/2002 Contents Design of Fundamental Learning Objects for Interoperability and Maximum Portability ............ 1 Contents ...................................................................................................................................... 1 Introduction ................................................................................................................................. 1 Scenario of a Teacher's Use of the Application to Prepare a Lesson.......................................... 2 Scenario for A Student Using A Constructed Capsule ............................................................... 2 Description of the Fundamental Learning Objects ..................................................................... 3 Functional Description of an Application to Generate the Fundamental Learning Objects (FLOs) ......................................................................................................................................... 3 Use Cases for the Learning Objects Tool ................................................................................... 4 Architecture of Adaptive Teaching Fundamental Learning Objects .......................................... 6 Java Technology ......................................................................................................................... 6 Cocoon ........................................................................................................................................ 6 Current Applications/ Projects Using Similar Technology ........................................................ 6 Application Benefits in Comparison with Existing Systems ...................................................... 8 The need for age sensitive mind-tools, applications and educational resources......................... 8 Fundamental Learning Object to Implement a Speech-Narration Interface ............................... 9 Default XML Tags for the Metadata for the Fundamental Learning Object ............................ 10 Format for an Informative Fundamental Learning Object ........................................................ 10 Format for an Illustrative Fundamental Learning Object ......................................................... 11 Format for an Inquisitive Fundamental Learning Objects ........................................................ 12 Format for a Cognitive Fundamental Learning Objects ........................................................... 12 Format for an Interactive Fundamental Learning Objects ........................................................ 12 Format for an Instructive Fundamental Learning Objects ........................................................ 12 Format for a Collaborative Fundamental Learning Objects ..................................................... 12 References ................................................................................................................................. 12 Resources .................................................................................................................................. 12 Reusability and Open Source ................................................................................................ 12 XML processing.................................................................................................................... 12 Learning Object Model ......................................................................................................... 12 Web Based Environments ..................................................................................................... 12 Appendix A: An example of ADL SCORM XML SCORM Conformant Content - Details . 13 Appendix B: An example of An Interface Agent Template in JavaScript- BellCraft Technologies ............................................................................................................................. 15 Introduction Instructional materials currently stored in Internet repositories have benefits of sharability, but these, by their design does not minimize the problems associated with hypertext multimedia Instructional environments. This is due to the granularity of the material. Each one has its own navigation, use instructions, links to outside of the environment, format and style. I recommend a repository by content entities, referred to as Fundamental Learning objects, supported with information to allow each to stand on its own, and allow the presentation to be designed by the instructor. It will minimize the cognitive load, maximize usability by many students, including those needing accommodations, provide consistency in navigational and format, and allow instructors more control. By using Web technology that separates the content from the style and format of the final document, gives us an opportunity to prepare content once, and be able to generate the result using Learning Centered Design in the form of printed documents, web pages, or interactive environments. This paper discusses the design of a tool that will aid instructors in developing the fundamental Learning Objects. Based on the current research in educational technology, templates for each type of information are discussed, with discussion of common problems associated with that type of information. Attributes are recommended that should be incorporated into the content to provide an effective learner centered environment. These may be used as an aid in developing useful and effective entities. Scenario of a Teacher's Use of the Application to Prepare a Lesson An elementary school teacher wants to prepare an interesting experience to give some students a second chance to learn a subject, in which they failed to do well. She thought that they may need additional time to understand the material, or different approach to a subject. She does a web search for illustrations, or activities that may help. She has some ideas for an activity for them to do. She comes across a web-based game that involves the subject and she saves the URL for later. She opens the application and enters the topic for the experience. She selects the objective by the type of knowledge she wants them to develop. She selects age group, her preferred teaching strategy, and keeps the style preferences. The application returns a labeled tree with a proposed lesson architecture with generated default templates for each of the Fundamental Learning objects as nodes. She adds, or deletes any of the nodes to fit what she wants. She saves the tree structure. She selects each of the Nodes and completes the required information, and leaves the optional information as defaults. She selects the informative nodes for the Introduction and Summary/Wrap up and types in her introduction and summaries to the material tailored to this experience. She selects the illustrative node to insert an URL to an example of a similar situation to the one she is preparing them to do. She selects a Cognitive node and specifies the URL to the web game, along with an introduction and instructions on what they need to do. She previously had made a FLO that was an inquisitive node for a testing session for her students, with a number of questions, hints, and possible answers, with feedback on each wrong answer. She adds this existing node to the tree after the activity but before the Wrap up. She can save at any time. To check it she selects the node on the tree with the particular topic name. She presses the display button, and runs through the experience and confirms everything is as she wants. She presses generate, and it produces a web directory for her to copy on a floppy to the computer her students will use. Scenario for A Student Using A Constructed Capsule A student is given the assignment to go to the computer, open a browser and select a particular web page. The webpage starts the Lesson that the teacher had prepared for her. The student is directed to the informational display in the Introduction. She is directed to the illustrative presentation, describing the main points of the illustration. The system presents some questions based on the information and illustration to assess the level of understanding and help to clarify cognition. The student responds to the inquiries. The student is then given instructions of performing a task that uses the information. The progress is tracked through the cognitive process, as the student performs the exercise. Affective checking is performed, and additional help is provided if necessary. The student is given direction through the experience, and the instructive module tracks the performance. An interface agent assists during the process by the collaborative exercises or as the assistant to the learning exercise. Inquisitive module checks the learning, by providing questions, options, answers, examples, and clarifying statements as requested by the student. Wrap up provides information for further study, review, and what is coming up next. Description of the Fundamental Learning Objects This table provides the name associated with each type of Fundamental Learning Object, and a description of its use. Learning Object Function Informative Illustrative Inquisitive Cognitive/ multimedia Interactive Instructive/Peda gogical Collaborative Description of typical learning assets Contains descriptive information, abstracts, introductions, summaries, definitions, reference material Contains pictures, illustrations, tables, graphs, figures, examples, diagrams Contains questions, type of question, selections, prompts, hints, examples, solutions, evaluation, point values, total value, Contains structure and help to use mind-tools, activities using additional technology that is available on the system, web or downloaded as needed. This includes video, sound files, Java applets, Flash, Shockwave activities that require players or runtime environments as well as using client based applications Contains graduated help scheme, activity with monitored progress, completing a task Interface Agent assisted activities as mentor. This will incorporate a number of other objects. Contains interactive with peer through chat, instructor by chat or email, Interface Agent as peer or instructor Functional Description of an Application to Generate the Fundamental Learning Objects (FLOs) This is similar to the Instruction Architect1 that has 4 phases of construction. These 4 phases may be implemented using a tabbed panel with tabs of Components, Layout, Display, Save. I have added the configuration, style and adaptive choice selection in navigation and sequencing, as well. 1. Selects age range, interface, and purpose of the Fundamental Learning Object. 2. Search through the XML storage for information and type of object by keyword or topic. View and Select the components desired. On the Components page there would be the New Topic, Open Topic, along with the Search options. 3. Arrange components in an organized lesson structure by using a select and move with up and down arrows, or select and click where it should go. Drag and drop is discouraged due to recent findings in Human Computer Interaction research[ author(?), IEEE, HCI November 1 http://ia.usu.edu/app_user "The Instruction Architect" using SMETE database 2001]. On the Layout page would be the lesson structure and the list of selected components. Each node of the lesson structure and listed item is clickable to open with the detail information on the FLO. 4. Display the constructed lesson information and then edit any changes. The Display page has a button to display and edit the generated pages. There would be options of display of the lesson structure and the link to the generated pages. Edit option would allow them to edit on the pages directly. 5. Generate and store the content of the lesson environment, save changed FLOs and encapsulate in a LOM. The Save tab would have options to update FLO's, create new FLOs, encapsulate into LOM, store LOM, store FLOs and store the lesson structure. Use Cases for the Learning Objects Tool User Teacher/ Instructional Planner Function Setup Author information Attributes Provides Name, contact information Setup the Style Preferences Set up Affective responses Details Create Fundamental Learning Object (FLO) informative illustrative inquisitive cognitive interactive instructive collaborative Use FLO editor (FLOE) Create Capsule as LOM Selects Teaching Strategies Constructivist Instructional Methods Humanistic /Artistic Selects Types of Knowledge Descriptive Skill/ Procedure based Cognitive / analytical Experience Expanding Selects Age Range Below 6 (pre K and K) 6-7 ( early Elementary) User Function Attributes Edit Capsule Generate LOM Capsule Display Capsule Create Fundamental Learning Object Tree (FLOT) Modify FLOT Nodes Store FLOT Send LOM to Repository Age range, keyword, topic, FLO type Search Repository Age range, keyword, topic, FLO type Select Default FLOT User Student Function Setup student information Select Capsule Display Capsule Select item on the Tree Display information Display illustration Answer questions Perform exercise or activity Administration Sets up users Provides data on usage Logs teacher activity Logs student activity Repository Receives LOM Retrieves LOM Back ups DataBase Function members Provides Name, contact information Setup the Style Preferences Details 8-10 (late Elementary) 11-13 (Middle/ Jr High) Over 13 (High) Architecture of Adaptive Teaching Fundamental Learning Objects Software languages are selected in the hope of producing maximum portability, and usability to learning objects for web based learning environments. The FLO Application or webpage, displays, edits and generates XML pages describing the Fundamental Learning Objects (FLO), using Cocoon to run Java XML tranformers, SAX for communication , and DOM Servlet or by soap commands, displayable in a browser. The FLO Application or webpage collects, organizes, displays the FLOs and generates a learning environment viewable in the browser, and stores the XML LOM Standard Model in a searchable repository, with accessibility using XSL, soap, Java, Java Servlet and/ or Java Script Java Technology Java XML - Servlets are used to provide the administrative aspects, search and retrieval from the repository, and the lesson generation. http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e_draft/anatomy20 .html and http://java.sun.com/blueprints/guidelines/WS_article.html. The tutorial on Servlets is at http://java.sun.com/docs/books/tutorial/servlets/TOC.html. These are used in constructing xml pages, parsing existing pages, and storing them as Documents in a tree structure that may be modified and updated easily. Java XML API including SAX, DOM or JDOM, XSLT transformers tutorial is provided at http://java.sun.com/xml/jaxp/dist/1.1/docs/tutorial/TOC.html Cocoon Apache Cocoon is an XML publishing framework using XML and XSLT technologies for server applications. Using primarily SAX processing, Cocoon separates the concerns between content, logic and style. A centralized configuration system and caching is designed in the XML server applications. Cocoon interacts with most data sources, including: filesystems, RDBMS, LDAP, native XML databases, and network-based data sources. Transformers are able to adapt content to formats such as HTML, WML, PDF, SVG, or RTF. Cocoon currently runs as a Servlet or from a command line interface. Extensible Server Pages (XSP) and the Action framework may be used for any logic to specify resources and services for Cocoon to perform. Current Applications/ Projects Using Similar Technology IMS Project 2 uses the Learning Object Model (LOM) XML editor in Java and VB provides wrappers for the Learning Object (LO) but provides no assistance to a non technical user interested in composing high quality educational experiences. ADL 3 Project uses Sharable Content Objects SCORM as a part of a Run-Time Learning Environment that also includes administrative functions. The adjacent figure is the Manifest design Package Interchange File Manifest File 2 3 www.IMSproject.org www.adlnet.org Manifest Meta-data Organizations Resources (sub)Manifest(s) Physical Files (The actual Content, Media, Assessment, Collaboration And other files) of educational content. 4 The content is wrapped into Manifests that are used in an Instructional Management Runtime environment. Manifests describe and contain Assets, which are arranged as a learning experience. Assets are free formed without structure. It does address Navigation and sequencing and includes status to each SCO with a lesson_status with values of passed, completed, browsed, failed, not attempted, or incomplete. A Manifest can describe part of a course that can stand by itself outside of the context of a course (an “instructional object”), an entire course, or a collection of courses. It is left up to content developers to describe their content in the way they want it to be considered for aggregation or disaggregation. The general rule is that a package always contains a single top-level Manifest that may contain one or more sub-manifests. The top-level Manifest always describes the package. Any nested sub-manifests describe the content at the level at which the sub-manifest is scoped, such as: course, “instructional object”, or other.[SCORM]5 SCORM 6 incorporated the LOM standards along with the Dublin Core Group, and other elements needed for Department of Defense educational uses. It incorporates descriptive, taskoriented materials, and templates for use to prepare environments that teach this type of knowledge. This has software to edit Learning Objects, but they do not limit the resolution of the Learning Object, and so useable smaller blocks are not usable separately from the remaining object not readily reused or incorporated into another's learning materials. SCORM sample XML is included as Appendix A. Another problem is highlighted in the LOM is the resolution of the age groups to three divisions, elementary, middle and high. This does not take into consideration the different stages of development. Material appropriate for a Kindergartner is not for a 5th grader and vice versa. Instructional Architect 7 uses LOM objects from the Science, Mathematics, and Engineering database at SMETE.org. It provides a web environment that searches, assembles, displays and generated web pages that use Learning Objects, but this is appropriate for experience expanding, using the large, sometimes cumbersome, complicated objects currently in the database for a limited number of disciplines. COSE8 is a product for sale by Cambridge software that integrated learning objects into a course with adaptive help and reusable components. It is written in Perl, Javascript and Java on web servers. It was designed at Staffordshire University, with an on-line demo at http://www.camsp.com/COSE/livedemo/index.html. Research with Cocoon was performed by Mark Redmond at the Dublin City University School of Computer Applications on Developing a site for other than education using Apache's Cocoon Web Publishing Framework at http://www.compapp.dcu.ie/Projects/proj2001.htm . The Cocoon Web Publishing Framework, part of the Apache XML project, features the generation of multiple 4 SCORM_1.2CAM.doc downloaded from ADL http://www.adlnet.org/Scorm/downloads.cfm#spec SCORM_1.2CAM.doc 6 http://www.scorm.org 7 http://ia.usu.edu/app-user using www.smete.org database for science, mathematics and engineering LOM 8 http://www.camsp.com/COSE/ 5 file types from a single XML document and the complete separation of content from logic and presentation. In the project the content of the website being developed (an online record shop) is represented by well-formed XML documents and rendered into different types (dependant on the viewing browser) by XSL Transformation. XSP Pages, unique to the Cocoon framework, are XML documents which contain the programming logic (i. e. the Java code) embedded within XSP tags, allowing clean division and meaning that changes can be made to presentation without effecting content or logic. Application Benefits in Comparison with Existing Systems It is hard to remember all the attributes of quality educational material. The templates serve as a reminder. With the topic divided into fundamental functional components, a few may be completed at any one time and saved, to be completed at a later time. FLO are saved as separate objects, so already existing FLOs may be added to a Document Object Model (DOM) tree. The FLO can be transformed into a printable version using PDF and an HTML page as well. There is not a one to one correspondence of XML FLO to an HTML page, but they can be inserted at any location, to "expand the page". This may reduce the disorientation that may come about in web experience. The created FLOs, and the FLO Trees may be stored as a LOM and shared with others by placing it in a repository of objects that may be searched and incorporated into additional lessons. With access to a machine that has limited capacity, a quality lesson may still be provided. Exercises can be incorporated within a structured learning environment that initiate the use of mind tools, and other software packages available to the student. An example of this is if the student is asked to compose something, Notepad may be opened with a starting document that contains the instructions or a template for the exercise already, which appears in the text area. On a Windows machine, an agent using the shell command "notepad c:\temp\exerciseInstruction.txt". The learning environment can also invoke the Calculator, Excel or any other software on the user system. The selection of appropriate software to be used would be dependent of the age group with simpler applications used by early elementary, and more complex tools used as they get older. A search on a LOM repository can provide a teacher with new ideas and enable her to take advantage of the work of others. A search of web pages by age group, keyword, topic, or type of FLO will pull current stored information. FLO objects may be made using resources discovered by web search for definitions, encyclopedia references, images, illustrations, video, and sound files. The need for age sensitive mind-tools, applications and educational resources The applications available on the computers currently have too many options. It is true that a general all-purpose machine may be useable, it may not be most effective in minimizing cognitive load and distractions. Customizing an existing software package may be done, but is not easily accomplished by teachers. A set of age dependent tools is needed for drawing, composition, analysis, classification and sorting, calculations, and presentation. Open source Java applications or applets may be used for this purpose. In the Windows environment, templates (.dot) let you customize the Microsoft Office products by selection icons to use, but it retains the full menu bar. The instructor uses the grade specific dot file in word, providing instructions as a read only file. The student may enter their work there but it requires the student to rename it. Fundamental Learning Object to Implement a Speech-Narration Interface Children's use of technology has been limited by their lack of understanding of the metaphors that make up the basis of the keyboard, mouse, and the GUI interface. They have to be able to selectively focus, determine the use of the images such a menus, buttons, and icons, read the details, and perform this amongst the current clutter of information that does not pertain to the child. This may be easily done, if an interface Agent gets their attention, and then points out the things that they will need. Narration and conversation, as in classroom settings are effective, but the instructor is limited by the size of the classroom. Moreno's research [Moreno 2001] on the presence or absence of narration and animated interface agents demonstrate students have better retention and an higher level of transference of knowledge with the presence of narration and the animated interface. Therefore I consider the voice interface, with speech recognition and narration, one of the most important and effective means of providing educational instruction using technology to all persons lacking technological skills. The use of voice synthesizers and speech recognition is operating system and hardware dependent. Each of these needs to be specified within the learning object. Appendix B contains the Java Template for a Microsoft Agent running on Windows with True Voice and the MS speech recognition software. This is also an option that may not be desired, i.e. if instructors want the students to "read". In this case the option may be deactivated. The following list the functionality of the Speech-Narration FLO: Equipment check Microphone Volume check Speaker Volume check Loading of the Voice Synthesis software, and /or wave files Loading of the Voice Command software. Selection of an Interface Agent Loading or downloading the Interface Agent Providing instruction in use of the voice interface Play animations Read dialog Replay option for any spoken part Voice Command Construction An example of a FLO for the Microsoft Agent Peddy <FLO name ="UniqueID" type = "Pedagogical"> < to be added as developed> </FLO> Default XML Tags for the Metadata for the Fundamental Learning Object <FLO name ="UniqueID" type = "OneoftheTypes"> <metadata> <author>AuthorName</author> <createdate > <timedate>createdate</timedate> </createdate > <reference> <location type="URL"> http://www.GoodFreeStuff.org</location> </reference> <contactInfo>Author@local.edu</contactInfo> </metadata> <content> <topic></topic> <title></title> <description></description> <keywords></keywords> </content> </FLO> Format for an Informative Fundamental Learning Object <FLO name ="UniqueID" type = "informative"> <metadata> <author>AuthorName</author> <createdate > <timedate>createdate</timedate> </createdate > <!-- type options are Website, Original Work, Literature, --> <reference type="website"> <!-- type options are "URL", "text", "path/filename", "", --> <location type="URL"> "http://www.GoodFreeStuff.org" </location> <litref> </liref> </reference> <contactInfo>Author@local.edu</contactInfo> </metadata> <!-- type options are Introduction, Summary, Abstract, Definition, Quote --> <content type="Introduction" > <topic></topic> <title></title> <description></description> <keywords></keywords> <!-- type options are "URL", "text", "path/filename", "", --> <location type = "text"> This is the introduction to this informative fundamental learning object. </location> </content> </FLO> Format for an Illustrative Fundamental Learning Object <FLO name ="UniqueID" type = "illustrative"> <metadata> <author>Author/IllustratorName</author> <createdate > <timedate>createdate</timedate> </createdate > <reference> <location type="URL"> http://www.GoodFreeStuff.org</location> </reference> <contactInfo>Author/Illustrator@local.edu</contactInfo> </metadata> <!-- type options are Table, Illustration, Figure, Picture, Map, Image, Animation, Paragraph, Photograph --> <content type="Illustration" > <topic></topic> <title></title> <description></description> <keywords></keywords> <!-- type options are "URL", "text", "path/filename", "", --> <location type = "URL">http://www.locationoffreeImages.com</location> <points name="1st"> </points> <points name="2nd"> </points> <points name="3rd"> </points> </content> </FLO> Format for an Inquisitive Fundamental Learning Objects Format for a Cognitive Fundamental Learning Objects Format for an Interactive Fundamental Learning Objects Format for an Instructive Fundamental Learning Objects Format for a Collaborative Fundamental Learning Objects References Resources Reusability and Open Source reusability.org OpenContent.org XML processing Tutorial http://java.sun.com/xml/jaxp/dist/1.1/docs/tutorial/overview/1_xml.html Processing XML with SAX and DOM http://www.ibiblio.org/xml/slides/OReillyJava2001/xmlandjava/ DTD for XML bindings http://grouper.ieee.org/ltsc/gloforum/intro.htm http://xml.apache.org/cocoon/ http://www.xml.org/xml/resources_focus_sax.shtml http://www.xml.org/xml/resources_cover.shtml Learning Object Model www.multibook.de/lom/en/configEN.html Web Based Environments http://jakarta.apache.org/jetspeed/site/resources.html http://xml.apache.org http://java.apachee.org Appendix A: Details Title: Description: Version: Author: Organization: Download File: An example of ADL SCORM XML SCORM Conformant Content Online Course Pack Developed by: XanEdu, Contains single course meta-data file. SCORM 1.1 Jason Waack XanEdu XanEduInternetStrategySCORMV1_1.zip 14.79 k http://www.xanedu.com/ <?xml version="1.0"?> <!DOCTYPE RECORD SYSTEM "IMS-MD01.dtd" > <!--Based upon content_metadata.txt--> <record xmlns="http://www.imsproject.org/metadata/"> <metametadata> <metadatascheme> ADL SCORM 1.1 </metadatascheme> </metametadata> <general> <title> <langstring>Internet Strategy MiniPack</langstring> </title> <catalogentry> <!--Ficticious catalog--> <catalogue>XanEdu Sample SCORM Compliant MiniPacks</catalogue> <entry> <!--Using minipack title as unique ID--> <langstring>Internet Strategy MiniPack</langstring> </entry> </catalogentry> <language>en-US</language> <description> <!--Text from minipack introduction--> <langstring>In this MiniPack, the student has available a broad range of articles from both industry and business publications. The student can read how specific countries are addressing Internet strategy on a region-wide basis (e.g., Japan). Another area of strategy is more industry/company - specific (e.g., Ethan Allen Furniture, Kroger Grocery Stores). The articles also address general Internet strategy advice, such as the establishment of an e-commerce platform. </langstring> </description> <keywords> <langstring>Internet</langstring> <langstring>eBusiness</langstring> </keywords> <aggregationlevel> <!--collection of level1 resources, with an index page that links the pages together--> 2 </aggregationlevel> </general> <lifecycle> <version> <langstring>1.0</langstring> </version> <status> <!--The original minipack is adopted, this a copy modified to be SCORM compliant--> <langstring>Draft</langstring> </status> <contribute> <role> <langstring>Author</langstring> </role> <centity> <vcard> begin:vCard fn:Bernadette Szajna end:vCard </vcard> </centity> <date> <!--Ficticious author date--> <datetime>20001-01-01</datetime> <description>Adoption Date</description> </date> </contribute> <contribute> <role> <langstring>Technical Implementer</langstring> </role> <centity> <vcard> begin:vCard fn:Blair Reamy end:vCard </vcard> </centity> <date> <!--SCORM modifications by developer--> <datetime>20001-05-10</datetime> <description>SCORM Modifications</description> </date> </contribute> </lifecycle> <technical> <format> <langstring>html</langstring> </format> <location type="URI"> http://xanedu1.xanedu.com/packs/00009800/00009898/pack00009898.html </location> </technical> <educational> <interactivitytype> <langstring>Expositive</langstring> </interactivitytype> <learningcontext> <langstring>Higher Education</langstring> </learningcontext> <description> <langstring>Online CoursePack</langstring> </description> </educational> <rights> <cost> <langstring>yes</langstring> </cost> <copyrightandotherrestrictions> <langstring>yes</langstring> </copyrightandotherrestrictions> <description> <langstring>Content is copyrighted, pack author/institution has rights also</langstring> </description> </rights> <classification> <purpose> <langstring>Educational Objective</langstring> </purpose> <description> <langstring>Course supplementary material(Course Pack)</langstring> </description> <keywords> <langstring>Course Pack</langstring> </keywords> </classification> </record> Appendix B: An example of An Interface Agent in JavaScript- BellCraft Technologies {Rem} _/ MASH - JavaScript Template (Single Character) _/ Copyright 1998-2001, BellCraft Technologies {/Rem} <Object ID="AgentControl" Width=0 Height=0 ClassID="CLSID:D45FD31B-5C6E-11D1-9EC1-00C04FD7081F" CodeBase="#VERSION=2,0,0,0"> </Object> <Object ID="L&HTruVoice" Width=0 Height=0 ClassID="CLSID:B8F2846E-CE36-11D0-AC83-00C04FD97575" CodeBase="#VERSION=6,0,0,0"> </Object> {SpeechRec} <Object ID="MSSpeechRecognition" Width=0 Height=0 ClassID="CLSID:161FA781-A52C-11D0-8D7C-00A0C9034A7E" CodeBase="#VERSION=4,0,0,0"> </Object> {/SpeechRec} <Script Language="JavaScript"> <!--// // * Character Objects #DIM_CHAR_OBJS // * Variables var UsedChars; var %CharID%ID; var %CharID%ACS; {WebLoad} var %CharID%URL; var %CharID%States; var %CharID%Animations; var %CharID%Req; var %CharID%StatesReq; var %CharID%AnimationsReq; {/WebLoad} var %CharID%Loaded; var LoadReq; var HideReq; #DIM_CHAR_XY // * Initialize UsedChars = #USED_CHARS; #CHAR_INIT Window_OnLoad(); Template function Window_OnLoad() { // Purpose: Runs automatically when page is loaded // * INSERT ANY NON-AGENT RELATED SCRIPTING HERE AgentControl.Connected = true; %CharID%Loaded = LoadLocalAgent(%CharID%ID, %CharID%ACS); if (%CharID%Loaded) { SetCharObj(); } CheckLoadStatus(); } function LoadLocalAgent(CharID, CharACS) { // Purpose: Attempts to load the specified character // Returns: true if successful, false if not AgentControl.RaiseRequestErrors = false; LoadReq = AgentControl.Characters.Load(CharID, CharACS); AgentControl.RaiseRequestErrors = true; if (LoadReq.Status != 1) { return(true); } return(false); } function SetCharObj() { // Purpose: Sets the character reference and TTS Language ID #SET_CHAR_OBJ_CASE } function CheckLoadStatus() { // Purpose: Determines if required characters have been loaded. // If not, issue request to load next character // else run the AgentIntro routine if (!%CharID%Loaded) { {WebLoad} window.status = "Loading " + %CharID%ID + " Character. Please Wait..."; %CharID%Req = AgentControl.Characters.Load(%CharID%ID, %CharID%URL); return(false); {/WebLoad} {LocalOnly} LoadError(); return(false); {/LocalOnly} } window.status = ""; AgentIntro(); return(true); } function LoadError() { var strMsg; window.status = ""; strMsg = "Error Loading Character: " + %CharID%ID + "\n"; strMsg = strMsg + "This Microsoft Agent Script requires the character(s):\n"; strMsg = strMsg + UsedChars; alert(strMsg); } {ScreenPos} function GetScreenPositions() { var ScreenWidth = window.screen.width; var ScreenHeight = window.screen.height; if ((ScreenWidth == 0) || (ScreenHeight == 0)) { ScreenWidth = 800; ScreenHeight = 600; } #CHAR_SCREEN_POS } {/ScreenPos} {GetTimeOfDay} function GetTimeOfDay() { // Purpose: Returns current time of day var d = new Date(); var h = d.getHours(); if (h < 12) return("Morning"); else if (h < 17) return("Afternoon"); else return("Evening"); } {/GetTimeOfDay} {Commands} #SUB_INIT_COMMANDS {/Commands} function AgentIntro() { {ScreenPos} GetScreenPositions(); {/ScreenPos} {Commands} InitAgentCommands(); {/Commands} // *** BEGIN Microsoft Agent Script *** #USER_SCRIPT // *** END Microsoft Agent Script *** } //--> </Script> <Script Language="JavaScript" For="AgentControl" Event="RequestComplete(RequestObject)"> <!--// // Purpose: Take action on completion or failure of requests {WebLoad} { switch (RequestObject) { case %CharID%Req : if (RequestObject.Status == 0) { SetCharObj(); if (%CharID%States != "") { window.status = "Loading " + %CharID%ID + " States. Please Wait..."; %CharID%StatesReq = AgentControl.Characters(%CharID%ID).Get("State", %CharID%States, true); } else if (%CharID%Animations != "") { window.status = "Loading " + %CharID%ID + " Animations. Please Wait..."; %CharID%AnimationsReq = AgentControl.Characters(%CharID%ID).Get("Animation", %CharID%Animations, true); } else { %CharID%Loaded = true; CheckLoadStatus(); } } else { LoadError(); } break; case %CharID%StatesReq : if (RequestObject.Status == 0) { if (%CharID%Animations != "") { window.status = "Loading " + %CharID%ID + " Animations. Please Wait..."; %CharID%AnimationsReq = AgentControl.Characters(%CharID%ID).Get("Animation", %CharID%Animations, true); } else { %CharID%Loaded = true; CheckLoadStatus(); } } else { LoadError(); } break; case %CharID%AnimationsReq : if (RequestObject.Status == 0) { %CharID%Loaded = true; CheckLoadStatus(); } else { LoadError(); } break; case HideReq : AgentControl.Characters.Unload(%CharID%ID); break; } // end switch } else { // High Confidence // *** BEGIN MASH USER COMMANDS *** #COMMANDS_CASE // *** END MASH USER COMMANDS *** } {/Commands} //--> </Script> <Script Language="JavaScript" For="AgentControl" Event="Bookmark(BookmarkID)"> <!--// //--> </Script> <Script Language="JavaScript" For="AgentControl" Event="Click(CharacterID, Button, Shift, X, Y)"> <!-// Insert Click Event Code Here --> </Script> } {/WebLoad} <Script Language="JavaScript" For="AgentControl" //--> Event="DblClick(CharacterID, Button, Shift, X, Y)"> </Script> <!-<Script Language="JavaScript" For="AgentControl" // Purpose: Stop and Hide all characters on double-click Event="Command(UserInput)"> <!--// %CharID%.StopAll(); // Purpose: Determine Command that was selected either by menu if (!%CharID%.HasOtherClients) { or voice if (%CharID%.Visible) { // and run the applicable Command Script HideReq = %CharID%.Hide(); {Commands} } var BadConfidence; else { BadConfidence = 10; AgentControl.Characters.Character.Unload(%CharID%ID); } if (UserInput.Confidence <= -40) } { //_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_ // Bad Recognition /_/_/_/_/_/_/ } //-> else if ((UserInput.Alt1Name != "") && </Script> (Math.abs(Math.abs(UserInput.Alt1Confidence) Math.abs(UserInput.Confidence)) < BadConfidence)) { // Bad Confidence - too close to another command } else if ((UserInput.Alt2Name != "") && (Math.abs(Math.abs(UserInput.Alt1Confidence) Math.abs(UserInput.Confidence)) < BadConfidence)) { // Bad Confidence - too close to another command