Dialogflow PHP Webhook: запрос базы данных SQL и включение в чат-ответ - PullRequest
0 голосов
/ 30 июня 2018

Я использую Dialogflow с PHP Webhook в качестве чат-бота. Я хочу, чтобы json-ответ Dialogflow вызывал sql-запрос, например. когда я спрашиваю о конкретном событии, Dialogflow возвращает только переменную sql для даты и времени, с которой я хочу вызвать запрос, и заполнить определенным значением. Есть ли способ легко достичь этого? Я только читал о соединении через firebase с помощью клиента nodejs.

Мой webhook с форума api.ai:

{function processMessage($update) {
if($update["result"]["action"] == "sayHello"){
    sendMessage(array(
        "source" => $update["result"]["source"],
        "speech" => "Hello from webhook",
        "displayText" => "Hello from webhook",
        "contextOut" => array()
    ));
}
}

function sendMessage($parameters) {
echo json_encode($parameters);
}

$update_response = file_get_contents("php://input");
$update = json_decode($update_response, true);
if (isset($update["result"]["action"])) {
    processMessage($update);
}
}

process.php:

    <?php
try {
    if(isset($_POST['submit'])){
        $query = $_POST['message'];
        $sessionid = $_POST['sessionid'];
        $postData = array('query' => array($query), 'lang' => 'en', 'sessionId' => $sessionid);
        $jsonData = json_encode($postData);
        $v = date('Ymd');
        $ch = curl_init('https://api.api.ai/v1/query?v='.$v);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Authorization: Bearer x'));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $result = curl_exec($ch);
        echo $result;
        curl_close($ch);
    }
}
catch (Exception $e) {
    $speech = $e->getMessage();
    $fulfillment = new stdClass();
    $fulfillment->speech = $speech;
    $result = new stdClass();
    $result->fulfillment = $fulfillment;
    $response = new stdClass();
    $response->result = $result;
    echo json_encode($response);
}
?>

starter.php

    <?php

try {
    // create curl resource
    $ch = curl_init();
    // set url
    curl_setopt($ch, CURLOPT_URL, "https://api.api.ai/v1/query?v=20150910&e=WELCOME&lang=en&sessionId=" . $sessionID);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Authorization: Bearer x'));
    //return the transfer as a string
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    // $output contains the output string
    $output = curl_exec($ch);
    // close curl resource to free up system resources
    curl_close($ch);
}catch (Exception $e) {
    $speech = $e->getMessage();
    $fulfillment = new stdClass();
    $fulfillment->speech = $speech;
    $result = new stdClass();
    $result->fulfillment = $fulfillment;
    $response = new stdClass();
    $response->result = $result;
    echo json_encode($response);
}
?>

<div id="dom-target" style="display: none;">
    <?php

        echo htmlspecialchars($output); 
    ?>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...