ДИНАМИЧНЫЕ богатые ответы в диалоге - PullRequest
0 голосов
/ 23 октября 2018

Я создаю чат-бота с диалоговым потоком с php и json.В последнее время я борюсь в Интернете, пытаясь понять, как динамически изменять насыщенные ответы.Например, если пользователь заинтересован в ТОП-10, мне нужен расширенный ресоп с десятью элементами, вместо этого, если пользователю требуются топ-5, мне нужен ответ из 5 пунктов.Кто-нибудь из вас знает, как этого добиться?Большое спасибо

Индекс выглядит примерно так:

<?php


function prepareResponse($incoming)
    {
            $data = $incoming;
            header('Content-Type: application/json');
            $json_data = json_decode($data);
            echo json_encode($json_data);
    }



$method = $_SERVER['REQUEST_METHOD'];
//
// Process only when request method is POST
//
if($method == 'POST')
{
        $requestBody = file_get_contents('php://input');
        $json = json_decode($requestBody);
        $querytype = $json->originalDetectIntentRequest->payload->inputs[0]->rawInputs[0]->query;

        $countryname =$json->queryResult->parameters->{'geo-country'};
        $materialname =$json->queryResult->parameters->material;
        $topwhat=$json->queryResult->parameters->topnumber;
//topnumber stores the number of the top ten wanted by the user
        $intentname=$json->queryResult->intent->displayName;
        $touchoption=$json->queryResult->queryText; 
        $email =$json->queryResult->parameters->emailadress;
        //vardump($json);
        //print_r($json);


       $myfile = fopen("newfile.txt", "w+") or die("Unable to open file!");
        $txt = print_r($json,true);

        //$txt = $json->originalDetectIntentRequest->payload->inputs[0]->rawInputs[0]->query;
        fwrite($myfile, $txt);
        fclose($myfile);


        if (strcasecmp($querytype, "Top number of sold commodities") == 0)
          {
                $outgoing = include 'top.php';
                prepareResponse($outgoing);


          }
}













?>

Тогда файл top.php должен быть таким json-файлом, как этот

<?php

$db = new PDO('mysql:host=160.153.147.21;dbname=****', '****', '***');


$sqlplantshortname="Select SUBSTRING_INDEX(materialdescription, ' -', 1) as newcategory ,SUM(stock) AS 'STOCKS' from tempcommodityinventoryview where sapname like '$countryname' and wbselementsapname like '$countryname' and SUBSTRING_INDEX(materialdescription, ' -', 1) goup by'$materialname' order by 'STOCKS' limit '$topwhat' ";

$resultplantshortname= $db->prepare($sqlplantshortname);


$resultplantshortname->execute();
        $rowplantshortname = $resultplantshortname->fetch(PDO::FETCH_ASSOC);


$data = <<<DATA

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": " Top sold commodities of  $countryname is  $nameplantshortname bla bla"
            }
          }
        ]
      }
    }
  }
}
DATA;

return $data;

?>

Теперь вершина.PHP-файл - это простой ответ, хотя я хотел бы, чтобы он представлял собой богатый ответ типа list, чтобы показать либо 10, либо 5 самых продаваемых товаров

...