Skip Navigation Links



Translate this page now :



»Programação
»Programação.NET
»Banco de Dados
»Webdesign
»Office
» Certificações Microsoft 4
»Treinamentos4
»Programação 4
»Webdesign«
»Office & User Tips«
»Grupos de UsuĆ”rios
»CĆ©lulas AcadĆŖmicas«
intcontpiada : 118
Os 3 Porquinhos
Você já está cadastrado e participa do grupo de usuários de sua cidade ? Se não, comente o porque.
 
 
FaƧa um pequeno teste com 10 questƵes de VB
.:.
Teste seus conhecimentos em Visual Basic, SQL Server e ASP 3.0 com nossas provas on-line
.:.
Aprimore seus conhecimentos em programaĆ§Ć£o com nosso treinamento on-line de lĆ³gica de programaĆ§Ć£o
.:.
Veja nosso calendƔrio de treinamentos
Gostou da PƔgina?
Então

para um amigo!

Pesquisa personalizada
Pesquisar Dicas:

 






Quer saber mais?
Torne-se um MCP em Visual Basic
Faça um treinamento na Búfalo Informática


Microsoft Visual Basic
Este curso fornece aos alunos conceitos sobre o funcionamento de todo o ambiente Windows e como desenvolver soluƧƵes para o ambiente Windows. Com este curso o aluno serĆ” capaz de analisar um problema e decidir qual seria a melhor soluĆ§Ć£o de acordo com o ambiente do cliente.
Valor : R$ 246,00 ou 5 X de R$ 52,00

MS Agent 2.0 : Dando cara e gestos ao Falador


Poucos imaginam que por trás daquele inocente clips no Microsoft Ofice esconde-se um componente muito poderoso, que nos permite criar uma alta interatividade com o usuário em nossas aplicações, tanto em aplicações VB como em sites na Web.

O Microsoft Agent é uma tecnologia que nos permite criar personagens e utilizar suas animações na interface gráfica de nossas aplicações e se associa com mecanismos de fala e identificação de voz, possibilitando-nos a criação de uma interface muito rica.

O Microsoft Agente é um complemento ao que mostramos em nosso artigo "Faça sua aplicação em VB Falar" , pois utilizando o Microsoft Agent podemos fazer com que as frases ditas pela aplicação sejam atribuidas ao personagem do Agent.

Vamos montar uma aplicação em VB que utilize o Microsoft Agent para demonstrarmos os seus recursos.

Os personagens do Microsoft Agent são mantidos em arquivos com a extensão .ACS . O Agent cria um diretório windows\msagent para guardar seus arquivos e personagens.

A principio o Microsoft Agent vem com 4 personagens : Genie, Merlin, Robbie e Peedy , cujos arquivos podem ser baixados do endereço http://www.microsoft.com/msagent/characterdata.htm . Mas o Microsoft Agent possui um editor de personagens que permite que qualquer um crie um novo personagem para o Agent. Esse editor poder ser baixado do endereço http://www.microsoft.com/msagent/devdownloads.htm

Um problema que você já deve estar imaginando é : então o usuário precisará ter esses arquivos instalados na máquina ? Dependendo da aplicação sim. Mas a Microsoft mantém um servidor na web com os arquivos de personagens do Microsoft Agent, portanto também é possível fazer com que o personagem seja obtido de um site na web caso não esteja instalado. Neste caso os arquivos do personagem são diferentes. O arquivo .ACS, para uso local, possui todos os dados do personagem e suas animações. Para a otimização do acesso via Web, quando os arquivos estão em um servidor Web devem ser divididos em .ACA e .ACF , separando os dados de um personagem de suas animações.

O endereço em que a Microsoft mantém os arquivos dos personagens é http://agent.microsoft.com/agent2/chars/ . Cada personagem é mantido em um diretório com o próprio nome, por exemplo, o personagem genie é mantido em http://agent.microsoft.com/agent2/chars/genie/genie.acf .

