uni-app 短信发送出错,单纯调用uniCloud.sendSms会报keyid参数错误

发布于 1周前 作者 nodeper 来自 Uni-App

uni-app 短信发送出错,单纯调用uniCloud.sendSms会报keyid参数错误

示例代码:

'use strict';  
exports.main = async (event, context) => {  
    //event为客户端上传的参数  
    console.log('event : ', event)  
    const resss = await uniCloud.sendSms({  
      appid: '__UNI__557671B',  
        phone: '1525922****',  
        templateId: '323**',  
        data: { code: '661296', name: '***', action: '身份验证', expMinute: '3' }  
      })  
    //返回数据给客户端  
    return event  
};

操作步骤:

'use strict';  
exports.main = async (event, context) => {  
    //event为客户端上传的参数  
    console.log('event : ', event)  
    const resss = await uniCloud.sendSms({  
      appid: '__UNI__557671B',  
        phone: '1525922****',  
        templateId: '323**',  
        data: { code: '661296', name: '***', action: '身份验证', expMinute: '3' }  
      })  
    //返回数据给客户端  
    return event  
};

预期结果:

发送成功

实际结果:

{
"success": false,
"error": {
"code": "FunctionBizError",
"message": "50003:参数错误:keyId"
}
}

bug描述:

本地运行正常 云端就会报错 就只uniCloud.sendSms都会报错


2 回复

已在im报障群里沟通


在uni-app中使用uniCloud发送短信时遇到keyid参数错误的问题,通常是因为在调用uniCloud.sendSms方法时未正确传递或配置keyid参数。keyid是用于标识云函数发送短信时所依赖的短信服务配置的唯一标识。以下是一个修正后的代码示例,展示了如何在uni-app中正确配置和使用uniCloud.sendSms发送短信。

首先,确保你已经在uniCloud的数据库中配置了短信服务,并获取了相应的keyid。假设你已经配置好了一个名为smsConfig的云函数配置,其中包含了正确的短信服务信息。

步骤 1: 配置云函数

cloudfunctions目录下创建一个名为sendSms的云函数,并在其index.js中编写以下代码:

// 云函数入口文件
const cloud = require('wx-server-sdk');
cloud.init();
const db = cloud.database();

exports.main = async (event, context) => {
  const { phoneNumber, templateId, data } = event;
  const res = await cloud.openapi.security.sendSms({
    phone: phoneNumber,
    templateId: templateId,
    data: data,
    uniCloudEnv: 'your-uni-cloud-env-id', // 替换为你的uniCloud环境ID
    keyid: 'your-keyid', // 替换为你的短信服务配置的keyid
  });
  return res;
};

步骤 2: 在前端调用云函数

在你的uni-app前端代码中,通过uniCloud.callFunction调用上述云函数,并传递必要的参数:

uniCloud.callFunction({
  name: 'sendSms',
  data: {
    phoneNumber: '12345678901', // 替换为目标手机号
    templateId: 'TEMPLATE_ID', // 替换为你的短信模板ID
    data: {
      code: '123456', // 短信模板中的变量数据
      // 其他变量数据...
    },
  },
  success: (res) => {
    console.log('短信发送成功:', res.result);
  },
  fail: (err) => {
    console.error('短信发送失败:', err);
  },
});

注意事项

  1. 确保uniCloudEnvkeyid正确无误,并且与你在uniCloud后台配置的短信服务相匹配。
  2. phoneNumber需要是合法的手机号码格式。
  3. templateIddata需要与你在短信服务平台上配置的模板相匹配。

通过以上步骤,你应该能够解决keyid参数错误的问题,并成功发送短信。如果问题依旧存在,请检查uniCloud后台的配置是否有误或联系uniCloud技术支持。

回到顶部