|
@@ -21,6 +21,7 @@ from configs import apollo_config
|
|
|
from logging_service import logger
|
|
|
from chat_service import CozeChat, ChatServiceType
|
|
|
from dialogue_manager import DialogueManager, DialogueState, DialogueStateCache
|
|
|
+from rate_limiter import MessageSenderRateLimiter
|
|
|
from response_type_detector import ResponseTypeDetector
|
|
|
from user_manager import UserManager, LocalUserManager, MySQLUserManager, MySQLUserRelationManager, UserRelationManager, \
|
|
|
LocalUserRelationManager
|
|
@@ -81,6 +82,8 @@ class AgentService:
|
|
|
self.process_thread = None
|
|
|
self._sigint_cnt = 0
|
|
|
|
|
|
+ self.send_rate_limiter = MessageSenderRateLimiter()
|
|
|
+
|
|
|
def setup_initiative_conversations(self, schedule_params: Optional[Dict] = None):
|
|
|
if not schedule_params:
|
|
|
schedule_params = {'hour': '8,16,20'}
|
|
@@ -264,6 +267,7 @@ class AgentService:
|
|
|
if not (staff_id in staff_white_lists or hit_white_list_tags or skip_check):
|
|
|
logger.warning(f"staff[{staff_id}] user[{user_id}]: skip reply")
|
|
|
return
|
|
|
+ self.send_rate_limiter.wait_for_sending(staff_id, response)
|
|
|
self.send_queue.produce(
|
|
|
Message.build(message_type, MessageChannel.CORP_WECHAT,
|
|
|
staff_id, user_id, response, current_ts)
|