Iniciemos a construção da aplicação e vamos ver como chamar estes personagens. O primeiro passo será, em project->components, adicionarmos o Microsoft Agent 2.0.

Para facilitarmos o acesso ao personagem, vamos definir no general uma variável para conter o personagem :

Dim Merlin as AgentObjectsCtl.IAgentCtlCharacterEx

No Load do form vamos carregar o personagem :

Sub form_load()

Agent1.Characters.Load "Merlin", "merlin.acs"

 

O 1o parâmetro é um nome que podemos criar, servirá para manipularmos o personagem durante a aplicação. O 2o é o arquivo contendo o personagem. Neste exemplo estou usando o arquivo merlin.acs que encontra-se no diretório default do agent (windows/msagent). Se estivesse em outro diretório, ou mesmo em um servidor web, isso deveria ser especificado junto ao nome do arquivo. Se, por outro lado, o nome do arquivo não for especificado, o Agent carregará o personagem default do usuário que encontra-se logado na máquina.

Após carregar o personagem, podemos atribui-lo a nossa variável, simplificando a manipulação do personagem :

Set Merlin=Agent1.Characters("Merlin")

Observe que entre as aspas foi usado o nome definido para o personagem na instrução Load. Agora que definimos a variável podemos utiliza-la na aplicação. Caso contrário teríamos sempre que fazer referência ao personagem dentro da coleção Characters.

Vamos fazer com que o merlin agradeça pelo usuário estar usando este sistema. Cada personagem do Agent possui uma série de ações que ele pode executar, tais ações são definidas pelo criador do personagem. No endereço http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msagent/hh/msagent/intro_9ywk.asp você encontra a documentação on-line do Microsoft Agent e, pesquisando na lista de tópicos do lado esquerdo da tela você encontrará a lista de animações para os personagens padrões do Microsoft Agent.

Para executarmos uma animação devemos utilizar o método "Play". Existem animações que fazem loop, outras não. As animações que fazem loop exigem que você chame o método "Stop" antes que qualquer outra ação seja solicitada ao Agent. As animações que não fazem loop não exigem isso. Assim sendo, faremos com que o Merlin fique com cara de agradecido. Antes porém devemos tomar o cuidado de exibi-lo, pois o Load apenas o carrega para a memória, não faz com que fiquei visível.

Merlin.Show
Merlin.Play "Pleased"

Neste momento você já pode executar a aplicação para ver como está ficando.

O Merlin precisa também falar uma frase de boas vindas para o usuário. Isso mesmo, falar. Através do método "Speak" podemos colcar uma frase em um pequeno balão sobre o Merlin e, se ativarmos os recursos sonoros, a frase será reproduzida na placa de som. Veja :

merlin.SoundEffectsOn = True
merlin.Speak "Bem vindo ao nosso sistema. Estarei a sua disposição sempre que precisar"

Se executar a aplicação neste momento você verá que a frase sairá ininteligível, com som americano. Isso por que não definimos a linguagem com que o nosso personagem estará falando. Veja agora :

merlin.LanguageID = &H416
merlin.SoundEffectsOn = True
merlin.Speak "Bem vindo ao nosso sistema. Estarei a sua disposição sempre que precisar"

Você pode obter os códigos de linguagem aceitos pelo Agent no endereço http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msagent/hh/msagent/intro_9ywk.asp

Com a linguagem definida para português é possível que você não ouça nada sendo dito. Isso ocorre se os drivers de linguagem para o português não estiverem instalados na sua máquina. Nesse caso você pode baixa-los de nossa página de downloads.

Para que a aplicação fiquei ainda mais interessante podemos tornar o formulário invisível (visible=false), fazendo com que apenas o Agent seja visível na tela.

O componente do Agent tem eventos, ou seja, podemos definir reações de nosso personagem ao que o usuário fizer com ele.

Vamos começar definindo o que o personagem fará quando o usuário não estiver fazendo nada. No caso do Merlin, que é velho, ele dormirá. O evento para isso é o IdleStart e a animação é Idle3_2. Veja como fica o código :

