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>
- 1 回答
- 0 关注
- 104 浏览
添加回答
举报