Ir para conteúdo
Fórum Script Brasil
  • 0

Assistente


fatimamaria

Pergunta

Olá pessoal, sou nova na comunidade, entendo muito pouco de asp e gostaria da ajuda de vocês, bom não sei por onde começar e gostaria de uma luz, gostaria de saber como eu posso criar um assistente virtual utilizando asp e access

A idéia inicial é ter uma janela onde o usuário digita uma pergunta e o assistente emite uma resposta comparando no banco de dados a resposta.

Tem como fazer isso?

Obrigada,

Fátima

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Fatima... tem como sim... só que não existe nada concreto sobre o assunto pois ainda não foi desvendados todos os seus segredos... Isso é inteligencia artificial...

Se você quiser saber um poucos mais existem varios livros que tratam do assunto... mas vai ser a nivel de pesquisas pois como já falei esse mundo da A.I. ainda está distante... ou não...

Link para o comentário
Compartilhar em outros sites

  • 0

Olá pessoal, bom consegui pegar alguns exemplos e criei o código, agora gostaria da ajuda de vocês para definir melhor o resultado da resposta, eu explico.

Agora o sistema posui um adm para cadastrar pergunta e resposta.

Para o usuário terá um campo onde ele faz a pergunta e só será mostrada a resposta, mas eu gostaria que o resultado fosse dado não por busca de palavras chave e sim pela frase completa. Entenderam?

Tem como fazer isso?

abaixo segue os códigos:

Procura.asp

<%

Dim strURL     
             

Dim cnnSearch 
Dim rstSearch  
Dim strDBPath  

Dim strSQL    
Dim strSearch  
inicio = Timer

'#Função que tira todos os acentos das palavras
function TiraAcento(StrAcento)
 for i = 1 to len(StrAcento) 
  Letra = mid(StrAcento, i, 1)
  Select Case Letra
   Case "á","Á","à","À","ã","Ã","â","Â","â","ä","Ä"
   Letra = "A"
   Case "é","É","ê","Ê","Ë","ë","È","è"
   Letra = "E"
   Case "í","Í","ï","Ï","Ì","ì"
   Letra = "I"
   Case "ó","Ó","ô","Ô","õ","Õ","ö","Ö","ò","Ò"
   Letra = "O"
   Case "ú","Ú","Ù","ù","ú","û","ü","Ü","Û"
   Letra = "U"
   Case "ç","Ç"
   Letra = "C"
   Case "não"
   Letra = "N"
  End Select
  texto = texto & Letra
 next
 TiraAcento = texto
end function 


strURL = Request.ServerVariables("URL")

strSearch = Request.QueryString("search")

%><title>Assistente</title>
<p>&nbsp;</p>
<table width="69%" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#F2FFF2">
  <tr>
    <td><table width="100%" border="0" cellspacing="2" cellpadding="2">
<tr>
          <td bgcolor="#FFFFFF"><table width="44%" border="0" align="center" cellpadding="2" cellspacing="2">
<tr align="center"> 
                <td bgcolor="#99CCFF" width="35%"> <div align="center"><font color="#000099"><b>
    	<font color="#CCCCCC" face="Verdana, Arial, Helvetica, sans-serif" size="2"><a href="form_inclusao.asp">Incluir</a></font></b></font></div></td>
                <td bgcolor="#99CCFF" width="30%"> <div align="center"><font color="#669999"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><a href="form_exclui.asp" class="menu">Excluir</a></font></b></font></div></td>
                <td width="18%" bgcolor="#99CCFF"> <div align="center"><font color="#000099"><b><font color="#999999" size="2" face="Verdana, Arial, Helvetica, sans-serif">Pesquisar</font></b></font></div></td>
                <td bgcolor="#99CCFF" width="35%"> <div align="center"><font color="#000099"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#CCCCCC"><a href="escolhe_pra_auterar.asp" class="menu">Alterar</a></font></b></font></div></td>
              </tr>
            </table>
            <p align="center"><FONT color=royalblue face=Tahoma size=2><STRONG><font color="#000099"> 
              :: Assistente virtual::</font></STRONG></FONT></p>
            <form action="<%= strURL %>" method="get">
              <div align="center"> 
                <input name="search" value="<%= strSearch %>" />
                <input name="submit" type="submit" value="Pesquisar" />
              </div>
            </form>
            <p align="center"> 
              <%
