php 由dialogflow驱动的Botman没有回复我的消息

dluptydi  于 2022-12-28  发布在  PHP
关注(0)|答案(2)|浏览(102)

我正在学习如何使用PHP和www.example.com创建基于对话流的NLP聊天机器人Botman.io。我写了一个简单的代码,应该可以工作,但机器人没有回复我的消息。
我已经浏览了www.example.com上的文档和官方在线课程botman.io,但没有帮助,因为它们的代码完全相同。
请看一下我的代码botman.php文件,如果不是很难:

use App\Http\Controllers\BotManController;
use BotMan\BotMan\Middleware\Dialogflow;
use function GuzzleHttp\json_decode;
use BotMan\BotMan\Interfaces\Middleware\Received;

$botman = resolve('botman');

$dialogflow_token = 'it is secret'

$dialogflow = Dialogflow::create(dialogflow_token)->listenForAction();

$botman->middleware->received($dialogflow);

$botman->hears('weathersearch', function($bot){

    $extras = $bot->getMessage()->getExtras();
    $location = $extras['apiParameters']['geo-city'];

    $url = 'http://api.apixu.com/v1/current.json?key=38b39a718abc4c6da25112826190108&q='.urlencode($location);
    $response  = json_decode(file_get_contents($url));

    $bot->reply('The weather in' . $response->$location->$name . ', ' . $response->$location->$country . 'is: ');
    $bot->reply($response->current->condition->text);
    $bot->reply('Temperature: '.$response->current->temp_c. ' Celcius');

})->middleware($dialogflow);

?>

机器人应该通过给出当前的天气温度和条件,即25摄氏度晴天,来响应像“加州的天气如何”这样的消息

watbbzwu

watbbzwu2#

如果你想获得对话流API并将botman与对话流集成,请按照下面的链接中给出的步骤操作,它对我很有效。
Integrate Botman with Dialogflow
但是,仍然存在一些问题,比如botman无法转到正确的Intent,它只能转到默认的欢迎Intent和默认的回退Intent。为了解决这个问题,我在其他Intent中添加了“input.unknown”,并在botman中编写了如下代码:

$dialogflow = DialogFlow::create('en');
$botman->middleware->received($dialogflow);
$botman->hears('(input.*)', function ($bot) {
 $extras = $bot->getMessage()->getExtras();
 $bot->reply($extras['apiReply']);
})->middleware($dialogflow);

有关该主题的更多讨论,您可以在下面的链接中查看。
Adding input to hears and dialogflow intent

相关问题