<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
tmdan / dialogflow-fulfillment-webhook-php example snippets
use Dialogflow\WebhookClient;
$agent = new WebhookClient(json_decode(file_get_contents('php://input'),true));
// or
$agent = WebhookClient::fromData($_POST);
$card = \Dialogflow\RichMessage\Card::create()
->title('This is title')
->text('this is text body')
->image('https://www.example.com/image.png')
->button('This is a button', 'https://docs.dialogflow.com/')
;
$agent->reply($card);
if ($agent->getRequestSource()=='google') {
$agent->reply(\Dialogflow\RichMessage\Payload::create([
'expectUserResponse' => false
]));
}
if ($agent->getRequestSource()=='google') {
$conv = $agent->getActionConversation();
// here you can use the rest of Actions on Google responses and helpers
$agent->reply($conv);
}
$conv = $agent->getActionConversation();
if ($conv) {
// here you can use the rest of Actions on Google responses and helpers
} else {
// the request does not come from Google Assistant
}
$conv->close('Have a nice day!');
$conv->ask('Hi, how can I help?');
use Dialogflow\Action\Responses\SimpleResponse;
$conv->ask(SimpleResponse::create()
->displayText('Hello, how can i help?')
->ssml('<speak>Hello,<break time="0.5s"/> <prosody rate="slow">how can i help?</prosody></speak>')
);
use Dialogflow\Action\Responses\Image;
$conv->close(Image::create('https://picsum.photos/400/300'));
use Dialogflow\Action\Responses\BasicCard;
$conv->close(BasicCard::create()
->title('This is a title')
->formattedText('This is a subtitle')
->image('https://picsum.photos/400/300')
->button('This is a button', 'https://docs.dialogflow.com/')
);
use Dialogflow\Action\Questions\ListCard;
use Dialogflow\Action\Questions\ListCard\Option;
$conv->ask('Please choose below');
$conv->ask(ListCard::create()
->title('This is a title')
->addOption(Option::create()
->key('OPTION_1')
->title('Option 1')
->synonyms(['option one','one'])
->description('Select option 1')
->image('https://picsum.photos/48/48')
)
->addOption(Option::create()
->key('OPTION_2')
->title('Option 2')
->synonyms(['option two','two'])
->description('Select option 2')
->image('https://picsum.photos/48/48')
)
);
if ('Get Option'==$agent->getIntent()) {
$conv = $agent->getActionConversation();
$option = $conv->getArguments()->get('OPTION');
switch ($option) {
case 'OPTION_1':
$conv->close('You choose option 1');
break;
case 'OPTION_2':
$conv->close('You choose option 2');
break;
default:
$conv->close('Sorry, i do not understand');
break;
}
}
if ('Get Option'==$agent->getIntent()) {
$conv = $agent->getActionConversation();
$option = $conv->getArguments()->get('OPTION');
switch ($option) {
case 'OPTION_1':
$conv->close('You choose option 1');
break;
case 'OPTION_2':
$conv->close('You choose option 2');
break;
case 'OPTION_3':
$conv->close('You choose option 3');
break;
case 'OPTION_4':
$conv->close('You choose option 4');
break;
default:
$conv->close('Sorry, i do not understand');
break;
}
}
use Dialogflow\Action\Responses\BrowseCarousel;
use Dialogflow\Action\Responses\BrowseCarousel\Option;
$conv->ask('Please choose below');
$conv->ask(
BrowseCarousel::create()
->imageDisplayOptions('CROPPED')
->addOption(
Option::create()
->title('Title of item 1')
->description('Description of item 1')
->footer('Item 1 footer')
->url('http://www.example.com')
->image('https://picsum.photos/300/300')
)
->addOption(
Option::create()
->title('Title of item 2')
->description('Description of item 2')
->footer('Item 2 footer')
->url('http://www.example.com')
->image('https://picsum.photos/300/300')
)
->addOption(
Option::create()
->title('Title of item 3')
->description('Description of item 3')
->footer('Item 3 footer')
->url('http://www.example.com')
->image('https://picsum.photos/300/300')
)
->addOption(
Option::create()
->title('Title of item 4')
->description('Description of item 4')
->footer('Item 4 footer')
->url('http://www.example.com')
->image('https://picsum.photos/300/300')
)
);
use Dialogflow\Action\Responses\LinkOutSuggestion;
use Dialogflow\Action\Responses\Suggestions;
$conv->ask('Please choose');
$conv->ask(new Suggestions(['Suggestion 1', 'Suggestion 2']));
$conv->ask(new Suggestions('Suggestion 3'));
$conv->ask(new LinkOutSuggestion('Website', 'http://www.example.com'));
use Dialogflow\Action\Responses\MediaObject;
use Dialogflow\Action\Responses\MediaResponse;
use Dialogflow\Action\Responses\Suggestions;
$conv->ask('Here you go');
$conv->ask(
new MediaResponse(
MediaObject::create('http://storage.googleapis.com/automotive-media/Jazz_In_Paris.mp3')
->name('Jazz in Paris')
->description('A funky Jazz tune')
->icon('http://storage.googleapis.com/automotive-media/album_art.jpg')
->image('http://storage.googleapis.com/automotive-media/album_art.jpg')
)
);
$conv->ask(new Suggestions(['Pause', 'Stop', 'Start over']));
use Dialogflow\Action\Questions\Permission;
$conv->ask(Permission::create('To address you by name and know your location', ['NAME', 'DEVICE_PRECISE_LOCATION']));
if ('Get Permission'==$agent->getIntent()) {
$conv = $agent->getActionConversation();
$approved = $conv->getArguments()->get('PERMISSION');
if ($approved) {
$name = $conv->getUser()->getName()->getDisplay();
$latlng = $conv->getDevice()->getLocation()->getCoordinates();
$lat = $latlng->getLatitude();
$lng = $latlng->getLongitude();
$conv->close('Got it, your name is ' . $name . ' and your coordinates are ' . $lat . ', ' . $lng);
} else {
$conv->close('Never mind then');
}
}
use Dialogflow\Action\Questions\DateTime;
$conv->ask(new DateTime('When do you want to come in?', 'What is the best date to schedule your appointment?', 'What time of day works best for you?'));
if ('Get Date Time'==$agent->getIntent()) {
$conv = $agent->getActionConversation();
$date = $conv->getArguments()->get('DATETIME');
if ($date) {
$conv->close('Ok, got it, i will see you at ' . $date->format('r'));
} else {
$conv->close('Never mind then');
}
}
use Dialogflow\Action\Questions\Place;
$conv->ask(new Place('Where do you want to have lunch?', 'To find lunch locations'));
if ('Get Place'==$agent->getIntent()) {
$conv = $agent->getActionConversation();
$place = $conv->getArguments()->get('PLACE');
if ($place) {
$conv->close('Ok, got it, we\'ll meet at ' . $place->getFormattedAddress());
} else {
$conv->close('Never mind then');
}
}
use Dialogflow\Action\Questions\Confirmation;
$conv->ask(new Confirmation('Can you confirm?'));
if ('Get Confirmation'==$agent->getIntent()) {
$conv = $agent->getActionConversation();
$confirmed = $conv->getArguments()->get('CONFIRMATION');
if ($confirmed) {
$conv->close('Ok, it is confirmed');
} else {
$conv->close('Alright then, it is canceled');
}
}
$surface = $conv->getSurface();
if ($surface->hasScreen()) {
// surface has screen
} elseif ($surface->hasAudio()) {
// surface has audio
} elseif ($surface->hasMediaPlayback()) {
// surface can play audio
} elseif ($surface->hasWebBrowser()) {
// user can interact with the content in a web browser
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.