首頁 >後端開發 >php教程 >讓新註冊的會員,自動分配客服?

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

WBOY
WBOY原創
2016-08-08 09:06:501061瀏覽

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

客服一共有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 ,其實就是一個機器問答系統,然後某個客服結束後,立即將隊列中的用戶分配過去,這樣不存在插隊或者其他麻煩的事情。同時輕鬆做到每個客服都能忙起來。

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn