如何在 Symfony 3 中集成 Botman(控制器和视图)?

我想将聊天机器人集成到我的 symfony 网站中。所以我看到有 Botman,它是一个 PHP 框架,它满足了我的需求,但是我没有找到有关它与 Symfony 集成的文档。所以因为它也在 PHP 和 symfony 中,所以我开始使用 Composer 安装它,然后司机也一样。

这是我遵循的步骤

  1. 作曲家需要 botman/botman

  2. 作曲家需要 botman/driver-web

  3. 在我的额头上做一个控制器

我的控制器

 public function chatAction()

{

    $config = [

    // Your driver-specific configuration

    // "telegram" => [

    //    "token" => "TOKEN"

    // ]

];


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


   $botman = BotManFactory::create($config);


  // Give the bot something to listen for.

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

    $bot->reply('Hello too');

});


// $botman->fallback(function($bot) {

//     $bot->reply('Sorry, I did not understand these commands. Here is a list of commands I understand: ...');

// });


// Start listening

$botman->listen();


return $this->render('DoctixFrontBundle:Chat:index.html.twig');

 }

我的观点 对于我的观点,我没有起点,我不知道该怎么做,这就是为什么我只是将 botman 的 css 和 js 放入其中


 <!doctype html>

<html>


<head>

    <title>BotMan Widget</title>

    <meta charset="UTF-8">

    <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/botman-web-widget@0/build/assets/css/chat.min.css">

</head>


<body>

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

</body>

   

</html>

<script>

        var botmanWidget = {

            frameEndpoint: '/chat.html',

            introMessage: 'Hello, I am a Chatbot',

            chatServer : 'chat.php', 

            title: 'My Chatbot', 

            mainColor: '#456765',

            bubbleBackground: '#ff76f4',

            aboutText: '',

            bubbleAvatarUrl: '',

        }; 

    </script>

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

但没什么可做的,我的渲染中只显示了一段css和js代码。可以帮助我谢谢。


GCT1015
浏览 117回答 1
1回答

慕仙森

我假设您使用Botman Web 小部件来呈现聊天框。您需要三个路由和三个控制器功能:将发回包含聊天机器人小部件的页面(以下示例中的“主页”),一个将处理 Botman 逻辑并返回机器人的序列化答案(以下示例中的“消息”),将发送回聊天框架(以下示例中的“chatframe”)。这是一个基本示例:<?phpnamespace AppBundle\Controller;use Symfony\Component\Routing\Annotation\Route;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Bundle\FrameworkBundle\Controller\Controller;use BotMan\BotMan\BotMan;use BotMan\BotMan\BotManFactory;use BotMan\BotMan\Drivers\DriverManager;class BobotController extends Controller{    /**     * @Route("/message", name="message")     */    function messageAction(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();    }        /**     * @Route("/", name="homepage")     */    public function indexAction(Request $request)    {        return $this->render('DoctixFrontBundle:Chat:homepage.html.twig');    }        /**     * @Route("/chatframe", name="chatframe")     */    public function chatframeAction(Request $request)    {        return $this->render('DoctixFrontBundle:Chat:chat_frame.html.twig');    }}您需要两个视图,第一个是聊天框架( Botman Web 小部件文档chat_frame.html.twig中提供的简单复制粘贴):<!DOCTYPE html><html>    <head>        <title>BotMan Widget</title>        <meta charset="UTF-8">        <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/botman-web-widget@0/build/assets/css/chat.min.css">    </head>    <body>        <script id="botmanWidget" src='https://cdn.jsdelivr.net/npm/botman-web-widget@0/build/js/chat.js'></script>    </body></html>右下角将包含聊天小部件的页面homepage.html.twig:<!DOCTYPE html><html>    <head>        <!-- Required meta tags -->        <meta charset="utf-8">        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">        <title>Hello World!</title>    </head>    <body>        <h1>Hello!</h1>        <p>Click on the chat button.</p>        <script>            var botmanWidget = {            frameEndpoint: '{{ path("chatframe") }}',            chatServer: '{{ path("message") }}',            introMessage: 'Hello, I am a Chatbot',            title: 'My Chatbot',             mainColor: '#456765',            bubbleBackground: '#ff76f4',            aboutText: ''        };</script><script src='https://cdn.jsdelivr.net/npm/botman-web-widget@0/build/js/widget.js'></script>    </body></html>
打开App,查看更多内容
随时随地看视频慕课网APP