Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fatimamaria

Assistente

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 palavrasfunction 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 "ñ"   Letra = "N"  End Select  texto = texto & Letra next TiraAcento = textoend function strURL = Request.ServerVariables("URL")strSearch = Request.QueryString("search")%><title>Assistente</title><p> </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 = adUseClientstrSQL = "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 <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>		 Sua Pergunta foi processada em 		<%response.write FormatNumber( Timer - inicio, 2 )%>		segundos.</font><br>		<%		rstSearch.Close	Set rstSearch = Nothing	cnnSearch.Close	Set cnnSearch = NothingEnd If%>	  </div></td>  </tr></table><p> </p>
Este insere os campos no BD

 

Insert_intro.asp

 

<%'Força a declaração de todas as variáveisOption Explicit'Não deixa informações no CacheResponse.Expires = 0'Declaração das variáveisDim objConn, objRs, strQuery, strConnection, pergunta, resposta'Atrubuição dos valores as respectivas variáveispergunta = 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 mdbobjConn.Open "DBQ=" & Server.MapPath("contato.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"'Insere os dados na tabela abertastrQuery = "INSERT INTO contato (pergunta, resposta) VALUES ('"&pergunta&"','"&resposta&"')"'Caso ocorra um erro esta função de erro será chamadaOn error Resume Next'Executa a inserção no Banco de Dados Set ObjRs = objConn.Execute(strQuery)'Fecha o Objeto de ConexãoobjConn.close'"APAGA" qualquer instancia que possa ter no objeto objRs e objConnSet objRs = NothingSet objConn = Nothing'Caso a função On Error Resume Next não tenha sido chamada o objeto err será = a 0if 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

Compartilhar este post


Link para o post
Compartilhar em outros sites

o meu código para busca é 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 = adUseClientstrSQL = "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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá FatimaMaria, bom percebi que ja resolveu a maior parte da sua questão. Entao vamos a busca por frases exatas !

 

<%

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 = TiraAcento(Replace(strSearch, "'", "''")) " _

& "ORDER BY nome;"

 

Set rstSearch = cnnSearch.Execute(strSQL)

intContador = rstSearch.RecordCount

 

%>

repare que o que mudou foi apenas LIKE '%" &, nas instruções SQL o LIKE significa CONTEM portanto no seu codigo você esta fazendo a verificação para ver se a busca contem alguma das palavras digitadas pelo usuario, e da forma que mostrei é se a busca é IGUAL = a frase digitada !

 

para entender melhor aconselho que faça uma busca aqui no forum sobre instruções sql.

 

espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, alguém pode me dar uma ajudinha aqui, só preciso arrumar essa parte do envio de e-mail quando o usuário digitar uma pergunta e não tiver resposta:

 

 

<%'Email para onde serão enviados os dados do formulárioemail_form = "fatimamaria2006@bol.com.br"'Título do emailassunto_form = "Assistente virtual"'Servidor de emailservidor = "smtp.sementesdinale.com.br"'Componente para envio do email: CDONTScomponente = "CDONTS"'Cabeçalho do texto do email recebidocabecalho_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><%Elsedim dsndim Conndsn="DBQ=" & Server.Mappath("perguntas_respostas.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"Set Conn = Server.CreateObject("ADODB.Connection")Conn.Open dsnsql = "SELECT *FROM tabela WHERE perguntas = '"&pergunta&"'"Set RS = Conn.Execute(sql)If RS.EOF Then%><b> Não tem resposta para sua pergunta </b><%Option ExplicitDim , var_mail, var_pergunta, var_to, EnviarMail, MsgBodyvar_mail = "fatimamaria2006@bol.com.br"var_to = "fatimamaria2006@bol.com.br"var_pergunta = Request.form("pergunta")Set EnviarMail = Server.CreateObject("CDONTS.NewMail")EnviarMail.To = var_toEnviarMail.From = var_mailEnviarMail.Subject = "Assitente virtual"MsgBody = var_perguntaEnviarMail.Body = MsgBodyEnviarMail.Importance = 1EnviarMail.BodyFormat = 0EnviarMail.MailFormat = 0EnviarMail.SendSet EnviarMail = NothingResponse.redirect "Obrigado.asp"%><% Elseperguntas = RS("perguntas")respostas = RS("respostas")%><b>Pergunta:</b>  <%=perguntas%> <br><b>Resposta:</b>  <%=respostas%> <br><br><%RS.CloseConn.CloseSet RS = NothingSet Conn = NothingEnd IfEnd If%></body></html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi lucasBR, obrigada por ter respondido, eu fiz assim:

 

formulario.asp

 

<html><head><title>Assistente Virtual</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><p><font face="Tahoma" size="2"><b> <br>  <br>  Perguntas Cadastradas no BD: </b></font></p><p> <font face="Tahoma" size="2">   <%dim dsndim Conndsn="DBQ=" & Server.Mappath("perguntas_respostas.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"Set Conn = Server.CreateObject("ADODB.Connection")Conn.Open dsnsql = "SELECT top 4 * FROM tabela order by ID "Set RS = Conn.Execute(sql)TotalRecs = rs.recordcountw = 0For w = 1 to 20	If rs.eof then   	Exit For	Else		perguntas = RS("perguntas")   %>  - <%=perguntas%> <br>  <%rs.MoveNextEnd IfNext%>  </font></p></body></html>
respostas.asp

 

<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><%Elsedim dsndim Conndsn="DBQ=" & Server.Mappath("perguntas_respostas.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"Set Conn = Server.CreateObject("ADODB.Connection")Conn.Open dsnsql = "SELECT *FROM tabela WHERE perguntas = '"&pergunta&"'"Set RS = Conn.Execute(sql)If RS.EOF ThenResponse.redirect "enviaemail.asp?pergunta=" & pergunta & "'"Elseperguntas = RS("perguntas")respostas = RS("respostas")%><b>Pergunta:</b>  <%=perguntas%> <br><b>Resposta:</b>  <%=respostas%> <br><br><%RS.CloseConn.CloseSet RS = NothingSet Conn = NothingEnd IfEnd If%></body></html>
enviaemail.asp

 

<%Option ExplicitDim var_pergunta, var_to, var_Mail, EnviarMail, MsgBodyvar_pergunta = Request.QueryString("pergunta")var_to = "fatimamaria2006@bol.com.br"var_Mail = "fatimamaria2006@bol.com.br"Set EnviarMail = Server.CreateObject("CDONTS.NewMail")EnviarMail.To = var_toEnviarMail.From = var_MailEnviarMail.Subject = "Assitente virtual"MsgBody = var_perguntaEnviarMail.Body = MsgBodyEnviarMail.Importance = 1EnviarMail.BodyFormat = 0EnviarMail.MailFormat = 0EnviarMail.SendSet EnviarMail = Nothing' Mostra Mensagem de Confirmação na TelaResponse.write "Não encontramos a resposta para sua pergunta, então encaminhamos para a administradora... !"' Redireciona após 5 segundosresponse.write "<br><br>Você será redirecionado em 3 segundos..<br>"response.write "<meta http-equiv='refresh' content='3; url=default.asp'/>"%>

 

Até ai, funciona direitinho, mas pintou uma dúvida, aliais uma solução, eu consigo ter a resposta do sistema para perguntas feitas exatamente como foi cadastrada, e se o usuário digitar uma pergunta diferente o sistema envia um e-mail.

 

Dai achei esse código:

 

function Fonetica(campo, valor)  fonetica = " (" &_	   " replace(replace(replace( "				&_	   " replace(replace(replace( "				&_	   " replace(replace(replace( "				&_	   " replace(replace(replace( "				&_	   " replace(replace(replace( "				&_	   " replace(replace(replace( "				&_	   " replace(replace( "						&_	 " translate(lower(  " & campo & " )," &_ 	 " 'ãáâàõôóêéxçzkcmyíúvw',"  &_ 	 " 'aaaaoooeesssssniiuuu')," &_	 " 'qu','s'  ),  'h',''	),  '''',''	), "	&_	 " 'zz','s'  ),  'll','l'  ),  'mm','m'  ), "	&_	 " 'tt','t'  ),  'rr','r'  ),  'ff','f'  ), "	&_	 " 'ii','i'  ),  'bb','b'  ),  'eia','ea' ), "	&_	 " 'nn','n'  ),  'ch', 's' ),  'gg','g'  ), "	&_	 " 'ou', 'u' ),  'st', 't' ),  'sh', 's'  ), "	&_	 " 'ss','s'  ),  'st', 't' ) "					&_   " LIKE " &_	   " replace(replace(replace( "				&_	   " replace(replace(replace( "				&_	   " replace(replace(replace( "				&_	   " replace(replace(replace( "				&_	   " replace(replace(replace( "				&_	   " replace(replace(replace( "				&_	   " replace(replace( "						&_	 "translate(lower(  '%" & valor & "%' )," &_ 	 "'ãáâàõôóêéxçzkcmyíúvw',"  &_ 	 "'aaaaoooeesssssniiuuu')," &_ 	 " 'qu','s'  ),  'h',''	),  '''',''	), "	&_	 " 'zz','s'  ),  'll','l'  ),  'mm','m'  ), "	&_	 " 'tt','t'  ),  'rr','r'  ),  'ff','f'  ), "	&_	 " 'ii','i'  ),  'bb','b'  ),  'eia','ea' ), "	&_	 " 'nn','n'  ),  'ch', 's' ),  'gg','g'  ), "	&_	 " 'ou', 'u' ),  'st', 't' ),  'sh', 's'  ), "	&_	 " 'ss','s'  ),  'st', 't' ) "					&_   " )"end function
Basicamente ele faz a verificação da digitação e valida, exemplo de uma pergunta assim: "Você esta bem?" e se o usuário digitar: "você esta bem?" ele entende e localiza o registro, o problema é que não to sabendo adaptar no que ja tenho pronto...

 

 

help-me please

 

bjos Fá

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.