Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann neu registrierten Mitgliedern automatisch der Kundendienst zugewiesen werden?
Jedes Mal, wenn ein neues Mitglied registriert wird, wird automatisch ein Kundendienstmitarbeiter zugewiesen
Es gibt insgesamt 3 Kundendienstmitarbeiter (weiterer Kundendienst wird in Zukunft hinzugefügt).
Das erste neue Mitglied, Kundenservice 1
Das zweite neue Mitglied, Kundenservice 2
Das dritte neue Mitglied, Kundenservice 3
Das vierte neue Mitglied, Kundenservice 1
...
Ich frage zunächst den gesamten Kundendienst in der Kundendiensttabelle ab und aktualisiere dann das Kundendienstfeld in der Tabelle für neu registrierte Mitglieder.
Wie kann man jetzt eine Eins-zu-Eins-Korrespondenz zwischen ihnen herstellen?
Jedes Mal, wenn ein neues Mitglied registriert wird, wird automatisch ein Kundendienstmitarbeiter zugewiesen
Es gibt insgesamt 3 Kundendienstmitarbeiter (weiterer Kundendienst wird in Zukunft hinzugefügt).
Das erste neue Mitglied, Kundenservice 1
Das zweite neue Mitglied, Kundenservice 2
Das dritte neue Mitglied, Kundenservice 3
Das vierte neue Mitglied, Kundenservice 1
...
Ich frage zunächst den gesamten Kundendienst in der Kundendiensttabelle ab und aktualisiere dann das Kundendienstfeld in der Tabelle für neu registrierte Mitglieder.
Wie kann man jetzt eine Eins-zu-Eins-Korrespondenz zwischen ihnen herstellen?
Möchten Sie den Leerlaufstatus des Kundendienstes berücksichtigen?
Zum Beispiel Kundendienst a b c
Zu diesem Zeitpunkt kamen 3 Personen und ordneten sie a b c zu.
Zu diesem Zeitpunkt hat c Er hat sich bereits um seine eigenen Angelegenheiten gekümmert.
Zu diesem Zeitpunkt kam er wieder. Wem sollte ich die vierte Person geben?
Wenn diese Situation nicht vorliegt
<code>$number = file_get_contents("log.txt"); file_put_contents("log.txt", ($number +1)%3);</code>
Machen wir es mit Redis.
Verwenden Sie die Listenstruktur, um zuerst eine Kundendienstliste zu erstellen, indem Sie am Ende des Teams einen Kundendienst per RPOP übermitteln und diesen Kundendienst dann per LPSH an den Leiter des Teams weiterleiten.
Wenn Sie beim Hinzufügen eines neuen Kundendienstes möchten, dass die Reihenfolge der Seriennummern unverändert bleibt, z. B. derzeit 2 3 1, und die Liste nach der neu hinzugefügten 4 zu 2 3 4 1 wird, müssen Sie dies tun Entfernen Sie die Warteschlange und treffen Sie ein logisches Urteil. Wenn es nicht benötigt wird, einfach LPUSH direkt an den Anfang der Warteschlange setzen.
Wenn Sie Redis nicht verwenden, schreiben Sie einfach die Datei. Jeder Kunde verwendet "rn"
und die Regeln für den getrennten Abruf sind die gleichen wie oben
Danke für die Einladung. Ich habe einfach eine Funktion geschrieben.
<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>
Ergebnisse ausgeben
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>
Ein super einfacher Hash-Algorithmus, die Anzahl der Kundendienste n, die neu registrierte Benutzer-ID m und dann den zugewiesenen Kundendienst m % n 1
Ich habe schon einmal einen ähnlichen geschrieben, aber es handelt sich nicht um einen Kundenservice, daher werde ich den Code hier nicht veröffentlichen, sondern über meinen persönlichen Ansatz sprechen:
Das ultimative Ziel besteht darin, jeden Kundenservice zu beschäftigen, ohne dass die Benutzer lange warten müssen.
Also weisen Sie einem neuen Benutzer einen zu:
<code>if ( 空闲状态的客服数 >= 0 ){ // 分配给最先进入空闲状态的那个客服 }else{ // 说明现在每个客服都有用户在咨询 // 并且可能某些客服下还有在排队等待的用户 获取每个客服 **当前咨询任务** 的开始时间 将这个用户分配给 当前资讯任务 的开始时间最早的 并且 后面排队人数最少的哪个客服 // 其实上面还有一个权重的问题,比如 A 客服 当前客户资讯任务开始时间比 B 早 2分钟,但是 A 后面排队的人数比 B 客服多 1个,这就要靠 权重值 来计算是分配给 A 还是 B。 } </code>
Ich persönlich denke, dass man einen virtuellen Kundenservice beauftragen kann Gleichzeitig ist es einfach, jeden Kundendienst zu beschäftigen.
Ich bin auch neu in diesem Wissensbereich. Bitte korrigieren Sie mich, wenn Ihre Antwort nicht gut ist.