网页中调用MS代理

此博客主要使用JavaScript代码实现微软代理角色的交互功能。代码包含角色初始化、加载、状态和动画处理等。页面打开时自动运行程序,加载角色后可进行移动、显示、说话等操作,还对请求完成或失败进行处理,以及处理命令选择和点击事件。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>无标题 签名</TITLE>
<OBJECT id=AgentControl codeBase=#VERSION=2,0,0,0 height=0 width=0
classid=CLSID:D45FD31B-5C6E-11D1-9EC1-00C04FD7081F></OBJECT>
<OBJECT id=L&amp;HTruVoice codeBase=#VERSION=6,0,0,0 height=0 width=0
classid=CLSID:B8F2846E-CE36-11D0-AC83-00C04FD97575></OBJECT>
<SCRIPT language=JavaScript>
<!--//
// * Character Objects
var Merlin;

// * Variables
var UsedChars;
var MerlinID;
var MerlinACS;
var MerlinURL;
var MerlinStates;
var MerlinAnimations;
var MerlinReq;
var MerlinStatesReq;
var MerlinAnimationsReq;
var MerlinLoaded;
var LoadReq;
var HideReq;
var MerlinLeftX, MerlinCenterX, MerlinRightX;
var MerlinTopY, MerlinCenterY, MerlinBottomY;

// * Initialize
UsedChars = "Merlin";

// * Merlin
MerlinID = "Merlin";
MerlinACS = "merlin.acs";
//MerlinURL = "http://agent.microsoft.com/agent2/chars/merlin/merlin.acf";
MerlinURL="#"
MerlinStates = "Showing, Hiding, Speaking, Moving, Gesturing, Idling, Hearing, Listening";
MerlinAnimations = "GestureLeft, Surprised";
MerlinLoaded = false;


Window_OnLoad();

function Window_OnLoad() {

//目的:在页面打开时自动运行程序
// * INSERT ANY NON-AGENT RELATED SCRIPTING HERE

AgentControl.Connected = true;

MerlinLoaded = LoadLocalAgent(MerlinID, MerlinACS);

if (MerlinLoaded) {
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

Merlin = AgentControl.Characters.Character(MerlinID);
Merlin.LanguageID = 0x409 ;
}

function CheckLoadStatus() {
// Purpose: Determines if required characters have been loaded.
// If not, issue request to load next character
// else run the AgentIntro routine

if (!MerlinLoaded) {
window.status = "Loading " + MerlinID + " Character. Please Wait...";
MerlinReq = AgentControl.Characters.Load(MerlinID, MerlinURL);
return(false);
}

window.status = "";
AgentIntro();
return(true);
}

function LoadError() {
var strMsg;
window.status = "";
strMsg = "Error Loading Character: " + MerlinID + "/n";
strMsg = strMsg + "This Microsoft Agent Script requires the character(s):/n";
strMsg = strMsg + UsedChars;
alert(strMsg);
}
function GetScreenPositions() {
var ScreenWidth = window.screen.width;
var ScreenHeight = window.screen.height;

if ((ScreenWidth == 0) || (ScreenHeight == 0)) {
ScreenWidth = 800;
ScreenHeight = 600;
}

MerlinCenterX = (parseInt(ScreenWidth / 2) - parseInt(Merlin.Width / 2));
MerlinRightX = (ScreenWidth - Merlin.Width);
MerlinCenterY = (parseInt(ScreenHeight / 2) - parseInt(Merlin.Height / 2));
MerlinBottomY = (ScreenHeight - Merlin.Height);
}

function InitAgentCommands() {
// Purpose: Initialize the Commands menu

Merlin.Commands.RemoveAll();
Merlin.Commands.Caption = "My Menu Name";
Merlin.Commands.Add("ACO", "Advanced Character Options", "Advanced Character Options");
}

function AgentIntro() {
GetScreenPositions();
InitAgentCommands();


Merlin.MoveTo(MerlinLeftX, MerlinTopY);
Merlin.Show();
Merlin.Speak("Hello I'am greystar!");
Merlin.Think("What do you want to know?");
Merlin.Play("GestureLeft");
Merlin.Speak("Help yourself to read!");
Merlin.Play("Surprised");

Merlin.Hide();

}
//-->
</SCRIPT>

<SCRIPT language=JavaScript event=RequestComplete(RequestObject)
for=AgentControl>
<!--//
// Purpose: Take action on completion or failure of requests

{
switch (RequestObject) {
case MerlinReq :
if (RequestObject.Status == 0) {
SetCharObj();

if (MerlinStates != "") {
window.status = "Loading " + MerlinID + " States. Please Wait...";
MerlinStatesReq = AgentControl.Characters(MerlinID).Get("State", MerlinStates, true);
}
else if (MerlinAnimations != "") {
window.status = "Loading " + MerlinID + " Animations. Please Wait...";
MerlinAnimationsReq = AgentControl.Characters(MerlinID).Get("Animation", MerlinAnimations, true);
}
else {
MerlinLoaded = true;
CheckLoadStatus();
}
}
else {
LoadError();
}
break;
case MerlinStatesReq :
if (RequestObject.Status == 0) {
if (MerlinAnimations != "") {
window.status = "Loading " + MerlinID + " Animations. Please Wait...";
MerlinAnimationsReq = AgentControl.Characters(MerlinID).Get("Animation", MerlinAnimations, true);
}
else {
MerlinLoaded = true;
CheckLoadStatus();
}
}
else
{
LoadError();
}
break;
case MerlinAnimationsReq :
if (RequestObject.Status == 0)
{
MerlinLoaded = true;
CheckLoadStatus();
}
else
{
LoadError();
}
break;
case HideReq :
AgentControl.Characters.Unload(MerlinID);
break;
} // end switch
}
//-->
</SCRIPT>

<SCRIPT language=JavaScript event=Command(UserInput) for=AgentControl>
<!--//
// Purpose: Determine Command that was selected either by menu or voice
// and run the applicable Command Script
var BadConfidence;
BadConfidence = 10;

if (UserInput.Confidence <= -40)
{
// Bad Recognition
}
else if ((UserInput.Alt1Name != "") && (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
}
else
{
// High Confidence
switch(UserInput.Name) {
case "ACO" :
AgentControl.PropertySheet.Visible = true;
break;
}

}
//-->
</SCRIPT>

<SCRIPT language=JavaScript event=Bookmark(BookmarkID) for=AgentControl>
<!--//
//-->
</SCRIPT>

<SCRIPT language=JavaScript event="Click(CharacterID, Button, Shift, X, Y)"
for=AgentControl>
<!--
// Insert Click Event Code Here
-->
</SCRIPT>

<SCRIPT language=JavaScript event="DblClick(CharacterID, Button, Shift, X, Y)"
for=AgentControl>
<!--
// Purpose: Stop and Hide all characters on double-click

Merlin.StopAll();
if (!Merlin.HasOtherClients)
{
if (Merlin.Visible) {
AgentIntro()
//HideReq = Merlin.Hide();
}
else {

AgentControl.Characters.Character.Unload(MerlinID);
}
}
//-->
</SCRIPT>

<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="Microsoft FrontPage 6.0" name=GENERATOR></HEAD>
<BODY style="BACKGROUND-COLOR: #ffffff" bgColor=#ffffff >
</BODY></HTML>

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值