接入美团AI客服平台需先在美团开放平台注册企业账号并完成AI客服资质审核,获取app_key和app_secret后调用/oauth2/token获取access_token(有效期2小时,须本地缓存),再通过POST application/json请求/v1/ai/chat等接口,携带Authorization头及严格JSON格式请求体(含非空query、UTF-8中文、session_id等),响应需逐层解析data.result.intents和data.result.answer,并处理code非0情况;PHP端须设置cURL超时、重试机制,自行维护session_id生命周期与会话上下文,避免并发token刷新冲突。

调用美团AI客服平台需要先申请API权限和获取凭证
美团AI客服平台不提供公开的PHP SDK,所有交互都基于HTTP请求,必须走官方开放平台申请接入。没拿到 access_token 和 app_key / app_secret,写再多代码也返回 401 Unauthorized 或 {"code":40001,"msg":"invalid app_key"}。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 去 美团开放平台 注册企业账号,进入「AI客服」模块提交资质审核(需营业执照、客服系统截图等)
- 审核通过后,在「应用管理」里创建应用,拿到
app_key和app_secret,再调用/oauth2/token接口换取短期有效的access_token -
access_token有效期2小时,PHP里必须做本地缓存(比如写入文件或Redis),不能每次请求都重新获取 - 注意:测试环境和生产环境的域名、接口路径不同,测试用
https://open-api-test.meituan.com,上线后切到https://open-api.meituan.com
发送用户问题要拼装标准JSON并带正确Header
美团AI客服的意图识别+智能问答接口(如 /v1/ai/chat)只接受 POST + application/json,且要求 Authorization: Bearer {access_token}。漏掉任意一项,就会卡在 400 Bad Request 或 403 Forbidden。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 用
curl_init()而非file_get_contents(),后者默认不支持自定义Header和JSON Body - 必须设置
Content-Type: application/json和Authorization,否则返回{"code":40005,"msg":"invalid authorization"} - 请求体是严格JSON结构,
query字段不能为空字符串,也不能含控制字符;中文要UTF-8编码,别用json_encode($arr, JSON_UNESCAPED_UNICODE)漏掉这个flag - 示例片段:
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'query' => '我想退昨天下的订单',
'session_id' => 'sess_abc123',
'user_id' => 'u_789'
], JSON_UNESCAPED_UNICODE));
响应解析要注意字段嵌套和错误码分层
美团返回的JSON不是扁平结构,核心结果藏在 data.result.intents(意图)和 data.result.answer(答案)里。直接 json_decode($res)->answer 会报错——因为顶层是 code、msg、data 三层,而 data 本身可能为 null。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 先检查
code === 0,再判断isset($data->result),最后取$data->result->answer,跳过任何一层都可能触发PHP Notice - 意图识别结果是数组,即使只匹配一个意图,也是
[{"intent":"refund","confidence":0.92}],别假设它是对象 - 常见非成功码:
code=20001表示语义理解失败(问法太模糊),code=50001是服务端超时,这时应重试而非抛异常 - 不要把
msg直接透传给前端用户,它含调试信息(如"timeout from nlu service"),应转成友好提示
PHP接入要考虑超时、重试和会话上下文维护
美团AI接口平均响应在300–800ms,但网络抖动或模型负载高时可能突破2s。PHP默认的cURL超时是0(无限),线上容易卡住整个FPM进程。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 强制设置
CURLOPT_TIMEOUT_MS => 3000,并捕获CURLE_OPERATION_TIMEDOUT错误,做最多1次重试(用指数退避不必要,美团不支持幂等ID) - 会话状态(
session_id)必须由你系统生成并持久化,美团只认这个字符串,不帮你维护多轮对话历史;想实现上下文连贯,得自己存前几轮query和answer传给下一次请求 - 别在单次请求里塞太多字段:美团对
query长度限制是512字符,超长会被截断,导致意图识别偏移 - 如果并发量大,
access_token获取和刷新要用互斥锁(如Redis SETNX),否则多个进程同时刷新会导致旧token失效、部分请求失败
最常被忽略的是 session_id 的生命周期管理——它不是一次性的,同一个用户连续提问应该复用,但跨天或用户登出后就得换新,否则美团后台会丢弃过期会话上下文,让“接着刚才说”变成“重新开始”。










