Working on speech rec

This commit is contained in:
Hillel Coren 2017-04-04 17:51:01 +03:00
parent fcbc9bd885
commit 5128ca45a7
23 changed files with 337 additions and 14 deletions

View File

@ -100,9 +100,7 @@ class BotController extends Controller
public function handleCommand()
{
$data = $this->parseMessage(request()->command);
//dd($data);
$intent = BaseIntent::createIntent(BOT_PLATFORM_WEB_APP, false, $data);
return $intent->process();
}

View File

@ -43,7 +43,7 @@ class BaseIntent
foreach ($data->entities as $entity) {
if ($entity->type === 'EntityType') {
$entityType = $entity->entity;
$entityType = rtrim($entity->entity, 's');
break;
}
}
@ -53,6 +53,9 @@ class BaseIntent
}
$entityType = ucwords(strtolower($entityType));
if ($entityType == 'Recurring') {
$entityType = 'RecurringInvoice';
}
$intent = str_replace('Entity', $entityType, $intent);
if ($platform == BOT_PLATFORM_WEB_APP) {
@ -64,7 +67,7 @@ class BaseIntent
//echo "Intent: $intent<p>";
if (! class_exists($className)) {
throw new Exception(trans('texts.intent_not_supported'));
throw new Exception($intent . ': ' . trans('texts.intent_not_supported'));
}
return new $className($state, $data);
@ -183,6 +186,22 @@ class BaseIntent
return $data;
}
protected function requestFieldsAsString($fields)
{
$str = '';
foreach ($this->requestFields() as $field => $value) {
if (in_array($field, $fields)) {
$str .= $field . '=' . urlencode($value) . '&';
}
}
$str = rtrim($str, '?');
$str = rtrim($str, '&');
return $str;
}
protected function processField($field)
{
$field = str_replace(' ', '_', $field);

View File

@ -0,0 +1,18 @@
<?php
namespace App\Ninja\Intents\WebApp;
use App\Ninja\Intents\BaseIntent;
class CreateClientIntent extends BaseIntent
{
public function process()
{
$url = '/clients/create';
//$url = '/invoices/create/' . $clientPublicId . '?';
//$url .= $this->requestFieldsAsString(Invoice::$requestFields);
return redirect($url);
}
}

View File

@ -0,0 +1,21 @@
<?php
namespace App\Ninja\Intents\WebApp;
use App\Ninja\Intents\BaseIntent;
class CreateCreditIntent extends BaseIntent
{
public function process()
{
$client = $this->requestClient();
$clientPublicId = $client ? $client->public_id : null;
//$invoiceItems = $this->requestInvoiceItems();
$url = '/credits/create/' . $clientPublicId . '?';
//$url .= $this->requestFieldsAsString(Invoice::$requestFields);
return redirect($url);
}
}

View File

@ -0,0 +1,18 @@
<?php
namespace App\Ninja\Intents\WebApp;
use App\Ninja\Intents\BaseIntent;
class CreateExpenseIntent extends BaseIntent
{
public function process()
{
$url = '/expenses/create';
//$url = '/invoices/create/' . $clientPublicId . '?';
//$url .= $this->requestFieldsAsString(Invoice::$requestFields);
return redirect($url);
}
}

View File

@ -17,15 +17,7 @@ class CreateInvoiceIntent extends InvoiceIntent
//$invoiceItems = $this->requestInvoiceItems();
$url = '/invoices/create/' . $clientPublicId . '?';
foreach ($this->requestFields() as $field => $value) {
if (in_array($field, Invoice::$requestFields)) {
$url .= $field . '=' . urlencode($value) . '&';
}
}
$url = rtrim($url, '?');
$url = rtrim($url, '&');
$url .= $this->requestFieldsAsString(Invoice::$requestFields);
return redirect($url);
}

View File

@ -0,0 +1,21 @@
<?php
namespace App\Ninja\Intents\WebApp;
use App\Ninja\Intents\BaseIntent;
class CreatePaymentIntent extends BaseIntent
{
public function process()
{
$client = $this->requestClient();
$clientPublicId = $client ? $client->public_id : null;
//$invoiceItems = $this->requestInvoiceItems();
$url = '/payments/create/' . $clientPublicId . '?';
//$url .= $this->requestFieldsAsString(Invoice::$requestFields);
return redirect($url);
}
}

View File

@ -0,0 +1,21 @@
<?php
namespace App\Ninja\Intents\WebApp;
use App\Models\Product;
use App\Models\EntityModel;
use App\Ninja\Intents\ProductIntent;
use Exception;
class CreateProductIntent extends ProductIntent
{
public function process()
{
$url = '/products/create';
//$url = '/invoices/create/' . $clientPublicId . '?';
//$url .= $this->requestFieldsAsString(Invoice::$requestFields);
return redirect($url);
}
}

View File

