为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
GCT1015 2023-07-15 15:46:08
我想将聊天机器人集成到我的 symfony 网站中。所以我看到有 Botman,它是一个 PHP 框架,它满足了我的需求,但是我没有找到有关它与 Symfony 集成的文档。所以因为它也在 PHP 和 symfony 中,所以我开始使用 Composer 安装它,然后司机也一样。这是我遵循的步骤作曲家需要 botman/botman作曲家需要 botman/driver-web在我的额头上做一个控制器我的控制器 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代码。可以帮助我谢谢。
查看完整描述

1 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

我假设您使用Botman Web 小部件来呈现聊天框。

您需要三个路由和三个控制器功能:

  • 将发回包含聊天机器人小部件的页面(以下示例中的“主页”),

  • 一个将处理 Botman 逻辑并返回机器人的序列化答案(以下示例中的“消息”),

  • 将发送回聊天框架(以下示例中的“chatframe”)。

这是一个基本示例:

<?php


namespace 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>


查看完整回答
反对 回复 2023-07-15
  • 1 回答
  • 0 关注
  • 104 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信