用Agent+ASP技术制作语音聊天室
--------------------以下为程序内容,按文章中出现的顺序分块排序
<!--定义"AgentControl"-->
<OBJECT classid=clsid:D45FD31B-5C6E-11D1-9EC1-00C04FD7081F
codeBase=#VERSION=2,0,0,0 id=Agent>
</OBJECT>
<!--定义L&H TruVoice Text-To-Speech American English -->
<OBJECT classid=clsid:B8F2846E-CE36-11D0-AC83-00C04FD97575
codeBase=#VERSION=6,0,0,0 id=TruVoice width="14" height="14">
</OBJECT>
______________________________________________________________
尝试从微软Agent角色目录中装载
Set LoadRequestUNC = Agent.Characters.Load ("Peedy", "Peedy.acs")
If LoadRequestUNC.Status <> 0 Then
' 如果失败便尝试从微软服务器下载
Set LoadRequestURL = Agent.Characters.Load ("Peedy", "http://agent.microsoft.com/agent2/chars/peedy/peedy.acf")
Else
' 现在产生一个Peedy实例
Set Peedy = Agent.Characters("Peedy")
End If
_____________________________________________________________
<HTML>
<BODY>
<h3 align="center"><font color="#0000FF">Welcome to My Chatroom!</font></h3>
<FORM method="POST" action="default.asp">
<p align="center">Your name please:
<input type="text" name="txtUsername" size="20">
<input type="submit" value="OK" name="btnOK"></p>
</FORM>
<p align="center"><a href="download.htm">Click here to go to download page.</a></p>
</BODY>
</HTML>
_______________________________________________________________________
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Application_OnStart
Application("message")="" '发言内容
Application("expression")="" '表情
Application("sender")="" '发言者ID
Application("globalid")=0 '发言总序号
End Sub
</SCRIPT>
_______________________________________________________________________
<%
Session("username") = Server.HtmlEncode(Request.Form("txtUsername"))
Session("personalid")=0
%>
<HTML>
<HEAD>
<TITLE>Welcome to My Chatroom!</TITLE>
</HEAD>
<frameset border=0 frameSpacing=0 cols="98,*" frameBorder=0>
<frame name="agent" src="agent.asp">
<frameset rows="196,68,*">
<frame name="display" src="display.asp">
<frame name="refresh" src="refresh.asp">
<frame name="message" src="message.asp">
</frameset>
</frameset>
<frameset>
</frameset>
</HTML>
________________________________________________________________
<HTML>
<BODY BGCOLOR="#006699" TEXT="#FFFFFF">
<!--定义"AgentControl"-->
<OBJECT classid=clsid:D45FD31B-5C6E-11D1-9EC1-00C04FD7081F
codeBase=#VERSION=2,0,0,0 id=Agent>
</OBJECT>
<!--定义L&H TruVoice Text-To-Speech American English -->
<OBJECT classid=clsid:B8F2846E-CE36-11D0-AC83-00C04FD97575
codeBase=#VERSION=6,0,0,0 id=TruVoice width="14" height="14">
</OBJECT>
<SCRIPT language=VBScript>
Dim Peedy
Dim LoadRequestUNC
Dim LoadRequestURL
Dim GetShowAnimation
Sub Window_OnLoad
LoadCharacter
' 设置Agent的语言代号
Peedy.LanguageID = &H0409
' 让Peedy出现
Peedy.MoveTo window.event.screenX-100,window.event.screenY-100
Peedy.Show
' 好啦,Peedy可以开口说话了
Peedy.Speak "Welcome to my chatroom!"
Peedy.Play "Greet"
End Sub
Sub Agent_RequestComplete(ByVal Request)
' 如果是从微软服务器装载ACF角色的请求结束
If Request = LoadRequestURL Then
' 如果申请下载失败
If Request.Status = 1 Then
Msgbox "无法从服务器下载Peedy,可能服务器太忙。"
Exit Sub
' 如果成功
ElseIf Request.Status = 0 Then
' 产生一个实例
Set Peedy = Agent.Characters("Peedy")
' 预取Peedy的部分动画效果
Set GetShowAnimation = Peedy.Get ("state", "showing, speaking")
Peedy.Get "animation", "Blink, Greet, Pleased, Explain, Think, GestureRight,Idle1_1,Idle2_2, Announce, Uncertain", False
End If
' 如果是请求预取动画效果的请求结束
ElseIf Request = GetShowAnimation Then
' 如果失败
If Request.Status = 1 Then
Msgbox "下载动画的请求失败,可能服务器太忙。"
Exit Sub
End If
End If
End Sub
' 装载Agent角色
Sub LoadCharacter
On Error Resume Next
' 尝试从微软Agent角色目录中装载
Set LoadRequestUNC = Agent.Characters.Load ("Peedy", "Peedy.acs")
If LoadRequestUNC.Status <> 0 Then
' 如果失败便尝试从微软服务器下载
Set LoadRequestURL = Agent.Characters.Load ("Peedy", "http://agent.microsoft.com/agent2/chars/peedy/peedy.acf")
Else
' 产生一个Peedy实例
Set Peedy = Agent.Characters("Peedy")
End If
End Sub
</SCRIPT>
</BODY>
</HTML>
________________________________________________________________
<HTML>
<HEAD>
<META HTTP-EQUIV="REFRESH" CONTENT=3 URL="refresh.asp">
</HEAD>
<BODY>
<SCRIPT language=VBScript>
Sub Window_OnLoad
<%
If Session("personalid") < Application("globalid") Then
%>
self.parent.display.document.write("<table width=100% border=0 cellPadding=0 cellSpacing=0><font color=#0000FF>"+"<%=Application("sender")%>"+"</font>: "+"<%=Application("message")%>"+"</table>")
self.parent.display.scroll 0, 20000000
self.parent.agent.Peedy.Speak "<%=Application("message")%>"
self.parent.agent.Peedy.Play "<%=Application("expression")%>"
<%
Session("personalid") = Application("globalid")
End If
%>
End Sub
</SCRIPT>
</BODY>
</HTML>
____________________________________________________________________
<%
Application.Lock
If Request.Form("txtMessage") <> "" Then
Application("message") = Server.HtmlEncode(Request.Form("txtMessage"))
Application("sender") = Session("username")
Application("expression") = Request.Form("rdoExpression")
Application("globalid") = Application("globalid") + 1
End If
Application.UnLock
%>
<HTML>
<HEAD>
<STYLE type=text/css>
.smalltext {font-size: 9pt}
</STYLE></HEAD>
<BODY BGCOLOR="#006699" TEXT="#FFFFFF" onload="document.frmMessage.txtMessage.focus();">
<FORM METHOD="POST" ACTION="message.asp" name=frmMessage>
<p class="smalltext">
You are welcome,<%=Session("username")%>
</p>
<p class="smalltext">
Choose an expression:<br>
<input type="radio" value="Idle1_1" checked name="rdoExpression">Normal
<input type="radio" value="Explain" name="rdoExpression">Explain
<input type="radio" value="Greet" name="rdoExpression">Greet
<input type="radio" value="Congratulate" name="rdoExpression">Congratulate
<input type="radio" value="Decline" name="rdoExpression">Decline
<input type="radio" value="Pleased" name="rdoExpression">Pleased
<input type="radio" value="Think" name="rdoExpression">Think
<input type="radio" value="Announce" name="rdoExpression">Announce
<input type="radio" value="Uncertain" name="rdoExpression">Uncertain
<input type="radio" value="GestureRight" name="rdoExpression">Gesture Right
<input type="radio" value="DontRecognize" name="rdoExpression">Don't Recognize
<input type="radio" value="GetAttention" name="rdoExpression">Get Attention
<input type="radio" value="DoMagic2" name="rdoExpression">Do Magic
</p>
<p class="smalltext">
Message:<input name="txtMessage" type="TEXT" size=66>
<input type="submit" name="Submit" value="Submit">
</p>
</FORM>
</BODY>
</HTML>