PHP如何接入金山WPSAI_传文档内容调润色接口优化文本【妙招】

6次阅读

WPS AI 文档润色接口需用 client_id 和 client_secret 换取 Bearer Token,且 content 字段须为纯文本或 HTML 字符串(非文件),长度≤10000 字符,Content-Type 为 application/json。

PHP 如何接入金山 WPSAI_传文档内容调润色接口优化文本【妙招】

WPS AI 文档润色接口的认证方式怎么配

WPS AI 的 /v1/document/polish 接口要求使用 Bearer Token 认证,这个 token 不是直接在控制台复制的 API Key,而是要先用 client_idclient_secrethttps://api.wps.cn/oauth2/token 换取。跳过这步直接填 API Key 会返回 401 Unauthorized

实操建议:

立即学习 PHP 免费学习笔记(深入)”;

  • 在 WPS 开放平台(open.wps.cn)创建应用后,拿到 client_idclient_secret
  • curl 或 PHP 的 file_get_contents() + stream_context_create() 发起 POST 请求获取 access_token
  • 注意 access_token 有效期为 2 小时,需本地缓存并自动刷新,不能每次请求都重新取
  • Token 请求体必须是 application/x-www-form-urlencoded,不是 JSON

PHP 怎么传 Word 文档内容给 WPS AI 润色

WPS AI 的润色接口不接收二进制文件(如 .docx),只接受纯文本或 HTML 格式的文档内容,且要求字段名为 content,不是 filetext。传错字段名会返回 400 Bad Request 并提示 "content is required"

实操建议:

立即学习 PHP 免费学习笔记(深入)”;

  • 若原始是 .docx 文件,先用 phpoffice/phpwordaspose-words-cloud 解析提取正文,避免直接读取 ZIP 内容导致格式错乱
  • HTML 内容需做基础清洗:移除 style 属性、冗余空格,否则可能触发内容过滤
  • 字符长度限制为 10,000 字符(含标点和空格),超长需分段处理,但注意段落逻辑连贯性
  • 必须指定 Content-Type: application/json,且整个请求体是 JSON 字符串
{"content": "今天天气很好,我们一起去公园散步。公园里有很多花,非常漂亮。",   "type": "text"}

调用 wps_ai_polish() 时常见的 HTTP 错误怎么排查

PHP 中用 curl_exec() 调用失败时,光看 false 返回值没用,必须检查 curl_error()curl_getinfo($ch, CURLINFO_HTTP_CODE)。WPS AI 接口常见错误不是 5xx,而是 4xx 静态码,对应不同语义:

  • 400:JSON 格式错误、content 字段缺失、type 值非法(只接受 "text""html"
  • 401:token 过期或签名无效,检查是否用了 Bearer 前缀(注意后面有个空格)
  • 429:QPS 超限,免费版默认 5 次 / 秒,不要在循环里密集请求
  • 500:服务端临时异常,加 sleep(1) 后重试最多 2 次即可,别死循环

建议封装一个带日志和重试的请求函数,而不是裸写 curl

返回的润色结果怎么安全转成 UTF-8 并保留换行

WPS AI 返回的 JSON 中 result 字段是字符串,但可能含 n、rn 或 HTML
。PHP 默认 json_decode() 会正确解析 n,但若原始内容来自 Windows 环境的 Word,换行可能被转成 rn,直接 echo 到网页会塌成一行。

实操建议:

立即学习 PHP 免费学习笔记(深入)”;

  • json_decode($response, true) 解析,再对 $data['result']str_replace(["rn", "r"], "n", $text)
  • 输出到网页前,用 nl2br(htmlspecialchars($text)),防止 XSS;若要保留原始排版(如缩进),改用
    
    

    包裹

  • 注意 WPS AI 可能返回空格缩进的段落,trim() 会误删,建议只清理首尾空白

真正容易被忽略的是 token 刷新机制和 content 字段的格式边界——它不接受 base64、不支持 multipart、不校验文档结构,只认干净的字符串。接口看着简单,卡在这两处的人最多。

text=ZqhQzanResources