interface ApiHeader { name: string value: string description: string required: boolean } interface ApiParameter { name: string type: string description: string required: boolean } interface ApiEndpoint { method: string url: string description: string headers: ApiHeader[] parameters: ApiParameter[] response: any } interface CodeExample { language: string title: string code: string } interface ApiGuide { title: string description: string endpoints: ApiEndpoint[] examples: CodeExample[] } export function getApiGuideForScenario(scenarioId: string, channel: string): ApiGuide { const baseUrl = typeof window !== "undefined" ? window.location.origin : "" const webhookUrl = `${baseUrl}/api/scenarios/${channel}/${scenarioId}/webhook` return { title: `${getChannelName(channel)}获客计划接口文档`, description: `通过此接口,您可以将外部系统收集的客户信息直接导入到存客宝的${getChannelName(channel)}获客计划中。`, endpoints: [ { method: "POST", url: webhookUrl, description: "添加新客户到获客计划", headers: [ { name: "X-API-KEY", value: "您的API密钥", description: "用于身份验证的API密钥", required: true, }, { name: "Content-Type", value: "application/json", description: "请求体格式", required: true, }, ], parameters: [ { name: "name", type: "string", description: "客户姓名", required: true, }, { name: "phone", type: "string", description: "客户手机号码", required: true, }, { name: "source", type: "string", description: "客户来源", required: false, }, { name: "remark", type: "string", description: "备注信息", required: false, }, { name: "tags", type: "array", description: "客户标签", required: false, }, ], response: { success: true, data: { id: "12345", name: "张三", phone: "13800138000", createdAt: "2023-05-15T08:30:00Z", }, message: "客户添加成功", }, }, { method: "GET", url: `${webhookUrl}?name=张三&phone=13800138000`, description: "通过GET请求添加新客户(适用于简单集成场景)", headers: [ { name: "X-API-KEY", value: "您的API密钥", description: "用于身份验证的API密钥", required: true, }, ], parameters: [ { name: "name", type: "string", description: "客户姓名", required: true, }, { name: "phone", type: "string", description: "客户手机号码", required: true, }, { name: "source", type: "string", description: "客户来源", required: false, }, { name: "remark", type: "string", description: "备注信息", required: false, }, ], response: { success: true, data: { id: "12345", name: "张三", phone: "13800138000", createdAt: "2023-05-15T08:30:00Z", }, message: "客户添加成功", }, }, ], examples: [ { language: "curl", title: "CURL", code: `curl -X POST "${webhookUrl}" \\ -H "X-API-KEY: your_api_key" \\ -H "Content-Type: application/json" \\ -d '{ "name": "张三", "phone": "13800138000", "source": "官网表单", "remark": "对产品很感兴趣" }'`, }, { language: "python", title: "Python", code: `import requests url = "${webhookUrl}" headers = { "X-API-KEY": "your_api_key", "Content-Type": "application/json" } data = { "name": "张三", "phone": "13800138000", "source": "官网表单", "remark": "对产品很感兴趣" } response = requests.post(url, headers=headers, json=data) print(response.json())`, }, { language: "javascript", title: "JavaScript", code: `// 使用fetch API fetch("${webhookUrl}", { method: "POST", headers: { "X-API-KEY": "your_api_key", "Content-Type": "application/json" }, body: JSON.stringify({ name: "张三", phone: "13800138000", source: "官网表单", remark: "对产品很感兴趣" }) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error("Error:", error));`, }, { language: "java", title: "Java", code: `import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; public class ApiExample { public static void main(String[] args) { try { String url = "${webhookUrl}"; String requestBody = "{" + "\\\"name\\\": \\\"张三\\\"," + "\\\"phone\\\": \\\"13800138000\\\"," + "\\\"source\\\": \\\"官网表单\\\"," + "\\\"remark\\\": \\\"对产品很感兴趣\\\"" + "}"; HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(url)) .header("X-API-KEY", "your_api_key") .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString(requestBody)) .build(); HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body()); } catch (Exception e) { e.printStackTrace(); } } }`, }, { language: "php", title: "PHP", code: ` '张三', 'phone' => '13800138000', 'source' => '官网表单', 'remark' => '对产品很感兴趣' ); $options = array( 'http' => array( 'header' => "X-API-KEY: your_api_key\\r\\nContent-type: application/json\\r\\n", 'method' => 'POST', 'content' => json_encode($data) ) ); $context = stream_context_create($options); $result = file_get_contents($url, false, $context); if ($result === FALSE) { echo "Error"; } else { var_dump(json_decode($result)); } ?>`, }, ], } } function getChannelName(channel: string): string { const channelMap: Record = { douyin: "抖音", kuaishou: "快手", xiaohongshu: "小红书", weibo: "微博", haibao: "海报", phone: "电话", gongzhonghao: "公众号", weixinqun: "微信群", payment: "付款码", api: "API", } return channelMap[channel] || channel }