import { Button, Text } from '@tarojs/components'; import type { ReactNode } from 'react'; export type ContactCsSessionContext = { orderId?: string; orderNo?: string; from?: string; }; type ContactCsButtonProps = { className?: string; children?: ReactNode; /** 客服会话来源上下文,便于客服后台识别 */ session?: ContactCsSessionContext; }; const isWeapp = process.env.TARO_ENV === 'weapp'; /** 组装 session-from(微信限制约 1000 字符) */ export function buildCsSessionFrom(session?: ContactCsSessionContext): string { if (!session) return 'dukang|from=mini-user'; const parts = ['dukang']; if (session.from) parts.push(`from=${session.from}`); if (session.orderNo) parts.push(`orderNo=${session.orderNo}`); if (session.orderId) parts.push(`orderId=${session.orderId}`); return parts.join('|'); } /** * 微信小程序客服入口(open-type=contact)。 * 非 weapp 环境不渲染,由调用方走电话等兜底。 */ export default function ContactCsButton({ className = '', children = '联系在线客服', session, }: ContactCsButtonProps) { if (!isWeapp) return null; return ( ); }