Rumah >pembangunan bahagian belakang >tutorial php >怎样让新注册的会员,自动分配客服?

怎样让新注册的会员,自动分配客服?

WBOY
WBOYasal
2016-08-08 09:06:501062semak imbas

每注册一个新会员,自动分配一个客服

客服一共有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的话就写文件,每个客服用 "\r\n" 隔开取的规则跟上面一样

谢邀,简单写了个函数,是想要这样吗?

<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></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 ,其实就是一个机器问答系统,然后某个客服结束后,立即将队列中的用户分配过去,这样不存在插队或者其他麻烦的事情。同时轻松做到每个客服都能忙起来。

我也是刚接触这方面的知识,答得不好还请大家多指正,谢谢

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn