1***@qq.com
1***@qq.com
  • 发布:2026-05-14 14:19
  • 更新:2026-05-14 14:19
  • 阅读:21

调用云函数进行在线推送成功了,消息也收到了,但是在云函数URL化这里,复制链接在postman上调用提示缺少 CID 参数

分类:云服务

调用云函数进行在线推送成功了,消息也收到了,但是在云函数URL化这里,复制链接在postman上调用提示缺少 CID 参数
'use strict'
const uniPush = uniCloud.getPushManager({
appId: 'UNIxxxxxxx'
})

exports.main = async (event) => {
const { cid, title, content, payload,settings } = event

try {
const result = await uniPush.sendMessage({
push_clientid: cid, // ← 使用前端传来的 CID
force_notification: true,
settings: settings,
title: title || '通知标题1',
content: content || '通知内容1',
payload: payload || {}
})
return { code: 200, msg: '推送成功', data: result }
} catch (e) {
return { code: 500, msg: '推送失败', error: e.message }
}
}
在云函数URL化这里,复制链接在postman上调用提示缺少 CID 参数。收不到推送。同时云函数已经部署上传了。这是什么原因导致的呢

2026-05-14 14:19 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uniCloud 官方技术交流群 ) 咨询,群中有相关专业的管理员和群友。

云函数URL化后,通过HTTP请求调用时,参数的传递方式和位置会发生变化。你现在的代码直接从event对象顶层解构cid等参数,这在uniCloud.callFunction调用时没问题,但URL化后参数并不在顶层。

根据知识库中的信息,URL化后获取请求参数的方式不同,需要根据请求类型(GET/POST)从event的不同属性中获取。

问题原因
使用uniCloud.callFunction时,参数会直接放在event对象上。但云函数URL化后,参数的位置取决于HTTP请求的方法和Content-Type:

  • GET请求的参数在event.queryStringParameters中。
  • POST请求(如JSON格式)的参数在event.body中,并且可能是Base64编码的。

正确写法参考
你需要修改云函数代码,从正确的位置解析参数。以下是一个适配URL化(POST JSON请求)的示例:

'use strict'  
const uniPush = uniCloud.getPushManager({  
  appId: '__UNI__xxxxxxx'    
})  

exports.main = async (event) => {  
  // URL化获取参数的方式  
  let body = event.body  
  if(event.isBase64Encoded) {  
    body = Buffer.from(body, 'base64').toString()  
  }  
  const params = JSON.parse(body)  

  const { cid, title, content, payload, settings } = params  

  if (!cid) {  
    return { code: 400, msg: '缺少cid参数' }  
  }  

  try {  
    const result = await uniPush.sendMessage({  
      push_clientid: cid,  
      force_notification: true,  
      settings: settings,  
      title: title || '通知标题1',  
      content: content || '通知内容1',  
      payload: payload || {}  
    })  
    return { code: 200, msg: '推送成功', data: result }  
  } catch (e) {  
    return { code: 500, msg: '推送失败', error: e.message }  
  }  
}

本助手使用国产模型,生成代码准确率较低。强烈建议使用uni-agent生成代码

建议步骤

  1. 按上述方式修改云函数代码并重新上传部署。
  2. 在Postman中调用时,确保选择POST方法,并在Body中选择rawJSON格式,填写参数如:{"cid": "你的客户端推送标识", "title": "测试标题", "content": "测试内容"}
  3. 如果仍有疑问,可以在云函数开头增加console.log('event:', event),然后查看云函数日志,确认URL化后event对象的具体结构。

关于云函数URL化获取参数的详细说明,请参考官方文档:云函数URL化

内容为 AI 生成,仅供参考

要回复问题请先登录注册