Hola que tal! Necesito de su ayuda, resulta que estoy haciendo uso de Pyaiml para un chat inteligente, el problemas surge que quiero crear recoger y enviar parametros desde un cuadro de texto en php y enviarlos a python, el chiste es ejecutar el chatbot desde php y no accediendo a la consola de cmd, disculpen soy un poco inexperto en estos temas espero me puedan ayudar y aceptare sus sugerencias gracias.
Chat.php
Código:
<!DOCTYPE html>
<html>
<head>ChatBot</head>
<script>
function sf(ID)
{
document.getElementById(ID).focus();
}
</script>
<body onload="sf('name')">
<form name="prueba" action="chat.php" method="post" data-ajax="false">
<label form="name">Texto: </label>
<input type="text" name="name" id="name" autocomplete="off">
</form>
</body>
</html>
<?php
$param10 = $_POST["name"];
//$param1 = "viajar";
$command = "C:\Python27\python brain.py";
$command .= " $param10";
//$command .= " $param1";
header('Content-Type: text/html; charset=utf-8');
echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
echo "<style type='text/css'>
body{
background:#000;
color: #7FFF00;
font-family:'Lucida Console',sans-serif !important;
font-size: 12px;
}
</style>";
$pid = popen( $command,"r");
echo "</br>";
echo "<body><pre>";
while( !feof( $pid ) )
{
echo fread($pid, 256);
flush();
ob_flush();
echo "<script>window.scrollTo(0,99999);</script>";
usleep(100000);
}
pclose($pid);
echo "</pre><script>window.scrollTo(0,99999);</script>";
echo "<br /><br />Script finalizado<br /><br />";
?>
brain.py
Código:
import aiml
import sys
import time
print("The passed arguments are ", sys.argv)
print(sys.argv[1:50])
#print(sys.argv)
# Creamos el objeto kernel
kern = aiml.Kernel()
# Cuando cargamos un AIML, tenemos dos opciopnes: cargar los archivos
# originales AIML, o cargar un cerebro precompilado creado en una
# ejecucion previa. En caso de no exixtir ningun cerebro, forzamos la
# carga de los archivos AIML.
brainLoaded = False
forceReload = False
while not brainLoaded:
if forceReload or (len(sys.argv) >= 2 and sys.argv == "reload"):
# Usamos el metodo bootstrap() para inicializar el kernel.
# El archivo learnFiles es un argumento opcional sobre la lista de
# archivos a cargar.
kern.bootstrap(learnFiles="std-startup.xml", commands = "load aiml b")
brainLoaded = True
# Ahora que cargamos el cerebro, lo guardamos para acelerar las cosas
# en el futuro
kern.saveBrain("standard.brn")
pass
else:
# Esperamos a que cargue el cerebro archivado.
# Si falla regresamos al metodo de recarga
try:
# El argumento opcional brainFile especifica un cerebro a cargar
kern.bootstrap(brainFile = "standard.brn")
brainLoaded = True
pass
except:
forceReload = True
pass
print "\nModo interactivo (ctrl-c para salir!"
for valor in range(1):
print kern.respond(sys.argv[1])
pass