1

我是 Symfony 的新手。我创建了一个 Symfony 应用程序,并且我的 Symfony 根目录中有一个 BotMan 文件夹,所以我想将该机器人集成到我的应用程序中。我的目录结构是这样的:

my_symfony_project/
  bin/
  config/
  migrations/
  ...
  my_botman_project/

那么如何在我的 Symfony 项目中“包含”BotMan 类,以便能够将它们用作任何其他 Symfony 类呢?我需要更改我的 services.yaml 文件吗?如何?我知道这可能是一个愚蠢的问题,但我还不明白它是如何工作的。提前致谢。

编辑:做了一些改变......

我再次安装了 BotMan,但作为独立的作曲家依赖项,现在我在 vendor 中有我的“botman”文件夹。之后,我创建了一个带有 Web 小部件的树枝模板和一个带有“/botman/chat”路由的方法。小部件出现了,但我不知道如何在其中进行聊天。更详细的代码:

我的模板(mybot/index.html.twig):

<script src='https://cdn.jsdelivr.net/npm/botman-web-widget@0/build/js/widget.js'></script>

HomeController.php(仅限botman方法)

/**
 * @Route("/botman/chat", name="mybot")
 */
public function botman(Request $request)
{
    DriverManager::loadDriver(\BotMan\Drivers\Web\WebDriver::class);

    // Configuration for the BotMan WebDriver
    $config = [];

    // Create BotMan instance
    $botman = BotManFactory::create($config);

    // Give the bot some things to listen for.
    $botman->hears('(hello|hi|hey)', function (BotMan $bot) {
        $bot->reply('Hello!');
    });

    // Set a fallback
    $botman->fallback(function (BotMan $bot) {
        $bot->reply('Sorry, I did not understand.');
    });

    // Start listening
    //$botman->listen();

    //return new Response("hi");
    
    return $this->render('mybot/index.html.twig', [
    ]);
}

编辑#2终于我找到了答案......

为了能够使用该机器人,您需要返回一个空响应,因为 Botman 已经发送了标头。之后,如果您只在模板中包含小部件......

<script src='https://cdn.jsdelivr.net/npm/botman-web-widget@0/build/js/widget.js'></script>

您会注意到小部件是空的,并且只包含 JSON 格式的响应。所以我决定使用Pete Lawrence 的聊天机器人作为指导来编写我的模板,并且我不使用预构建的小部件。 链接到帮助我解决此问题的 GitHub 已关闭问题

4

2 回答 2

3

您应该使用 composer 来管理依赖项。

检查替代部分和“没有 BotMan Studio 的基本用法”。

composer require botman/botman
于 2020-07-14T07:50:57.267 回答
0

您可以在此处找到有关如何集成BotmanSymfony3项目中的迷你教程。我知道Symfony5's 的理念与 's 相对不同,Symfony3但在不失一般性的情况下,被引用的教程可能很有用。

此外,您可以找到这个捆绑包,它是一种Botman直接包含在Symfony的服务容器中的包装器......但是它仅在Symfony4.

于 2020-08-26T14:54:16.983 回答