@ -0,0 +1,22 @@
<?php
namespace App\Ninja\Intents\WebApp;
use App\Models\Invoice;
use App\Ninja\Intents\BaseIntent;
class CreateQuoteIntent extends BaseIntent
{
public function process()
{
$client = $this->requestClient();
$clientPublicId = $client ? $client->public_id : null;
//$invoiceItems = $this->requestInvoiceItems();
$url = '/quotes/create/' . $clientPublicId . '?';
$url .= $this->requestFieldsAsString(Invoice::$requestFields);
return redirect($url);
}
}

View File

@ -0,0 +1,22 @@
<?php
namespace App\Ninja\Intents\WebApp;
use App\Models\Invoice;
use App\Ninja\Intents\BaseIntent;
class CreateRecurringInvoiceIntent extends BaseIntent
{
public function process()
{
$client = $this->requestClient();
$clientPublicId = $client ? $client->public_id : null;
//$invoiceItems = $this->requestInvoiceItems();
$url = '/recurring_invoices/create/' . $clientPublicId . '?';
$url .= $this->requestFieldsAsString(Invoice::$requestFields);
return redirect($url);
}
}

View File

@ -0,0 +1,21 @@
<?php
namespace App\Ninja\Intents\WebApp;
use App\Ninja\Intents\BaseIntent;
class CreateTaskIntent extends BaseIntent
{
public function process()
{
$client = $this->requestClient();
$clientPublicId = $client ? $client->public_id : null;
//$invoiceItems = $this->requestInvoiceItems();
$url = '/tasks/create/' . $clientPublicId . '?';
//$url .= $this->requestFieldsAsString(Invoice::$requestFields);
return redirect($url);
}
}

View File

@ -0,0 +1,18 @@
<?php
namespace App\Ninja\Intents\WebApp;
use App\Ninja\Intents\BaseIntent;
class CreateVendorIntent extends BaseIntent
{
public function process()
{
$url = '/vendors/create';
//$url = '/invoices/create/' . $clientPublicId . '?';
//$url .= $this->requestFieldsAsString(Invoice::$requestFields);
return redirect($url);
}
}

View File

@ -0,0 +1,13 @@
<?php
namespace App\Ninja\Intents\WebApp;
use App\Ninja\Intents\BaseIntent;
class ListClientIntent extends BaseIntent
{
public function process()
{
return redirect('/clients');
}
}

View File

@ -0,0 +1,13 @@
<?php
namespace App\Ninja\Intents\WebApp;
use App\Ninja\Intents\BaseIntent;
class ListCreditIntent extends BaseIntent
{
public function process()
{
return redirect('/credits');
}
}

View File

@ -0,0 +1,13 @@
<?php
namespace App\Ninja\Intents\WebApp;
use App\Ninja\Intents\BaseIntent;
class ListExpenseIntent extends BaseIntent
{
public function process()
{
return redirect('/expenses');
}
}

View File

@ -0,0 +1,13 @@
<?php
namespace App\Ninja\Intents\WebApp;
use App\Ninja\Intents\InvoiceIntent;
class ListInvoiceIntent extends InvoiceIntent
{
public function process()
{
return redirect('/invoices');
}
}

View File

@ -0,0 +1,13 @@
<?php
namespace App\Ninja\Intents\WebApp;
use App\Ninja\Intents\BaseIntent;
class ListPaymentIntent extends BaseIntent
{
public function process()
{
return redirect('/payments');
}
}

View File

@ -0,0 +1,13 @@
<?php
namespace App\Ninja\Intents\WebApp;
use App\Ninja\Intents\BaseIntent;
class ListProductIntent extends BaseIntent
{
public function process()
{
return redirect('/products');
}
}

View File

@ -0,0 +1,13 @@
<?php
namespace App\Ninja\Intents\WebApp;
use App\Ninja\Intents\BaseIntent;
class ListQuotesIntent extends BaseIntent
{
public function process()
{
return redirect('/quotes');
}
}

View File

@ -0,0 +1,13 @@
<?php
namespace App\Ninja\Intents\WebApp;
use App\Ninja\Intents\BaseIntent;
class ListRecurringInvoiceIntent extends BaseIntent
{
public function process()
{
return redirect('/recurring_invoices');
}
}

View File

@ -0,0 +1,13 @@
<?php
namespace App\Ninja\Intents\WebApp;
use App\Ninja\Intents\BaseIntent;
class ListTaskIntent extends BaseIntent
{
public function process()
{
return redirect('/tasks');
}
}

View File

@ -0,0 +1,13 @@
<?php
namespace App\Ninja\Intents\WebApp;
use App\Ninja\Intents\BaseIntent;
class ListVendorIntent extends BaseIntent
{
public function process()
{
return redirect('/vendors');
}
}

View File

@ -173,7 +173,9 @@
}
function onMicrophoneClick() {
$('#search').val('create new invoice for edgar a po number of 1234');
//$('#search').val('create new invoice for edgar a po number of 1234');
$('#search').val('create a task for edgar');
//$('#search').val('show me all vendors');
$('#search-form').submit();
return;