Я использую 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>