网页在线客服系统自动欢迎语实现方案(PHP+MySQL)

一、实现思路

在网页在线客服系统中实现自动欢迎语,主要需要以下几个步骤:

  1. 在数据库中存储欢迎语内容
  2. 判断用户是否为首次访问或新会话
  3. 在适当时机自动发送欢迎消息

演示网站:gofly.v1kf.com

二、数据库设计

首先需要扩展数据库结构:

-- 欢迎语表
CREATE TABLE welcome_messages (
    id INT AUTO_INCREMENT PRIMARY KEY,
    message TEXT NOT NULL,
    is_active BOOLEAN DEFAULT 1,
    delay_seconds INT DEFAULT 3 COMMENT '延迟发送秒数',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 用户会话表(用于判断是否新会话)
CREATE TABLE chat_sessions (
    session_id VARCHAR(32) PRIMARY KEY,
    user_ip VARCHAR(45),
    user_agent TEXT,
    first_seen TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    last_active TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- 插入默认欢迎语
INSERT INTO welcome_messages (message, delay_seconds) VALUES 
('欢迎光临!请问有什么可以帮您?', 3);

三、PHP实现代码

1. 检查并发送欢迎语(welcome.php)

<?php
require 'db_connect.php';

// 获取或创建会话ID
session_start();
$sessionId = session_id();

// 检查是否为新会话
$isNewSession = false;
$sql = "SELECT * FROM chat_sessions WHERE session_id = '$sessionId'";
$result = $conn->query($sql);

if ($result->num_rows == 0) {
    // 新会话,插入记录
    $userIp = $_SERVER['REMOTE_ADDR'];
    $userAgent = $conn->real_escape_string($_SERVER['HTTP_USER_AGENT']);
    
    $sql = "INSERT INTO chat_sessions (session_id, user_ip, user_agent) 
            VALUES ('$sessionId', '$userIp', '$userAgent')";
    $conn->query($sql);
    $isNewSession = true;
} else {
    // 更新最后活动时间
    $sql = "UPDATE chat_sessions SET last_active = NOW() WHERE session_id = '$sessionId'";
    $conn->query($sql);
}

// 如果是新会话且欢迎语功能开启,获取欢迎语
$welcomeMessage = null;
if ($isNewSession) {
    $sql = "SELECT message, delay_seconds FROM welcome_messages WHERE is_active = 1 LIMIT 1";
    $result = $conn->query($sql);
    
    if ($result->num_rows > 0) {
        $row = $result->fetch_assoc();
        $welcomeMessage = [
            'text' => $row['message'],
            'delay' => $row['delay_seconds'] * 1000 // 转换为毫秒
        ];
    }
}

echo json_encode($welcomeMessage);
$conn->close();
?>

2. 修改前端代码(index.html)

在原有代码中添加欢迎语处理:

<script>
    // 页面加载时检查欢迎语
    window.onload = function() {
        fetch('welcome.php')
            .then(response => response.json())
            .then(data => {
                if (data) {
                    // 延迟发送欢迎语
                    setTimeout(() => {
                        addMessage('bot', data.text);
                    }, data.delay);
                }
            });
    };

    // 原有sendMessage函数...
</script>

四、管理后台扩展

在管理后台(admin.php)中添加欢迎语管理功能:

// 在admin.php中添加欢迎语管理部分
<h2>欢迎语管理</h2>
<form method="post">
    <textarea name="welcome_message" placeholder="欢迎语内容" required></textarea>
    <input type="number" name="delay" placeholder="延迟秒数" value="3" min="0">
    <button type="submit" name="save_welcome">保存欢迎语</button>
</form>

<?php
// 处理欢迎语保存
if (isset($_POST['save_welcome'])) {
    $message = $conn->real_escape_string($_POST['welcome_message']);
    $delay = (int)$_POST['delay'];
    
    // 先禁用所有欢迎语
    $conn->query("UPDATE welcome_messages SET is_active = 0");
    
    // 插入新欢迎语
    $sql = "INSERT INTO welcome_messages (message, delay_seconds, is_active) 
            VALUES ('$message', $delay, 1)";
    $conn->query($sql);
}

// 显示当前欢迎语
$result = $conn->query("SELECT * FROM welcome_messages WHERE is_active = 1 LIMIT 1");
if ($result->num_rows > 0) {
    $welcome = $result->fetch_assoc();
    echo "<p>当前欢迎语:".htmlspecialchars($welcome['message'])." (延迟".$welcome['delay_seconds']."秒)</p>";
}
?>

五、进阶优化方案

1. 多条件欢迎语

ALTER TABLE welcome_messages ADD COLUMN conditions VARCHAR(255) COMMENT 'JSON格式的条件';

可以实现根据不同条件显示不同欢迎语,例如:

  • 根据访问页面显示不同欢迎语
  • 根据用户来源(搜索引擎、直接访问等)显示不同内容
  • 根据时间段显示不同问候语

2. 用户识别

ALTER TABLE chat_sessions ADD COLUMN user_id INT DEFAULT NULL COMMENT '登录用户ID';

如果网站有用户系统,可以关联用户ID,实现个性化欢迎语,如:"欢迎回来,张先生!"

3. 频率控制

避免重复发送欢迎语,可以在会话表中添加字段:

ALTER TABLE chat_sessions ADD COLUMN welcome_sent BOOLEAN DEFAULT 0;

发送欢迎语后更新此字段为1,下次检查时不再发送

六、完整工作流程

  1. 用户访问客服页面,创建或获取会话ID
  2. 系统检查是否为全新会话
  3. 如果是新会话,从数据库获取当前启用的欢迎语
  4. 前端收到欢迎语数据后,延迟指定时间显示
  5. 管理员可以通过后台随时修改欢迎语内容和设置

七、注意事项

  1. ​会话识别​​:确保session配置正确,避免每次刷新都视为新会话
  2. ​性能考虑​​:频繁访问数据库可能影响性能,可以考虑缓存欢迎语
  3. ​移动端适配​​:欢迎语延迟时间不宜过长,移动用户可能快速离开
  4. ​内容更新​​:修改欢迎语后可能需要清除缓存才能立即生效
  5. ​多语言支持​​:可根据用户浏览器语言设置显示不同语言的欢迎语

这个实现方案简单直接,基于MySQL和PHP,无需复杂技术栈即可为网页在线客服系统添加自动欢迎语功能。

posted @ 2025-06-04 23:13  唯一客服系统开发笔记  阅读(46)  评论(0)    收藏  举报