Private Sub Agent1_IdleStart(ByVal CharacterID As String)
merlin.Play "idle3_2"
End Sub

A animação idle3_2 é uma animação circular, portanto deveremos tomar o cuidado de usar o STOP quando formos realizar outras animações.

Outro evento interessante de programarmos é a movimentação do personagem, ou seja, quando o usuário o move de um canto a outro da tela. Vamos fazer com que o personagem reclame por estar sendo carregado. Neste exemplo podemos utilizar o evento Move (Quando a movimentação é completada) ou DragStart (quando a movimentação é iniciada). Vamos usar o DragStart :

Private Sub Agent1_DragStart(ByVal CharacterID As String, ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Integer, ByVal y As Integer)
merlin.Stop
merlin.Play "domagic1"
merlin.Speak "Me solta seu mal educado!"
merlin.Play "RestPose"
End Sub

 

Observe o stop no inicio do código : Ele irá parar a animação "Idle3_2" caso o Merlin estivesse em Idle (dormindo). Isso só ocorre porque utilizamos uma animação circular no idlestart.

Você poderá observar que o Merlin se posiciona automaticamente no systray. Clicando com o botão direito no Merlin o usuário pode esconde-lo, mas ele permanecerá no systray, podendo ser chamando a qualquer instante. E como o usuário fará para finalizar a aplicação ?

Para isso precisamos criar um novo item no menu popup do Merlin (o menu que aparece quando você clica com o botão direito). Todo personagem do Agent possui uma propriedade "Commands", que é uma coleção de objetos "Command", instruções às quais o personagem responde e que irão aparecer no menu popup do personagem.

Assim sendo, precisaremos criar um novo command para o Merlin. Veja :

merlin.Commands.Add "Sair", "Sair da Aplicação", "", True, True

Os parâmetros são, na ordem :

  • Nome identificador deste Command
  • Título do Command no menu popup
  • Palavras que irão disparar esse command, no caso de estarmos utilizando reconhecimento de voz
  • Se o command estará habilitado. É normal que ao criarmos um command sempre utilizemos true aqui.
  • Se o command irá aparecer no menu popup. Isso só será false se estivermos criando um command que apenas funcionará via reconhecimento de voz.

A instrução acima precisará ser adicionada no Form_Load, antes do show. Precisaremos também definir o que acontecerá quando o usuário escolher esta opção no menu popup. Para isso deveremos programar o evento Command. Veja :

Private Sub Agent1_Command(ByVal UserInput As Object)
If UserInput.Name = "Sair" Then
merlin.Stop
merlin.Play "Greet"
bsair = True
merlin.Speak "Volte sempre !"
End If
End Sub


A variável UserInput, recebida como parâmetro, é um objeto command. Verificando sua propriedade Name podemos descobrir qual command foi disparado e assim realizar a ação correta.

Observe que não podemos fazer um Unload neste momento, pois tanto o speak como o play de uma animação não circular são assíncronos, o que faria com que o unload fosse executado rápido demais não deixando a mensagem de despedida ser exibida. Para resolver o problema estamos atribuindo true na variável bSair (eis a utilidade dela, conforme prometi) e verificaremos se ela é true em outro evento. Qual evento ? BaloonHide. Veja :

Private Sub Agent1_BalloonHide(ByVal CharacterID As String)
If bsair Then
Unload Me
End If
End Sub

O evento balloonHide ocorre toda vez que pedimos ao agent para falar alguma coisa (no momento em que o balão é escondido) mas apenas uma vez a variável bSair estará como true.

Vamos agora criar um Data Environment na aplicação com uma conexão para uma tabela chamada "CadFunc" que contenha nome, cargo e salário. Vamos criar um Command parametrizado que nos permita pesquisar o nome de um funcionário. O Select no command ficará da seguinte forma :

Select * from cadfunc where nome = parnome

"parnome" é um parâmetro que estamos criando neste command para realizarmos a filtragem por nome.

