讓新註冊的會員,自動分配客服?

WBOY
發布: 2016-08-08 09:06:50
原創
1012 人瀏覽過

每註冊一個新會員,自動分配一個客服

客服一共有3個(以後會增加更多客服) 怎樣處理?
第一個新會員, 客服1
第二個新會員,客服2
第三個新會員,客服3
第四個新會員,客服1
...

我是先查詢出客服表中所有客服,然後更新新註冊會員表中客服欄位。
現在是怎樣讓之間一一對應?

回覆內容:

每註冊一個新會員,自動分配一個客服

客服一共有3個(以後會增加更多客服) 怎樣處理?
第一個新會員, 客服1
第二個新會員,客服2
第三個新會員,客服3
第四個新會員,客服1
...

我是先查詢出客服表中所有客服,然後更新新註冊會員表中客服欄位。
現在是怎樣讓之間一一對應?

請問要不要考慮 客服閒置狀態
比如客服 a b c
這個時候來了3個人 分給了a b c
此時c 已經幫處理完自己的事情了
這時 又來了第四個人 分給誰來

若不存在此情況

<code>$number = file_get_contents("log.txt");
file_put_contents("log.txt", ($number +1)%3);</code>
登入後複製

配合redis來做吧。

使用List結構,先建造客服list,新用戶進來的時候RPOP一個隊尾客服使用,然後在把這個客服LPUSH到隊頭去

當新增客服的時候,你如果想序號順序不變比如目前是 2 3 1,新加入的4後List要變成 2 3 4 1這時候就要去除隊列進行邏輯判斷下。如果不需要就直接LPUSH 到隊頭。

不用redis的話就寫文件,每個客服用 "rn" 隔開取的規則跟上面一樣

謝邀,簡單寫了個函數,是想要這樣嗎?

<code><?php

function distribution_cs($user_id,$cs_total=3){

    if($user_id%$cs_total==0){
        return $cs_total;
    }
    return $user_id%$cs_total;
}


echo distribution_cs(1).",";
echo distribution_cs(2).",";
echo distribution_cs(3).",";
echo distribution_cs(4).",";
echo distribution_cs(5).",";
echo distribution_cs(6).",";
echo distribution_cs(7).",";
echo distribution_cs(8).",";
echo distribution_cs(9).",";
echo distribution_cs(10).",";
echo distribution_cs(11).",";
echo distribution_cs(12).",";
echo distribution_cs(13).",";
echo distribution_cs(14,4).",";
echo distribution_cs(15,4).",";
echo distribution_cs(16,4).",";
echo distribution_cs(17,4).",";
echo distribution_cs(18,4).",";
echo distribution_cs(19,4).",";
echo distribution_cs(20,4).",";
echo distribution_cs(21,5).",";</code>
登入後複製

輸出結果

1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,4,1,2,3,4,1,

<code><?php

class serviceFactory{
    private $num;
    private $count = 0;

    function __construct($num){
        $this->setNum($num);
    }

    function getService(){
        if($this->count >= $this->num){
            $this->count = 0;
        }
        $this->count ++;
        return $this->count;
    }

    function setNum($num){
        $this->num = $num;
    }

}

$factory = new serviceFactory(3);
echo $factory->getService(),",";
echo $factory->getService(),",";
echo $factory->getService(),",";
echo $factory->getService(),",";
echo $factory->getService(),",";
echo $factory->getService(),",";
echo $factory->getService(),",";
echo $factory->getService(),",";
echo $factory->getService(),",";
$factory->setNum(4);
echo $factory->getService(),",";
echo $factory->getService(),",";
echo $factory->getService(),",";
echo $factory->getService(),",";
echo $factory->getService(),",";</code>
登入後複製

超簡單的hash演算法來一個, 客服數 n 新註冊用戶id m 然後分配的客服為 m % n + 1 即可

之前寫過一個類似的,不過不是客服,這裡就不貼代碼了,講講個人的做法了:

最終目的是讓每個客服都忙起來,又不能讓用戶久等。

所以,新來一個用戶,就分配一個給他:

<code>if ( 空闲状态的客服数 >= 0 ){
    // 分配给最先进入空闲状态的那个客服
}else{
    // 说明现在每个客服都有用户在咨询
    // 并且可能某些客服下还有在排队等待的用户
    获取每个客服 **当前咨询任务** 的开始时间
    
    将这个用户分配给 当前资讯任务 的开始时间最早的 并且 后面排队人数最少的哪个客服
    // 其实上面还有一个权重的问题,比如 A 客服 当前客户资讯任务开始时间比 B 早 2分钟,但是 A 后面排队的人数比 B 客服多 1个,这就要靠 权重值 来计算是分配给 A 还是 B。
}
</code>
登入後複製

個人覺得哈,可以先分配虛擬客服 X ,其實就是一個機器問答系統,然後某個客服結束後,立即將隊列中的用戶分配過去,這樣不存在插隊或者其他麻煩的事情。同時輕鬆做到每個客服都能忙起來。

我也是剛接觸這方面的知識,答得不好還請大家多指正,謝謝

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!