Browse Source

Update lark_alert_for_human_intervention: add ack url

StrayWarrior 1 month ago
parent
commit
ddaed0278d

+ 4 - 1
pqai_agent/dialogue_manager.py

@@ -370,7 +370,10 @@ class DialogueManager:
             dialogue_to_send.append(f"[{role_map[role]}]{dialogue['content']}")
         alert_message += '\n'.join(dialogue_to_send)
 
-        LarkAlertForHumanIntervention().send_lark_alert_for_human_intervention(alert_message)
+        ack_url = "http://ai-wechat-hook-internal.piaoquantv.com/manage/insertEvent?" \
+                f"sender={self.user_id}&receiver={self.staff_id}&type={MessageType.HUMAN_INTERVENTION_END.value}&content=OPERATION"
+
+        LarkAlertForHumanIntervention().send_lark_alert_for_human_intervention(alert_message, ack_url)
         LarkSheetRecordForHumanIntervention().send_lark_sheet_record_for_human_intervention(
             staff_info, user_info, '\n'.join(dialogue_to_send), reason
         )

+ 24 - 5
pqai_agent/toolkit/lark_alert_for_human_intervention.py

@@ -1,4 +1,4 @@
-from typing import List
+from typing import List, Optional
 import requests
 
 from pqai_agent.toolkit.base import BaseToolkit
@@ -13,22 +13,39 @@ class LarkAlertForHumanIntervention(BaseToolkit):
         super().__init__()
 
     def send_lark_alert_for_human_intervention(
-        self, message: str
+        self, message: str, ack_url: Optional[str] = None
     ) -> str:
         r"""Sends a Lark alert for human intervention.
 
         Args:
             message (str): The message to send.
+            ack_url (str): The URL to acknowledge the alert.
         Returns:
             str: A confirmation message.
         """
         if not self.webhook_url:
             return "Webhook URL not configured."
 
+        contents = [{
+            "tag": "text",
+            "text": f"{message}\n"
+        }]
+        if ack_url:
+            contents.append({
+                "tag": "a",
+                "text": "[处理完成点击此处]",
+                "href": ack_url
+            })
+
         req_body = {
-            "msg_type": "text",
+            "msg_type": "post",
             "content": {
-                "text": f'[Agent告警]{message}'
+                "post": {
+                    "zh_cn": {
+                        "title": f'Agent告警',
+                        "content": [contents]
+                    }
+                }
             }
         }
         try:
@@ -48,5 +65,7 @@ if __name__ == '__main__':
     tools = toolkit.get_tools()
     for tool in tools:
         print(f"Tool schema: {tool.get_openai_tool_schema()}")
-    resp = toolkit.send_lark_alert_for_human_intervention('测试')
+    ack_url = "http://ai-wechat-hook-internal.piaoquantv.com/manage/insertEvent?" \
+                f"sender=1688855931724582&receiver=1688854492669990&type=103&content=OPERATION"
+    resp = toolkit.send_lark_alert_for_human_intervention('测试', ack_url)
     print(resp)