Microsoft, несмотря на всю льющуюся на них критику, постоянно предоставляет разработчикам новые возможности. Несколько лет назад появилась очень интересная технология – Microsoft Agent. Где можно было наблюдать её применение? Например, в популярном переводчике Magic Gooddy. Основной «фишкой» данной программы является утёнок Gooddy, который свободно может говорить на русском и английском языках. Более того, этот утёнок может ещё и «понимать» некоторые голосовые команды, произнесённые в микрофон. У Gooddy, ко всему прочему, всё время меняется настроение: если долго не пользоваться его услугами, то он начинает грустить, а при переводе он выглядит самым счастливым утёнком в мире. Этот утёнок со всеми его возможностями является наглядным примером применения технологии MsAgent.
Вот таким вступлением я открыл небольшую серию статей, посвящённых Microsoft Agent. В первой части мы рассмотрим аспекты использования MsAgent в web-страницах. Представьте себе, сидите вы в интернете, открываете некую web-страничку, а тут из лампы вылазит Джин из мультфильма «Аладдин» и начинает что-нибудь вам рассказывать. А если вы вдруг наведёте курсор мыши на какую-нибудь гиперссылку, то Джин подлетит к ней и доходчиво объяснит, куда вы попадёте, нажав на ссылку… Здорово? Вот приблизительно такую страничку мы и сотворим в данной статье.
Теперь самое время установить MsAgent. Для этого нужно отправиться на страницу и скачать оттуда следующие файлы:
1) Сам Microsoft Agent – (395 кб), обязательно;
2) Перевод на русский язык различных диалогов, надписей и т.п. – (128 кб), необязательно;
3) один из персонажей (например, Джин из мультфильма «Аладдин») – (1.6 Mb), необязательно, можно работать и с другим персонажем;
4) компонент для произношения текстов (для русского языка) – (2.9 Mb), необязательно;
5) Поддержка SAPI (нужна для произношения текстов, в Win2000 должна быть установлена изначально) – (824 кб), необязательно.
После установки всех этих компонентов можно приступать к разработке приложений, использующих технологию MsAgent. Начнём мы, как уже было сказано, с web-страниц. Сразу замечу, что MsAgent накладывает некоторые ограничения на пользователя:
– MsAgent не будет работать ни в одном web-браузере, кроме Internet Explorer (разработчик ведь Microsoft). Версия IE должна быть не ниже, чем 3.02;
– у посетителя должно быть установлено необходимое программное обеспечение (его мы уже скачали).
Теперь сделаем маленькую пробную страничку. Откройте самый продвинутый HTML-редактор с названием Блокнот (некоторым он известен как NotePad). Запишите в нём следующие строки:
<html>
<head>
<title>Microsoft Agent</title>
<Object ID="Agent" Width=0 Height=0
ClassID="CLSID:D45FD31B-5C6E-11D1-9EC1-00C04FD7081F"
CodeBase="#VERSION=2,0,0,0">
</Object>
</head>
<body
onload="LoadAgent()"
onunload="UnLoadAgent()">
<html>
Теперь сохраните данный код в файл *.html и откройте полученную страничку при помощи Internet Explorer. После загрузки страницы из дыма появится Джин, поприветствует вас поклоном и произнесёт на русском языке приветственную фразу. Давайте посмотрим, как мы добились такого результата.
В тэге <object> мы подключили к нашей странице объект AGENT, который предоставит нам все возможности технологии MsAgent. После этого на языке JavaScript записали две функции – LoadAgent и UnLoadAgent. А затем в тэге указали, что эти функции должны вызываться при загрузке и закрытии страницы соответственно. После строчек
…
Agent.Characters.Load («Genie», «Genie.acs»);
Genie = Agent.Characters.Character(«Genie»);
…
мы можем «давать команды» Джину: Genie.Show; Genie.Play; Genie.Speak; и т.д. Давайте рассмотрим некоторые команды более подробно:
Команда Пояснения
Show Служит для появления персонажа на экране
Hide Скрывает персонажа
MoveTo(X, Y) Перемещает персонажа в точку с координатами (X; Y), координаты задаются в пикселях
Play(«Имя анимации»); Проигрывает заданную анимацию.
GestureAt(X, Y) Персонаж указывает рукой в точку с координатами (X; Y)
Think(«Мысль») Персонаж «думает Мысль», т.е. звука нет, но над персонажем появляется текст Мысли.
Speak(«Фраза») Персонаж произносит Фразу.
Вот несколько анимаций для персонажа «Джин»:
Пример: Genie.Play(«Write»);
MsAgent позволяет управлять даже голосом персонажа. Делается это при помощи специальных тэгов, которые нужно добавлять к произносимой фразе:
Тэг Значения и описание
\Chr=»значение»\ Изменяет голос персонажа:
«Normal» (по умолчанию) – нормальный голос
«Monotone» – монотонный голос
«Whisper» – шёпот
\Emp\ На следующем за тэгом слове делается ударение
\Map=»spokentext»=»balloontext»\
Персонаж вслух произносит строку «spokentext», а над ним отображается строка «balloontext». Т.е. персонаж как бы думает одно, а говорит совершенно другое.
\Pau=значение\
Делает паузу, которая длится «значение» миллисекунд
\Pit=значение\
Устанавливает частоту произношения в Герцах
\Rst\ Устанавливает все параметры в исходное состояние
\Spd=значение\ Устанавливает скорость произношения текста в «словах в минуту»
\Vol=значение\ Устанавливает громкость произношения текста (от 0 до 65535)
Пример для JavaScript: Genie.Speak(«\\chr=\»Whisper\»\\\\Pit=18400\\\\Spd=100\\Привет!»);
С помощью представленных команд можно создать довольно эффектную и интерактивную страничку. Про другие команды и свойства мы поговорим в следующей части, когда перейдём к Delphi, а пока рассмотрим несколько аспектов использования MsAgent в web-страничках. Предположим, вы поместили страничку в интернете. Тогда её могут просматривать три вида пользователей:
1) С браузером Internet Explorer и установленной MsAgent;
2) С браузером Internet Explorer без установленной MsAgent;
3) С другим браузером.
Именно эти три случая мы должны обрабатывать в нашей страничке. Сделать это не так и сложно. Вначале запишем функцию HaveAgent, которая будет определять, установлены ли компоненты MsAgent в системе:
Function HaveAgent()
Dim agent
HaveAgent = False
On Error Resume Next
Set agent = CreateObject(«Agent.Control.1»)
HaveAgent = IsObject(agent)
End Function
Теперь на основе этой функции можно написать шаблон странички, которая будет предусматривать все возможные варианты:
<SCRIPT LANGUAGE=VBSCRIPT>
If HaveAgent() Then
document.write "<H2 align=center>MsAgent найден</H2>"
Else
'Microsoft Agent control was not found.
document.write "<H2 align=center> MsAgent не найден</H2>"
End If
Function HaveAgent()
Dim agent
HaveAgent = False
On Error Resume Next
Set agent = CreateObject("Agent.Control.1")
HaveAgent = IsObject(agent)
End Function
</SCRIPT>
Вот и всё! По этому небольшому шаблону можно писать web-странички с использованием MsAgent, которые будут корректно отображаться во всех браузерах. Для примера я создал страничку, которую можно найти по адресу http://www.agentsample.narod.ru
На этом мы заканчиваем рассмотрение использования технологии Microsoft Agent в web-страничках. В следующей части мы перейдём к Delphi.
Иван Ширко
ishyrko@gmail.com