<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<Object ID="AgentControl" Width=0 Height=0
ClassID="CLSID:D45FD31B-5C6E-11D1-9EC1-00C04FD7081F"
CodeBase="#VERSION=2,0,0,0">
</Object>
<Script Language="VBScript">
<!--
' * Character Objects
Dim Merlin
' * Variables
Dim UsedChars
Dim MerlinID
Dim MerlinACS
Dim MerlinURL
Dim MerlinStates
Dim MerlinAnimations
Dim MerlinReq
Dim MerlinStatesReq
Dim MerlinAnimationsReq
Dim MerlinLoaded
Dim HideReq
Dim Req
' * Initialize
UsedChars = "Merlin"
' * Merlin
MerlinID = "Merlin"
MerlinACS = "merlin.acs"
MerlinURL = "http://agent.microsoft.com/agent2/chars/merlin/merlin.acf"
MerlinStates = "Showing, Hiding, Speaking, Moving, Gesturing, Idling"
MerlinAnimations = ""
MerlinLoaded = False
Function AgentInstalled()
' Purpose: Returns True if Agent 2.0 is installed, else False
On Error Resume Next
Dim AgentControl
If ScriptEngineMajorVersion < 2 Then
AgentInstalled = False
Else
Set AgentControl = CreateObject("Agent.Control.2")
AgentInstalled = IsObject(AgentControl)
End If
End Function
Sub Window_OnLoad()
' Purpose: Runs automatically when page is loaded
On Error Resume Next
' * INSERT ANY NON-AGENT RELATED SCRIPTING HERE
Call AgentMain
End Sub
Sub AgentMain()
On Error Resume Next
If Not AgentInstalled() Then
Exit Sub
End If
AgentControl.Connected = True
MerlinLoaded = LoadLocalAgent(MerlinID, MerlinACS)
If MerlinLoaded Then
Call SetCharObj
End If
Call CheckLoadStatus
End Sub
Function LoadLocalAgent(ByVal CharID, ByVal CharACS)
' Purpose: Attempts to load the specified character
' Returns: True if successful, False if not
On Error Resume Next
AgentControl.Characters.Load CharID, CharACS
If Err = 0 Then
LoadLocalAgent = True
Exit Function
End If
LoadLocalAgent = False
End Function
Sub SetCharObj()
' Purpose: Sets the character reference and TTS Language ID
On Error Resume Next
Set Merlin = AgentControl.Characters(MerlinID)
Merlin.LanguageID = &H409
End Sub
Sub CheckLoadStatus()
' Purpose: Determines if required characters have been loaded.
' If not, issue request to load next character
' else run the AgentIntro routine
If Not MerlinLoaded Then
If Instr(MerlinURL, "unknown.server.com") = 0 Then
Window.Status = "Loading " & MerlinID & " Character. Please Wait..."
Set MerlinReq = AgentControl.Characters.Load(MerlinID, MerlinURL)
Else
Call LoadError
Exit Sub
End If
Exit Sub
End If
Window.Status = ""
Call AgentIntro
End Sub
Sub AgentControl_RequestComplete(ByVal RequestObject)
' Purpose: Take action on completion or failure of requests
On Error Resume Next
Select Case RequestObject
Case MerlinReq
If RequestObject.Status = 0 Then
Call SetCharObj
If MerlinStates <> "" Then
Window.Status = "Loading " & MerlinID & " States. Please Wait..."
Set MerlinStatesReq = AgentControl.Characters(MerlinID).Get("State", MerlinStates, True)
ElseIf MerlinAnimations <> "" Then
Window.Status = "Loading " & MerlinID & " Animations. Please Wait..."
Set MerlinAnimationsReq = AgentControl.Characters(MerlinID).Get("Animation", MerlinAnimations, True)
Else
MerlinLoaded = True
Call CheckLoadStatus
End If
Else
Call LoadError
End If
Exit Sub
Case MerlinStatesReq
If RequestObject.Status = 0 Then
If MerlinAnimations <> "" Then
Window.Status = "Loading " & MerlinID & " Animations. Please Wait..."
Set MerlinAnimationsReq = AgentControl.Characters(MerlinID).Get("Animation", MerlinAnimations, True)
Else
MerlinLoaded = True
Call CheckLoadStatus
End If
Else
Call LoadError
End If
Exit Sub
Case MerlinAnimationsReq
If RequestObject.Status = 0 Then
MerlinLoaded = True
Call CheckLoadStatus
Else
Call LoadError
End If
Exit Sub
Case HideReq
AgentControl.Characters.Unload MerlinID
End Select
End Sub
Sub LoadError()
Dim strMsg
Window.Status = ""
strMsg = "Error Loading Character: " & MerlinID
strMsg = strMsg & Chr(13) & Chr(13) & "This Microsoft Agent Script requires the character(s):"
strMsg = strMsg & Chr(13) & UsedChars
MsgBox strMsg, 48
End Sub
Sub AgentControl_Click(ByVal CharacterID, ByVal Button, ByVal Shift, ByVal X, ByVal Y)
If Button = 1 Then
Merlin.Stop
Merlin.Play "Surprised"
End If
End Sub
Sub AgentControl_DblClick(ByVal CharacterID, ByVal Button, ByVal Shift, ByVal X, ByVal Y)
' Purpose: Stop and Hide all characters on double-click
On Error Resume Next
Merlin.StopAll
If Not MerlinID.HasOtherClients Then
If Merlin.Visible Then
Set HideReq = Merlin.Hide()
Else
AgentControl.Characters.Unload MerlinID
End If
End If
End Sub
Function GetTime()
' Purpose: Returns current time
On Error Resume Next
Dim sTime
sTime = Left(Time(), 5)
If Right(sTime, 1) = ":" Then
sTime = Left(sTime, Len(sTime) - 1)
End If
sTime = sTime & Mid(Time(), InStr(Time(), " "))
GetTime = sTime
End Function
Sub InitAgentCommands()
' Purpose: Initialize the Commands menu
On Error Resume Next
Merlin.Commands.RemoveAll
Merlin.Commands.Caption = "My Menu Name"
Merlin.Commands.Add "READPAGE", "Read Web Page", "Read [Web] Page"
Merlin.Commands.Add "READSELTEXT", "Read Selected Text", "Read (Selected Text|[Web Page] Selection)"
Merlin.Commands.Add "READCLIPBOARD", "Read Clipboard", "Read Clipboard"
Merlin.Commands.Add "SAYTIME", "What Time is It?", "[(What|Tell me the)] Time [is it] [please]"
Merlin.Commands.Add "MOVEBR", "Move to Bottom Right", "Move [to] (Bottom|Lower) Right"
Merlin.Commands.Add "STOPALL", "Stop", "Stop [All]"
Merlin.Commands.Add "ACO", "Advanced Character Options", "Advanced Character Options"
End Sub
Sub AgentControl_Command(ByVal UserInput)
On Error Resume Next
Dim BadConfidence
BadConfidence = 10
If (UserInput.Confidence <= -40) Then
' Bad Recognition
Exit Sub
ElseIf (UserInput.Alt1Name <> "") And Abs(Abs(UserInput.Alt1Confidence) - Abs(UserInput.Confidence)) < BadConfidence Then
' Bad Confidence - too close to another command
Exit Sub
ElseIf (UserInput.Alt2Name <> "") And Abs(Abs(UserInput.Alt2Confidence) - Abs(UserInput.Confidence)) < BadConfidence Then
' Bad Confidence - too close to another command
Exit Sub
Else ' High Confidence
' *** BEGIN MASH USER COMMANDS ***
Select Case UserInput.Name
Case "READPAGE"
Merlin.Play "Read"
Merlin.Speak document.body.innerText
Case "READSELTEXT"
Merlin.Play "Read"
Merlin.Speak document.selection.createrange.text
Case "READCLIPBOARD"
ReadClipboard "Merlin"
Case "SAYTIME"
Merlin.Speak "It is now " & GetTime() & "!"
Case "MOVEBR"
Merlin.MoveTo MerlinRightX, MerlinBottomY - 25
Case "STOPALL"
Merlin.StopAll
Case "ACO"
AgentControl.PropertySheet.Visible = True
End Select
' *** END MASH USER COMMANDS ***
End If
End Sub
Sub AgentControl_Bookmark(ByVal BookmarkID)
On Error Resume Next
End Sub
Sub AgentIntro()
On Error Resume Next
Call InitAgentCommands
' *** BEGIN MASH USER SCRIPT ***
Merlin.Show
Merlin.Balloon.Style = &H520000D
Merlin.Speak "mahdi - flash"
Merlin.Speak ",mahdi - flash"
End Sub
</Script>
<title>Page Title</title>
</head>
<body >
</html>