1 回答

TA貢獻1827條經驗 獲得超8個贊
我假設您使用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" >
? ? </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>
- 1 回答
- 0 關注
- 152 瀏覽
添加回答
舉報