Microsoft Agent. Часть I

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(«Фраза») Персонаж произносит Фразу.
Вот несколько анимаций для персонажа «Джин»:

MsAgent - персонаж Джинн

Пример: 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