Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/iboldurev/dialogflow
Unofficial php sdk for Dialogflow
https://github.com/iboldurev/dialogflow
ai api api-client apiai
Last synced: 4 days ago
JSON representation
Unofficial php sdk for Dialogflow
- Host: GitHub
- URL: https://github.com/iboldurev/dialogflow
- Owner: iboldurev
- License: mit
- Created: 2016-06-21T08:42:43.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2018-08-26T16:57:47.000Z (about 6 years ago)
- Last Synced: 2024-04-26T00:42:21.601Z (7 months ago)
- Topics: ai, api, api-client, apiai
- Language: PHP
- Homepage: https://dialogflow.com/
- Size: 34.2 KB
- Stars: 165
- Watchers: 12
- Forks: 63
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
DialogFlow PHP sdk
==============[![version][packagist-version]][packagist-url]
[![Downloads][packagist-downloads]][packagist-url][packagist-url]: https://packagist.org/packages/iboldurev/dialogflow
[packagist-version]: https://img.shields.io/packagist/v/iboldurev/dialogflow.svg?style=flat
[packagist-downloads]: https://img.shields.io/packagist/dm/iboldurev/dialogflow.svg?style=flatThis is an unofficial php sdk for [Dialogflow][1] and it's still in progress...
```
Dialogflow: Build brand-unique, natural language interactions for bots, applications and devices.
```## Install:
Via composer:
```
$ composer require iboldurev/dialogflow
```## Usage:
Using the low level `Client`:
```php
require_once __DIR__.'/vendor/autoload.php';use DialogFlow\Client;
try {
$client = new Client('access_token');$query = $client->get('query', [
'query' => 'Hello',
]);$response = json_decode((string) $query->getBody(), true);
} catch (\Exception $error) {
echo $error->getMessage();
}
```## Usage:
Using the low level `Query`:
```php
require_once __DIR__.'/vendor/autoload.php';use DialogFlow\Client;
use DialogFlow\Model\Query;
use DialogFlow\Method\QueryApi;try {
$client = new Client('access_token');
$queryApi = new QueryApi($client);$meaning = $queryApi->extractMeaning('Hello', [
'sessionId' => '1234567890',
'lang' => 'en',
]);
$response = new Query($meaning);
} catch (\Exception $error) {
echo $error->getMessage();
}
```## Usage
Using the low level asynchronous api:
```php
require_once __DIR__.'/vendor/autoload.php';use DialogFlow\Client;
use DialogFlow\Model\Query;
use DialogFlow\Method\QueryApi;
use GuzzleHttp\HandlerStack;
use React\EventLoop\Factory;
use WyriHaximus\React\GuzzlePsr7\HttpClientAdapter;$loop = Factory::create();
$reactGuzzle = new \GuzzleHttp\Client([
'base_uri' => Client::API_BASE_URI . Client::DEFAULT_API_ENDPOINT,
'timeout' => Client::DEFAULT_TIMEOUT,
'connect_timeout' => Client::DEFAULT_TIMEOUT,
'handler' => HandlerStack::create(new HttpClientAdapter($loop))
]);$client = new Client('bc0a6d712bba4b3c8063a9c7ff0fa4ea', new DialogFlow\HttpClient\GuzzleHttpClient($reactGuzzle));
$queryApi = new QueryApi($client);$queryApi->extractMeaningAsync('Hello', [
'sessionId' => '123456789',
'lang' => 'en'
])->then(
function ($meaning) {
$response = new Query($meaning);
},
function ($error) {
echo $error;
}
);$loop->run();
```## Dialog
The `Dialog` class provides an easy way to use the `query` api and execute automatically the chaining steps :
First, you need to create an `ActionMapping` class to customize the actions behavior.
```php
namespace Custom;class MyActionMapping extends ActionMapping
{
/**
* @inheritdoc
*/
public function action($sessionId, $action, $parameters, $contexts)
{
return call_user_func_array(array($this, $action), array($sessionId, $parameters, $contexts));
}/**
* @inheritdoc
*/
public function speech($sessionId, $speech, $contexts)
{
echo $speech;
}/**
* @inheritdoc
*/
public function error($sessionId, $error)
{
echo $error;
}
}```
And using it in the `Dialog` class.
```php
require_once __DIR__.'/vendor/autoload.php';use DialogFlow\Client;
use DialogFlow\Method\QueryApi;
use DialogFlow\Dialog;
use Custom\MyActionMapping;try {
$client = new Client('access_token');
$queryApi = new QueryApi($client);
$actionMapping = new MyActionMapping();
$dialog = new Dialog($queryApi, $actionMapping);// Start dialog ..
$dialog->create('1234567890', 'Привет', 'ru');} catch (\Exception $error) {
echo $error->getMessage();
}```
[1]: https://dialogflow.com