1<object classid="CLSID:D45FD31B-5C6E-11D1-9EC1-00C04FD7081F" codebase="MSagent2.exe#VERSION=2,0,0,0" height="0" id="AgentControl" width="0"></object>
1<script>
2// * Character Objects
3var Merlin;
4
5// * Merlin
6var MerlinID = "Merlin";
7var MerlinACS = "merlin.acs";
8var MerlinReq;
9var MerlinStatesReq;
10var MerlinAnimationsReq;
11var MerlinURL = "merlin.acf";
12var MerlinStates = "Showing, Hiding, Speaking, Moving";
13var MerlinAnimations = "Blink, Greet, Hide";
14var MerlinLoaded = false;
15var LoadReq;
16var HideReq;
17
18// * Initialize
19UsedChars = "Merlin";
20
21Window_OnLoad();
22
23function Window_OnLoad() {
24// Purpose: Runs automatically when page is loaded
25
26// * INSERT ANY NON-AGENT RELATED SCRIPTING HERE
27
28AgentControl.Connected = true;
29
30MerlinLoaded = LoadLocalAgent(MerlinID, MerlinACS);
31
32if (MerlinLoaded) {
33SetCharObj();
34}
35CheckLoadStatus();
36}
37
38function LoadLocalAgent(CharID, CharACS) {
39// Purpose: Attempts to load the specified character
40// Returns: true if successful, false if not
41
42AgentControl.RaiseRequestErrors = false;
43LoadReq = AgentControl.Characters.Load(CharID, CharACS);
44AgentControl.RaiseRequestErrors = true;
45
46if (LoadReq.Status != 1) {
47return(true);
48}
49return(false);
50}
51
52function SetCharObj() {
53// Purpose: Sets the character reference and TTS Language ID
54
55var lang = "0x409";
56if (navigator.appName == 'Netscape')
57var language = navigator.language;
58else
59var language = navigator.browserLanguage;
60if (language.indexOf('zh') > -1) lang = "0x804";
61Merlin = AgentControl.Characters.Character(MerlinID);
62eval("Merlin.LanguageID = "+lang);
63}
64
65function CheckLoadStatus() {
66// Purpose: Determines if required characters have been loaded.
67// If not, issue request to load next character
68// else run the AgentIntro routine
69
70if (!MerlinLoaded) {
71window.status = "正在载入NET-OA小精灵,请等待……";
72MerlinReq = AgentControl.Characters.Load(MerlinID, MerlinURL);
73return(false);
74}
75
76window.status = "";
77AgentIntro();
78return(true);
79}
80
81function LoadError() {
82var strMsg;
83window.status = "";
84strMsg = "载入小精灵失败\n";
85strMsg = strMsg + "您可能暂时无法使用小精灵\n";
86strMsg = strMsg;
87alert(strMsg);
88}
89
90function AgentIntro() {
91
92// *** BEGIN MASH USER SCRIPT ***
93
94Merlin.Show();
95Merlin.Balloon.FontName = "宋体";
96Merlin.Balloon.FontSize = 10;
97Merlin.Moveto(230,240);
98Merlin.Speak("您好!");
99Merlin.Play("Blink");
100Merlin.Speak("我是NET-OA小精灵。");
101Merlin.Play("Blink");
102Merlin.Speak("欢迎测试NET-OA自动化办公系统!");
103Merlin.Play("Blink");
104Merlin.Speak("程序设计者:江南行客");
105Merlin.Play("Blink");
106Merlin.Play("Blink");
107Merlin.Hide();
108Merlin.Show();
109Merlin.Speak("忘了告诉您,");
110Merlin.Play("Blink");
111Merlin.Speak("您可用以下方式联系他:");
112Merlin.Play("Blink");
113Merlin.Speak("QQ:2503086");
114Merlin.Play("Blink");
115Merlin.Speak("Email:[email protected]");
116Merlin.Play("Greet");
117Merlin.Speak("我要走了,Bye-bye!");
118Merlin.Moveto(600,70);
119Merlin.Speak("欢迎再来,I Love You.Bye-bye!");
120Merlin.Play("Blink");
121Merlin.Play("Blink");
122Merlin.Play("Blink");
123Merlin.Hide();
124
125// *** END MASH USER SCRIPT ***
126}
127</script>
1<script event="RequestComplete(RequestObject)" for="AgentControl" language="JavaScript">
2<!--//
3// Purpose: Take action on completion or failure of requests
4
5{
6switch (RequestObject) {
7case MerlinReq :
8if (RequestObject.Status == 0) {
9SetCharObj();
10
11if (MerlinStates != "") {
12window.status = "正在载入NET-OA小精灵,请等待……";
13MerlinStatesReq = AgentControl.Characters(MerlinID).Get("State", MerlinStates, true);
14}
15else if (MerlinAnimations != "") {
16window.status = "正在载入NET-OA小精灵,请等待……";
17MerlinAnimationsReq = AgentControl.Characters(MerlinID).Get("Animation", MerlinAnimations, true);
18}
19else {
20MerlinLoaded = true;
21CheckLoadStatus();
22}
23}
24else {
25LoadError();
26}
27break;
28case MerlinStatesReq :
29if (RequestObject.Status == 0) {
30if (MerlinAnimations != "") {
31window.status = "正在载入NET-OA小精灵,请等待……";
32MerlinAnimationsReq = AgentControl.Characters(MerlinID).Get("Animation", MerlinAnimations, true);
33}
34else {
35MerlinLoaded = true;
36CheckLoadStatus();
37}
38}
39else
40{
41LoadError();
42}
43break;
44case MerlinAnimationsReq :
45if (RequestObject.Status == 0)
46{
47MerlinLoaded = true;
48CheckLoadStatus();
49}
50else
51{
52LoadError();
53}
54break;
55case HideReq :
56AgentControl.Characters.Unload(MerlinID);
57break;
58} // end switch
59}
60//-->
61</script>
---------------------------------------------------------------
MS 的AGENG技术内容
- Microsoft Agent是微软公司于1997年9月发布的一项代理软件开发技术,而后被集成到Internet Explorer 4.0 Plus及更高版本中,目前版本为2.0,支持简体中文。作为一种软件代理工具,Agent以其强大的交互功能、鲜明的人性特点、优美的操作界面和简便统一的编程方法,对由菜单、按钮、提示框等组成的传统人机交互方式产生了很大影响,在多媒体创作、Web应用、教育软件、软件帮助系统和辅助工具制作等方面,具有广阔的应用前景。
一、 Microsoft Agent技术简介
---- Agent一词的中文意思是“代理”,故名思意,这类代理软件的主要作用是提供一种易于理解和使用的操作界面,接受用户的指令、代替用户完成某些复杂繁琐的工作、或为用户提供帮助。科学研究表明:从人机工程的角度考虑,赋予电脑或程序更多人性化色彩,如支持语音合成输出信息、语音识别输入指令、智能提示、动画等,能够充分提高人机交互的有效性和易用性。
---- 我们知道,在Office 97帮助系统中有一种叫作Office助手的代理软件,其中幽默风趣的动画人物,如“大眼夹”,能够根据用户的操作步骤“智能化”地提出一些建议或帮助信息。与Office助手相比,Agent功能更加丰富强大,表现在:
Office助手沿用传统的不透明矩形窗口,窗口后面的背景被完全挡住;Agent动画人物本身是一个“AlwaysOnTop”窗口,只有人物身体部分挡住背景,其余部分透明。
Office助手只允许Office 97的各个组件调用,Agent动画人物可由任何Windows程序调用;
Agent支持文字气球和输入提示条,在输出语音的同时把文字输出至一个卡通式文字气球中。如果电脑系统中安装有Agent语音识别引擎,当用户按住输入键,如Scroll Lock键,在Agent人物下方出现一个输入命令窗口,表示它正在“聆听”用户的语音命令。
Agent提供Genie、Merlin、Bobby和Peedy等动画人物,不仅具有优美诙谐的动作,而且可以通过声卡、麦克风与用户交谈。
二、 Microsoft Agent安装方法
---- Agent是一种ActiveX控件,其服务器程序(C:\WINDOWS\MSAGENT\Agentsvr.exe)运行在Win95/98/NT操作平台上,为其它调用Agent的客户程序提供服务。客户程序可以是利用VB、C++、Delphi、VFP、PB等开发的应用软件,也可以是HTML文件中的Visual Script、Java Script脚本语言代码。
安装Agent核心组件Msagent.exe。
安装Lernout & Hauspie TruVoice Text-to-Speech Engine(完成从文字合成语音的工作,目前版本只支持英语)Cgram.exe。
安装Microsoft Command and Control Speech Engine(提供语音识别功能,目前版本只支持英语)Actcnc.exe。
Agent动画人物人物数据文件。Agent支持单结构角色文件(.acs,角色数据与动画数据存于同一个文件),也支持分离结构角色文件(.acf,角色数据存于.acf中,动画数据存于.aca中)。基于本地硬盘和网络的应用程序可采用.acs文件,基于Web页面的HTML文件在浏览器中访问时会自动调用,习惯上多使用.acs文件。
---- 上述文件可从 http://www.microsoft.com//workshop/imedia/agent/default.asp下载。