Chatbot no wordpress – Parte 2b
Neste fragmento criamos uma série de mudanças no plugin do wordpress para centralizar as operações do chatbot.
Git do projeto
https://github.com/marcelomaurin/chatbot-wordpress
Fiz esta modificação para facilitar a gestão dos itens.
Mudanças envolvidas
No plugin foram feitas diversas mudanças, entre elas. Criação de um menu de itens.
Temos um menu onde temos opções de Teste de funcionalidade do chatbot
E o histórico, que mostra as perguntas realizadas, com opção de exclusão de lixo.
O projeto agregou um web service, que permite comunicação com o banco de dados, conforme o projeto historico.php.
<?php
/*phpinfo();*/
/*Registra webservice para processamento de jobs*/
ini_set('display_errors', 'Off');
error_reporting(E_ALL);
include "connectdb.php";
$typereq = $_SERVER['REQUEST_METHOD'];
//echo $typereq;
if ($typereq==='POST')
{
//echo "POST";
// The request is using the POST method
$data = json_decode(file_get_contents("php://input"));
if($data){
$localguid = $dbhandle->real_escape_string($data->guid);
$idhistorico = $dbhandle->real_escape_string($data->idhistorico);
//echo var_dump(json_decode($foo, true));
} else {
$localguid = $dbhandle->real_escape_string($_POST['guid']);
$idhistorico = $dbhandle->real_escape_string($_POST['idhistorico']);
//echo "3";
}
//echo $localguid;
//echo $idhistorico;
}
if ($typereq === 'GET') {
//echo "GET";
// The request is using the POST method
$data = json_decode(file_get_contents("php://input"));
if($data){
$localguid = $dbhandle->real_escape_string($data->guid);
$idhistorico = $dbhandle->real_escape_string($data->idhistorico);
} else {
$localguid = $dbhandle->real_escape_string($_GET['guid']);
$idhistorico = $dbhandle->real_escape_string($_GET['idhistorico']);
}
}
if ($typereq === 'DELETE')
{
//echo $typereq;
$data = json_decode(file_get_contents("php://input"));
if($data){
$localguid = $dbhandle->real_escape_string($data->guid);
$idhistorico = $dbhandle->real_escape_string($data->idhistorico);
} else {
$localguid = $dbhandle->real_escape_string($_GET['guid']);
$idhistorico = $dbhandle->real_escape_string($_GET['idhistorico']);
}
//$localguid = $data->guid;
//$idhistorico = $data->idhistorico;
$query = "delete from historico where idhistorico = ".$idhistorico;
$dbhandle->query($query);
//echo ($query);
}
if($localguid!=GUID)
{
//echo $localguid;
//echo " - - ";
//echo GUID;
$strJSON = '{';
$strJSON = $strJSON . '"mensagem":"Acesso negado"';
$strJSON = $strJSON . '}';
echo $strJSON;
exit();
}
if (($typereq === 'GET')||($typereq === 'POST')){
if(($idhistorico)&&($idhistorico!='0'))
{
$query = "select idhistorico, pergunta from historico where (idhistorico = ".$idhistorico.");";
} else {
$query = "select idhistorico, pergunta from historico ;";
}
$rs = $dbhandle->query($query);
$cont = 0;
//echo $query;
$strJSON = '{"rs":[';
//while($row=$rs->fetch_assoc())
while($row=$rs->fetch_assoc())
{
if($cont!=0)
{
$strJSON = $strJSON . ',';
}
$strJSON = $strJSON . '{';
$strJSON = $strJSON . '"idhistorico":'.$row['idhistorico'].',';
$strJSON = $strJSON . '"pergunta":"'.$row['pergunta'].'"';
$strJSON = $strJSON . '}';
$cont ++;
}
$strJSON = $strJSON . ']}';
if ($cont>0)
{
echo($strJSON);
}
}
?>
No código acima, vemos que os verbos do HTML estão contemplados, apesar do sistema apenas usar o POST e DELETE.
O uso destes verbos será modelo para outros web services mais complexos.
Outra melhoria foi o uso de um GUID, que irá aumentar a segurança, restringindo o acesso ao web service, apenas a requisições com a chave correta.
Muitas mudanças ainda serão necessárias, porem estas garantem que nosso chatbot seja mais prático.
Muitas pessoas sabem que um chatbot não precisa deste tipo de melhoria, mas de fato, quando a intensão é o aprendizado, faze-lo de forma que fique mais fácil gerenciar as diversas ações de gestão do chatbot, ajudarão em um futuro próximo.
Há muito o que fazer, espero que acompanhem essa jornada.
Abraço.