If strSearch <> "" Then

	strDBPath = Server.MapPath("contato.mdb")

Const adUseClient = 3

	Set cnnSearch = Server.CreateObject("ADODB.Connection")

cnnSearch.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDBPath & ";"
cnnSearch.CursorLocation = adUseClient

strSQL = "SELECT pergunta, resposta " _
  & "FROM contato " _
  & "WHERE pergunta LIKE '%" & TiraAcento(Replace(strSearch, "'", "''")) & "%' " _
  '& "OR pergunta LIKE '%" & TiraAcento(Replace(strSearch, "'", "''")) & "%' " _
  '& "ORDER BY nome;"

	Set rstSearch = cnnSearch.Execute(strSQL)
intContador = rstSearch.RecordCount

	%>
            </p></td>
        </tr>
      </table>
      <p align="center"><br>
        <font size="1" face="Verdana, Arial, Helvetica, sans-serif">[ Foram encontradas&nbsp;<b><%=intContador%></b> 
        ocorrências ] </font> </p>
      <div align="center"> 
        <table width="500" border="0" cellpadding="4" cellspacing="1" bgcolor="#FFFFFF">
<tr> 
            <th width="300" bgcolor="#FF6600"><FONT color=royalblue face=Tahoma size=2><STRONG><font color="#FFFFFF">::Pergunta 
              ::</font></STRONG></FONT></th>
            <th width="300" bgcolor="#FF6600"><FONT color=royalblue face=Tahoma size=2><STRONG><font color="#FFFFFF">:: 
              Resposta::</font></STRONG></FONT></th>
          </tr>
          <%
	Do While Not rstSearch.EOF
  %>
          <tr> 
            <td bgcolor="#FFFFE6"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><%= rstSearch.Fields("pergunta").Value %></font></td>
            <td bgcolor="#FFFFE6">
              <div align="center"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><%= rstSearch.Fields("resposta").Value %></font></div></td>
          <%

  rstSearch.MoveNext
	Loop
	%>
        </table>
        <font size="1" face="Verdana, Arial, Helvetica, sans-serif"><br>
        &nbsp;Sua Pergunta foi processada em 
        <%response.write FormatNumber( Timer - inicio, 2 )%>
        segundos.</font><br>
        <%

	rstSearch.Close
	Set rstSearch = Nothing
	cnnSearch.Close
	Set cnnSearch = Nothing
End If

%>
      </div></td>
  </tr>