Como não temos nenhuma referência ao Data Environment em lugar algum da aplicação, deveremos abrir a conexão e fecha-la nós mesmos. Assim sendo, no load do form deveremos colocar o seguinte comando :

De.connections(1).open

e no Unload :

De.connections(1).close

Vamos fazer com que o clique sobre o Merlin nos permita pesquisar por um funcionário. Para isso teremos que programar o evento click do Agent, mas precisamos ter certeza que o botão clicado foi o esquerdo. O evento click recebe vários parâmetros que nos permitem determinarmos isso :

Private Sub Agent1_Click(ByVal CharacterID As String, ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Integer, ByVal y As Integer)
Dim nome As String

If Button <> 1 Then
Exit Sub
End If

Observe a variável nome, que usuaremos para perguntar o nome do funcinário que o usuário deseja localizar. Este é o próximo passo :

merlin.stop
merlin.Play "StartListening"
merlin.Speak "Diga o nome do funcionário que deseja procurar"
nome = InputBox("Funcionário", "Procurar")
If nome = "" Then
merlin.Play "restpose"
merlin.Speak "Ok, deixaremos a procura para depois"
Exit Sub
End If

Se o nome for digitado em branco paramos o processamento. Observe que, para termos uma interface agradável, a todo momento fazemos com que o Merlin demonstre o que está ocorrendo com a aplicação.

O próximo passo é realizarmos a pesquisa. O command se transformou em um método do dataenvironment, método este que recebe como parâmetro exatamente os parâmetros que criamos na instrução SQL (no caso, parnome). Assim sendo devemo chamar este método para abrir o recordset, que por sua vez é uma propriedade do Data Environment com o mesmo nome do command, acrescida de RS na frente.

Se o recordset estiver no EOF após a abertura, o nome não existe. Caso contrário ele foi encontrado.

merlin.Play "Searching"
DE.cadfunc nome
If DE.rscadfunc.EOF Then
merlin.Stop
merlin.Play "Sad"
merlin.Speak "Infelizmente não encontrei o " & nome & " no cadastro. pode ter sido demitido"
DE.rscadfunc.Close
Exit Sub
End If

"Searching" é uma animação em loop. Observe portanto o Stop antes de dar continuidade ao trabalho com o Merlin.

Caso encontremos o registro vamos fazer com que o Merlin leia as informações do registro para nós. Veja :


merlin.Stop
merlin.Play "Read"
merlin.Speak "Encontrei o " & nome
merlin.Speak "O cargo dele é " & DE.rscadfunc.Fields("cargo").Value & " e ele ganha " & DE.rscadfunc.Fields("salario").Value & " reais "
DE.rscadfunc.Close

 

Por fim demos Close no recordset, deixando tudo pronto para uma nova busca. Ao executar observe que o Merlin fala corretamente o salário por extenso.

O código fonte da aplicação que criamos encontra-se disponível para download em nossa área de downloads

Dennes Torres
MCSD,MCSE,MCDBA

 





Envie seus comentįrios sobre este artigo

Nome :

E-mail :

Comentários :


Avise-me quando houverem novos comentįrios nesta pįgina

Veja abaixo os comentários já enviados :

Nome : Sérgio E-Mail : sergioportari@yahoo.com.br
Muito interessante este artigo, porém gostaria de mais detalhes sobre o carregamento deste agente de sistema em páginas na web, mais especificamente, com ASP, VBScript ou Javascript.

