Я создаю помощника таблицы бронирования с диалоговым потоком, используя выполнение PHPhohok на моем сервере, которое создает ответ JSON.
Проблема в том, что я не понимаю, как переключать намерения в зависимости от ответа пользователя! Например, если пользователь спросит
книжный столик на двоих
перейдите к намерению. Время, чтобы спросить, в какое время ....
а затем перейти к намерению
спросить, в какой день пользователь хочет забронировать столик
и перейти к intent.last, когда все параметры не пусты!
Это мой webhook:
header( "Access-Control-Allow-Headers: *" );
header( "Access-Control-Allow-Origin: *" );
header( "Access-Control-Allow-Credentials: true" );
header( "Content-Type: application/json" );
$postdata = file_get_contents( "php://input" );
$input = json_decode( $postdata, true );
$intent = $input[ "queryResult" ][ "intent" ][ "name" ];
$intentD = $input[ "queryResult" ][ "intent" ][ "displayName" ];
$session = $input[ "session" ];
$response = $input[ "responseId" ];
$testo = $input[ "queryResult" ][ "queryText" ];
$giorno = $input[ "queryResult" ][ "parameters" ][ "giorno" ];
$guest = $input[ "queryResult" ][ "parameters" ][ "guest" ];
$ora = $input[ "queryResult" ][ "parameters" ][ "time" ];
if ($ora!=''){$ora = date("H:i:s", $ora);}else{$ora='';};
if ( $giorno == '' ) {
$risp = "Che giorno volete prenotare?";
}
if ( $guest == '' ) {
switch(true){
case ($guest >= '20') :
$risp = "Con le prenotazioni on-line potete prenotare per massimo 20 persone! Per prenotazioni più grandi potete chiamare dalle ore 18 al numero 06 333 87 68. Grazie";
case ($guest == '0') :
$risp = "Dovrai pur mangiare anche se da solo!";
default:
$risp = "Per quante persone volete prenotare?";
break;
}
};
if ( $time == '' ) {
$risp = "Per che ora volete prenotare?";
};
if ( $giorno != '' && $guest != '' && $ora != '' ) {
$risp = "La prenotazione è andata a buon fine!";
};
echo '{
"fulfillmentText":"' . $risp . '",
"fulfillmentMessages": [{
"text": {
"text":["' . $risp . '"]
}
}],
"source":"webhook",
"payload": {
"google": {
"expectUserResponse": true,
"richResponse": {"items": [{"simpleResponse": {"textToSpeech":"PLACEHOLDER"}}]},
"systemIntent": {
"intent":"actions.intent.TRANSACTION_REQUIREMENTS_CHECK",
"data": {
"@type":"type.googleapis.com/google.actions.v2.TransactionRequirementsCheckSpec",
"orderOptions": {"requestDeliveryAddress": false},
"paymentOptions": {
"actionProvidedOptions": {
"displayName":"VISA-1234",
"paymentType":"PAYMENT_CARD"
}
}
}
}
}
},
"outputContexts": [{
"name":"' . $session . '/contexts/restaurant_booking_create_dialog_context",
"lifespanCount": 1,
"parameters": {
"time":"' .$ora. '",
"guest": "' . $guest . '",
"giorno.original":"' . $giorno . '",
"giorno":"' . $giorno . '",
"guest.original":"' . $guest . '",
"time.original":"' .$ora. '"
}
}]
}';