Невозможно интегрировать Dialogflow в ботмена - PullRequest
0 голосов
/ 18 октября 2019

Symfony \ Component \ Debug \ Exception \ FatalThrowableError. Аргумент 1, передаваемый в App \ Http \ Controllers \ API \ BotManController :: App \ Http \ Controllers \ API {closure} (), должен быть экземпляром BotMan \ BotMan, заданным экземпляром BotMan \ BotMan \ BotMan.

Я попытался внедрить NLP APIAI в Botman с помощью предоставленной документации
, но не смог найти проблему. то, что я пробовал, показано в моем коде ниже.

use BotMan\BotMan\Middleware\ApiAi;

public function handle(Request $request){

$config = ['web'=>['matchingData'=>['driver'=>'web']]];

DriverManager::loadDriver(\BotMan\Drivers\Web\WebDriver::class);

$doctrineCacheDriver = new \Doctrine\Common\Cache\PhpFileCache('cache');
$botman = BotManFactory::create($config, new DoctrineCache($doctrineCacheDriver));

$dialogflow = ApiAi::create('dialog_flow_client_token')->listenForAction();
$botman->middleware->received($dialogflow);

// Apply matching middleware per hears command
$botman->hears('intent-action-name', function (BotMan $bot){$extras = $bot->getMessage()->getExtras();
$apiReply = $extras['apiReply'];$apiAction = $extras['apiAction'];$apiIntent = $extras['apiIntent'];
})->middleware($dialogflow);

$botman->listen();

}

Ответы [ 2 ]

1 голос
/ 18 октября 2019

Сделайте явный вызов для BotMan во внедрении зависимости закрытия функции, чтобы избежать путаницы с текущим пространством имен

$botman->hears('intent-action-name', function (\BotMan\BotMan $bot) {
   $extras = $bot->getMessage()->getExtras();
   $apiReply = $extras['apiReply'];
   $apiAction = $extras['apiAction'];
   $apiIntent = $extras['apiIntent'];
})->middleware($dialogflow);

Надеюсь, это поможет

0 голосов
/ 18 октября 2019

Использование \ BotMan \ BotMan работало вместо использования импорта Botman use BotMan \ BotMan;. Спасибо @sally 3301 это работало

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...