Obrigado
Nome : Pablo Cezimbra E-Mail : pcezimbra@predialnet.com.br
Muito interessante, sem dúvida! Não sou programador e possuo pouquíssima experiência nesta área de informática, porém já utilizo alguns recursos do MSAgent para apresentações em PowerPoint há algum tempo; os scripts do Narrator são semelhantes, embora bem mais simplificados, mas desconhecia o uso de códigos de linguagem (por isso jamais consegui fazer os personagens da Microsoft falarem em português). Gostaria de saber se há um modo de aplicar esses códigos também ao Narrator.
Nome : Jefferson E-Mail : jefferson.rocha@bep.com.br
Gostaria de saber pq numa maquina com o S.O é windows 2000 a minha aplicação, os agentes fazem gesticulações com a boca e falam no windows XP não fala, mas saem os sons.
Nome : marcio E-Mail : moicramsilva@hotmail.com
como baixar merlin,e genie.acs
outra pergunta
crei um explorer no meu programa como gero um evento para abrir as pasta,deleta,copy,excluir
Nome : André E-Mail : angaba@gmail.com
simplesmente excelente adorei o artigo, eu já tinha alguma carga sobre como utilizar o merlin mas aqui tem tudo que eu precisava, muito bom mesmo.
Nome : Moisés E-Mail : m.alc@bol.com.br
ficou muito legal
Nome : Diomar E-Mail : dio_moraes@ig.com.br
Muito interessante o artigo!!
Gostaria de saber como usar o msagent para ler texto do word, por exemplo, é possível??
Nome : Fernanda E-Mail : adnananda@gmail.com
Muito bom esse artigo! Mas gostaria de saber se tem como mudar a voz do personagem. Como faço isso?!
Obrigada.
Nome : fernanda E-Mail : fezinha_talento@hotmail.com
desenhos com o nome fernanda
Nome : geraldo leal E-Mail : geraleal@regsoft.com.br
Boa tarde, como fazer para colocar um perdonagem destes em uma página da web. ou seja quando a pessoa entrar no site aparece fazendo uma saudação, agradecendo etc.
agradeço a informação
Nome : E-Mail :
fun search test!
Nome : binha E-Mail : binhastrada@ig.com.br
olá,
gostaria de saber sobre estw msagent, nao entendo mto de inforematica, mas onde trabalho meu pc é em rede, e verifiquei q esta instalado este programa no meu pc:??gostaria sde saber se ele grava minhas conversas tbem,é como funciona este negocio de voz, etc???
sera q estão espeionando meu pc??
desde já agradeço sua ajuda
obrigada
Nome : binha E-Mail : binhastrada@ig.com.br
olá,
gostaria de saber sobre estw msagent, nao entendo mto de inforematica, mas onde trabalho meu pc é em rede, e verifiquei q esta instalado este programa no meu pc:??gostaria sde saber se ele grava minhas conversas tbem,é como funciona este negocio de voz, etc???
sera q estão espeionando meu pc??
desde já agradeço sua ajuda
obrigada
Nome : Aline E-Mail : alynehuber@gmail.com
Sou estudante do tecnico em informatica e gostaria de saber como executar o merlin em um programa do visual basic 6, sendo usado como informativo para auxiliar o usuario.

Desde ja agradeço sua atenção
Nome : susi E-Mail : susim.ferreira@yahoo.com.br
olá, gostaria de saber se o progama(msagent)esta no meu pc é pq alguem está especionando ele? ele pode gravar minhas conversas, espero resposta urgente.
obrigada
Nome : 1 E-Mail : 1
-1'
Nome : -1' E-Mail : 1
1
Nome : 1 E-Mail : -1'
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 1 E-Mail : 1
1
Nome : 9ZgfW3eX9o E-Mail : pvxqurol8zz@outlook.com
Hello, I would like to order 2-ROMWE 310 KR Star Shirts, in a large USA Me2#8&n17;s size. 1 White and 1 Black please. Can you tell me the price and how I may order?Thank You.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Conheça mais sobre o nosso site :

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::



Quer saber mais?
Faça um curso na Búfalo Informática, Treinamento e Consultoria e
Prepare-se para o Mercado!
Veja o que a Búfalo tem para você.

ļæ½ BĆŗfalo InformĆ”tica, Treinamento e Consultoria - Rua Ɓlvaro Alvim, 37 Sala 920 - CinelĆ¢ndia - Rio de Janeiro / RJ
Tel.: (21)2262-1368 (21) 9240-5134 (21) 9240-7281 e-Mail:
contato@bufaloinfo.com.br