1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-10 05:02:36 +01:00

Working on our bot

This commit is contained in:
Hillel Coren 2016-08-07 09:10:36 +03:00
parent cb740a001c
commit b8a124dc0f
4 changed files with 45 additions and 20 deletions

View File

@ -2,20 +2,11 @@
namespace App\Http\Controllers;
use App\Ninja\Repositories\InvoiceRepository;
use Exception;
use App\Ninja\Intents\BaseIntent;
class BotController extends Controller
{
protected $invoiceRepo;
public function __construct(InvoiceRepository $invoiceRepo)
{
//parent::__construct();
$this->invoiceRepo = $invoiceRepo;
}
public function handleMessage($platform)
{
$message = 'invoice acme client for 2 tickets';
@ -24,6 +15,35 @@ class BotController extends Controller
//$message = view('bots.skype.message', ['message' => 'testing'])->render();
//return $this->sendResponse($to, $message);
$message = '{
"type": "message/image",
"text": "Test message",
"attachments": [
{
"contentType": "application/pdf",
"contentUrl": "http://www.orimi.com/pdf-test.pdf",
"thumbnailUrl": "http://www.orimi.com/pdf-test.pdf",
"filename": "test.pdf"
}
]
}';
return $this->sendResponse($to, $message);
try {
$data = $this->parseMessage($message);
$intent = BaseIntent::createIntent($data);
$message = $intent->process();
} catch (Exception $exception) {
$message = view('bots.skype.message', [
'message' => $exception->getMessage()
])->render();
}
$this->sendResponse($to, $message);
}
private function parseMessage($message)
{
$appId = env('MSBOT_LUIS_APP_ID');
$subKey = env('MSBOT_LUIS_SUBSCRIPTION_KEY');
$message = rawurlencode($message);
@ -34,13 +54,7 @@ class BotController extends Controller
var_dump($data->compositeEntities);
if ($intent = BaseIntent::createIntent($data)) {
$message = $intent->process();
} else {
$message = view('bots.skype.message', ['message' => trans('texts.intent_not_found')])->render();
}
$this->sendResponse($to, $message);
return $data;
}
private function sendResponse($to, $message)

View File

@ -1,5 +1,6 @@
<?php namespace App\Ninja\Intents;
use Exception;
class BaseIntent
{
@ -13,14 +14,19 @@ class BaseIntent
public static function createIntent($data)
{
if ( ! count($data->intents)) {
return false;
throw new Exception(trans('texts.intent_not_found'));
}
$intent = $data->intents[0];
$intentType = $intent->intent;
$className = "App\\Ninja\\Intents\\{$intentType}Intent";
return new $className($data);
if ( ! class_exists($className)) {
throw new Exception(trans('texts.intent_not_supported'));
}
return (new $className($data));
}
public function process()

View File

@ -2053,6 +2053,7 @@ $LANG = array(
'payment_type_on_file' => ':type on file',
'invoice_for_client' => 'Invoice :invoice for :client',
'intent_not_found' => 'Sorry, I\'m not sure what you\'re asking.',
'intent_not_supported' => 'Sorry, I\'m not able to do that.',
'client_not_found' => 'We weren\'t able to find the client',
);

View File

@ -0,0 +1,4 @@
{
"type": "message/text",
"text": "{!! $message !!}"
}