ForcePilot/backend/package/yuxi/channel/extensions/intercom/constants.py

73 lines
2.5 KiB
Python
Raw Normal View History

INTERCOM_API_BASES = {
"us": "https://api.intercom.io",
"eu": "https://api.eu.intercom.io",
"au": "https://api.au.intercom.io",
}
DEFAULT_DATACENTER = "us"
INTERCOM_API_VERSION = "2.15"
INTERCOM_DEFAULT_TIMEOUT = 30.0
INTERCOM_MAX_RETRIES = 3
INTERCOM_RETRY_BASE_DELAY = 1.0
INTERCOM_RETRY_MAX_DELAY = 8.0
INTERCOM_DEDUPE_TTL_SECONDS = 60
INTERCOM_DEDUPE_MAX_SIZE = 10000
INTERCOM_TEXT_CHUNK_LIMIT = 40000
INTERCOM_BLOCK_STREAMING_CHUNK_MIN_CHARS = 500
INTERCOM_BLOCK_STREAMING_CHUNK_MAX_CHARS = 2000
INTERCOM_WEBHOOK_TOPICS_HANDLED = frozenset(
[
# 用户消息事件
"conversation.user.created",
"conversation.user.replied",
# 管理员事件P0 新增)
"conversation.admin.closed",
"conversation.admin.opened",
"conversation.admin.snoozed",
"conversation.admin.unsnoozed",
"conversation.admin.assigned",
"conversation.admin.replied",
"conversation.admin.single.created",
# 其他 Bot / Operator 回复P0 新增)
"conversation.operator.replied",
# 会话状态事件P1 新增)
"conversation.deleted",
"conversation.priority.updated",
"conversation.rating.added",
"conversation.read",
# 消息事件P1 新增)
"conversation_part.redacted",
"conversation_part.tag.created",
]
)
INTERCOM_CONVERSATION_STATES = frozenset(["open", "snoozed", "closed"])
INTERCOM_PART_TYPES = frozenset(["comment", "note", "assignment", "close", "open", "snooze"])
INTERCOM_DM_POLICY_OPEN = "open"
INTERCOM_DM_POLICY_PAIRING = "pairing"
INTERCOM_DM_POLICY_ALLOWLIST = "allowlist"
INTERCOM_DM_POLICY_DISABLED = "disabled"
INTERCOM_HANDOFF_POLICY_IGNORE = "ignore"
INTERCOM_HANDOFF_POLICY_NOTE_ONLY = "note_only"
INTERCOM_HANDOFF_POLICY_CONTINUE = "continue"
INTERCOM_AGENT_PROMPT_RULES = [
"Your response will be sent to Intercom Messenger as an admin reply.",
"The message format is HTML. Use <strong> for bold, <em> for italic.",
'Use <a href="URL">text</a> for links.',
"Use <ul><li>item</li></ul> for unordered lists.",
"Use <ol><li>item</li></ol> for ordered lists.",
"Use <code> for inline code and <pre><code> for code blocks.",
"Do not use markdown headings (use <p><strong>heading</strong></p> instead).",
"Do not use pipe tables (use <pre> for table-like text).",
"Keep responses friendly, professional, and solution-oriented.",
"Identify yourself as an AI assistant when relevant.",
]