</table>
<p>&nbsp;</p>
Este insere os campos no BD Insert_intro.asp
<%
'Força a declaração de todas as variáveis
Option Explicit
'Não deixa informações no Cache
Response.Expires = 0
'Declaração das variáveis
Dim objConn, objRs, strQuery, strConnection, pergunta, resposta
'Atrubuição dos valores as respectivas variáveis
pergunta = Request.Form("pergunta")
resposta = Request.Form("resposta")
'Cria o objeto RecordSet e atribui a variável 
Set objConn =  Server.CreateObject("ADODB.Connection")
'Abre a conexão com o banco de dados utilizando o Drive {Microsoft Access...
'(para utilizar outro, ex: Paradox é só substituir o Drive pelo do Paradox)
'(*.mdb) indica que o arquivo utiliza extensão mdb
objConn.Open "DBQ=" & Server.MapPath("contato.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
'Insere os dados na tabela aberta
strQuery = "INSERT INTO contato (pergunta, resposta) VALUES ('"&pergunta&"','"&resposta&"')"
'Caso ocorra um erro esta função de erro será chamada
On error Resume Next
'Executa a inserção no Banco de Dados 
Set ObjRs = objConn.Execute(strQuery)
'Fecha o Objeto de Conexão
objConn.close
'"APAGA" qualquer instancia que possa ter no objeto objRs e objConn
Set objRs = Nothing
Set objConn = Nothing
'Caso a função On Error Resume Next não tenha sido chamada o objeto err será = a 0
if err = 0 Then
	'Redireciona o usuário caso não tenha ocorrido erro na transação
	response.redirect "sucesso.asp"
end if
%>

Mais uma vez obrigada

bjs

Fátima

Link para o comentário
Compartilhar em outros sites

  • 0

mas me diz uma coisa....

Se você vai registrar as perguntas e as respostas, para que o visitante vai ter que digitar a pergunta???

Qual a probabilidade o visitante digitar a pergunta completamente igual a que você registrou no BD?

EX:

você colocou no BD a pergunta:

Para que serve o mouse?

ai eu vou lá e digito:

Para que serve os mouses?

EU NÃO RECEBEREI A RESPOSTA ????

Link para o comentário
Compartilhar em outros sites

  • 0

Você não entendeu, eu é que vou digitar perguntas e respostas para minha orientação, o usuário vai digitar apenas as perguntas e o resultado para ele será a resposta

Quanto a probabilidade de digitar uma pergunta idêntica é fácil resolver, só que não consigo é fazer que a busca seja pela frase e não pela palavra...

Link para o comentário
Compartilhar em outros sites

  • 0

Então continuo sem entender o que você quer.

A busca por frase e identida a busca por palavra.

Quanto a probabilidade de digitar uma pergunta idêntica é fácil resolver

Como você resolveria isso?

Link para o comentário
Compartilhar em outros sites

  • 0

Amigo só uma ajuda para fazer com que a busca seja por uma frase, o sistema que eu postei busca palavras, por exemplo:

Se tiver mais de tres perguntas com a palavra "folha" o sistema vai inserir as três respostas referente a palavra folha que esta em três perguntas entende.

O que eu quero é se eu escrever na pergunta" folha de abril" e outra pergunta "folha de março" e o usuário digitar na pesquisa "folha de março" somente terá acesso a essa pergunta . As variaveis estarei colocando ou melhor digitando....

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Fátima,

Apesar de eu não ver nehuma conveniencia e coerencia no que você esta querendo fazer, vou tentar te ajudar:

1 - Faça um banco de dados com os seguintes campos (tabela: RESPOSTAS)

ID - Auto numerico

Respostas - Memorando

Perguntas - texto

2 - Página : Pergunta.asp

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<form name="form1" method="post" action="resposta.asp">
  <b><font size="2" face="Arial">Digite sua pergunta: 
  <input type="text" name="perguntas">
  <input type="submit" name="Submit" value="Enviar">
  </font></b> 
</form>
</body>
</html>
3 - Página : Resposta.asp
 <%


pergunta = Trim(Request.Form("perguntas"))
If Len(pergunta) < 1 Then
%>
                 <b> Você precisa digital uma pergunta!!</b>
 <%
Else


dim dsn
dim Conn
dsn="DBQ=" & Server.Mappath("database/SEUBANCO.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open dsn


sql = "SELECT resposta, perguntas FROM RESPOSTAS WHERE perguntas = '"&perguntas&"'"
Set RS = Conn.Execute(sql)

If RS.EOF Then
%>

<b> Não tem resposta para sua pergunta </b>

<% Else
perguntas = RS("perguntas")
respostas = RS("respostas")
%>
<b>Pergunta:</b>  <%=perguntas%> <br>
<b>Resposta:</b>  <%=resposta%> <br><br>

<%
RS.Close
Conn.Close
Set RS = Nothing
Set Conn = Nothing
End If
End If


%>

Bem, fiz meio de cabeça, mas como você só vai querer ter um resposta para uma pergunta.......

Vê se te ajuda.

Link para o comentário
Compartilhar em outros sites

  • 0

Então, o meu ta parecido, mas só busca palavra e não frase, fiz um teste com seu código mas não funcionou, fiz a conexão salvei a tabela e inseri perguntas e respostas mas ele não ta buscando....

o meu código para bbusca é assim:

              <%
If strSearch <> "" Then

	strDBPath = Server.MapPath("contato.mdb")

Const adUseClient = 3

	Set cnnSearch = Server.CreateObject("ADODB.Connection")

cnnSearch.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDBPath & ";"
cnnSearch.CursorLocation = adUseClient

strSQL = "SELECT pergunta, resposta " _
  & "FROM contato " _
  & "WHERE pergunta LIKE '%" & TiraAcento(Replace(strSearch, "'", "''")) & "%' " _
  '& "OR pergunta LIKE '%" & TiraAcento(Replace(strSearch, "'", "''")) & "%' " _
  '& "ORDER BY nome;"

	Set rstSearch = cnnSearch.Execute(strSQL)
intContador = rstSearch.RecordCount

	%>

ele busca palavras, queria que buscasse a frase, tem como adaptar?

Link para o comentário
Compartilhar em outros sites

  • 0

SELECT campo01,campo02 FROM tabela WHERE campo01 LIKE '%são as aguas de marco fechando o verao%'

Isso vai procurar a ocorrencia "são as aguas de marco fechando o verao" dentro do campo. Por exemplo não vai achar algo tipo

"são as aguas de abril fechando o verao".

O que você quer dizer com "procure a frase" ??

Seria a frase exata ??

Link para o comentário
Compartilhar em outros sites

  • 0

É assim:

Vou alimentar o bd de duas formas, perguntas e respostas destas perguntas.

Quando o usuário digitar uma pergunta, o sistema vai procurar a resposta para a questão. Mas, o sistema de busca que criei ai em cima procura palavras. Se eu tiver duas perguntas que contenha uma palavra idêntica é mostrado duas respostas. ex:

Pergunta: Qual é a cor da folha de lírio Resposta: Roxa

Pergunta: Qual é a cor da folha de rosa Resposta: vermelha

Se na busca o usuário digitar qual é a cor da folha, o sistema traz duas respostas diferentes ou se houver mais perguntas com qualquer palavra o sistema ta trazendo tudo, portanto ele busca somente palavra, eu queria uma busca pela frase, se não tiver a frase, o sistema não aponta resultado.

percebeu a dificuldade? Tem como resolver isso?

bjs

Link para o comentário
Compartilhar em outros sites

  • 0

Oi............. Eu fiz as correções e testei.. ta funcionando!!!!!!

Como tinha dito, o outro tinha feito na hora sem testar, mas acho interesante você entender o código:

A Tabela:

perguntas_respostas.mdb

Nome da tabela : TABELA

Campos:

ID = autonumeração

Perguntas = Texto

Respostas = texto

Pagina default.asp

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<form name="form1" method="post" action="respostas.asp">
  <b><font size="2" face="Arial">Digite sua pergunta: 
  <input type="text" name="perguntas">
 <input type="submit" name="Submit" value="Enviar">
 </font></b> 
</form>
</body>
</html>
Página Respostas.asp
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<%


pergunta = Trim(Request.Form("perguntas"))
If Len(pergunta) < 1 Then
%>
                <b> Você precisa digital uma pergunta!!</b>
<%
Else


dim dsn
dim Conn
dsn="DBQ=" & Server.Mappath("[B]perguntas_respostas.mdb[/B]") & ";Driver={Microsoft Access Driver (*.mdb)};"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open dsn


sql = "SELECT *FROM [B]Tabela[/B] WHERE [B]perguntas = '"&pergunta&"[/B]'"
Set RS = Conn.Execute(sql)

If RS.EOF Then
%>

<b> Não tem resposta para sua pergunta </b>

<% Else
perguntas = RS("perguntas")
respostas = RS("respostas")
%>
<b>Pergunta:</b>  <%=perguntas%> <br>
<b>Resposta:</b>  <%=respostas%> <br><br>

<%
RS.Close
Conn.Close
Set RS = Nothing
Set Conn = Nothing
End If
End If


%>


</body>
</html>

Bem,

o BD esta junto com as páginas ASP...

Você verá que se digitar qualquer palavra diferente do que esta cadastrado como pergunta no BD, não aparecerá nenhuma resposta...

perguntas = '"&pergunta&" ..... Isso faz uma busca que procura no campo Pergunta do BD por exatamente o que foi digitado no formulário...

Bem eu testei e funciona do jeito que você quer, no meu exemplo aqui eu cadastrei como perguntas:

- Quanto é 2 + 2

- Quanto é 2 + 5

quando eu digitei no form: Quanto é 2 + 3 ... ele não achou nenhuma resposta

Para você ter uma idéia, se eu digitar : Quanto é 2+5, ele não vai achar porque falta os espaços..... é por isso que eu não vejo coerencia no que você quer fazer e muito menos, ter total certeza que seu visitante vai fazer uma pergunta completamente igual a digitada por você.... Mas como você falou que isso é facil...

Boa sorte !!!

Douglas

Link para o comentário
Compartilhar em outros sites

  • 0

Oi douglasdamame,

Poxa era isso mesmo que eu estava querendo, parece meio sem sentido mas tenho uma justificativa, bom, esse sistema será utilizado para responder perguntas normalmente já formuladas em que os usuários costumam faze-las sempre, já tenho as perguntas (são mais ou menos 200).

Estou pensando em uma solução, nem sei se da pra fazer isso, exemplo, se o usuário digitar uma pergunta e não tiver no banco de dados, o sistema informa a ele que no momento não há resposta, e automaticamente envia a pergunta para o administrador via e-mail para que ele possa cadastrar. Será que da pra fazer isso?

bjos obrigada

Link para o comentário
Compartilhar em outros sites

  • 0

Oi douglasdamame,

Poxa era isso mesmo que eu estava querendo.

Só que tem uma coisa, fiz o teste de duas perguntas:

Pergunta: tem namorado? Resposta: Tenho

Pergunta: Tem namorados? Resposta: Não

Percebe, fiz duas perguntas meio que parecidas, o resultado foi que não havia resposta para pergunta.

Depois fiz o teste com o que escreveu:

- Quanto é 2 + 2

- Quanto é 2 + 5

o sistema também não achou resposta. Basicamente são diferentes mas o sistema não acha, tem como resolver?

bjs

Link para o comentário
Compartilhar em outros sites

  • 0

Bem,

Acho que você não esta sabendo configurar !!!

Pois as perguntas são diferentes, mesmo sendo o S no final do NAMORADOS.. eu testei e funciona...

Então, faz o download aqui:

http://www.rugbymagazine.com.br/perguntas_respostas.zip

E testa,,,,,,,,,

Sobre enviar para o seu e-mail, tem sim..... Tenta fazer e vai postando aqui !!!

Vou te dar uma dica:

No meu exemplo, eu pego o que esta escrito no campo "Perguntas" e coloca ela em uma variável com mesmo nome.... Então, é só você pegar esta variável e colocar para ser enviada por e-mail.... Não é difícil, mas não quero te passar, quero que você tente primeiro fazer.... Posta ai .... Outra dica, utiliza CDONTS que é mais fácil.... Você vai precisar de um Servidor ou configurar o CDONTS na sua máquina para fazer os testes...

Falou,

Doglas

Link para o comentário
Compartilhar em outros sites

  • 0

Oi,

Acho que to fazendo algo errado, mas eu consegui colocar o sistema e resgatar a variável, mas não ta chegando e-mail, consultei o servidor e ele me disseram que o componente tem, talvez meu código ta errado, veja:

<%

'Email para onde serão enviados os dados do formulário
email_form = "fatimamaria2006@bol.com.br"

'Título do email
assunto_form = "Assistente virtual"

'Servidor de email
servidor = "smtp.sementedinale.com.br"

'Componente para envio do email: CDONTS
componente = "CDONTS"

'Cabeçalho do texto do email recebido
cabecalho_email = "Pergunta não cadastrada no assistente"

'*******************************************************************
%>

<html>
<head>
<title>Assistente Virtual</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<%


pergunta = Trim(Request.Form("perguntas"))
If Len(pergunta) < 1 Then
%>
                <b> Você precisa digitar uma pergunta!!</b>
<%
Else


dim dsn
dim Conn
dsn="DBQ=" & Server.Mappath("perguntas_respostas.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open dsn


sql = "SELECT *FROM tabela WHERE perguntas = '"&pergunta&"'"
Set RS = Conn.Execute(sql)

If RS.EOF Then
%>

<b> Não tem resposta para sua pergunta </b>
<%

destino = request.form("fatimamaria2006@bol.com.br")
resposta = "Pergunta não encontrada: "& perguntas &" <BR>"
  
EnviaEmail servidor, componente, email_form, email_form, destino, assunto_form, resposta
Function EnviaEmail(Host,Componente,Email,NomeEmail,ParaEmail,Assunto,resposta)
Select Case Componente


Case "CDONTS"

on error resume next
Set eObjMail = Server.CreateObject("CDONTS.NewMail")
eObjMail.to = ParaEmail
eObjMail.from = NomeEmail & "<" & Email & ">"
eObjMail.subject = Assunto
eObjMail.Importance = 1
eObjMail.BodyFormat = 0
eObjMail.MailFormat = 0
eObjMail.body = resposta  
eObjMail.send
Set eObjMail = nothing
End Select
End Function
%>

<% Else
perguntas = RS("perguntas")
respostas = RS("respostas")
%>
<b>Pergunta:</b>  <%=perguntas%> <br>
<b>Resposta:</b>  <%=respostas%> <br><br>

<%
RS.Close
Conn.Close
Set RS = Nothing
Set Conn = Nothing
End If
End If


%>


</body>
</html>

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...