uni-app uni-admin 短息发送报错 sendSms 方法错误代码 50003

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

uni-app uni-admin 短息发送报错 sendSms 方法错误代码 50003

操作步骤:

  • 问题1复现:登录uni-admin,系统管理-用户关联,群发短信,导入模板
  • 问题2复现:填写模版数据后,点击发送短信

预期结果:

  • 问题1预期结果:成功导入模板
  • 问题2预期结果:成功发送短信

实际结果:

bug描述:

  • uniadmin-短信导入模板报错 ,错误信息“请先配置smsKey和smsSecret(http://localhost:5173/admin/@fs/G:/Users/pc/Downloads/HBuilderX.3.3.13.20220314/HBuilderX/plugins/uniapp-cli-vite/node_modules/@dcloudio/uni-cloud/dist/uni-cloud.es.js:2953:22)” | 开发环境 | 版本号 | 项目创建方式 | | — | — | — | | HBuilder X | 4.29 | - | | uni-id-common | 1.0.18 | - | | uni-id-pages | 1.1.20 | - | | uni-starter | 2.2.0 | - | | uni-admin | 2.4.17 | - |

  • 问题追踪:smsConfig 值为空,将 以下代码注释后可导入短信模板

    if (!smsConfig.smsKey || smsConfig.smsKey.length <= 20 || !smsConfig.smsSecret  || smsConfig.smsSecret.length <= 20) {
    hthrow new Error('请先配置smsKey和smsSecret')
    }
    
  • 短息发送,sendSms 方法报错,错误代码50003,参数错误:appid,具体方法uniCloud\cloudfunctions\uni-sms-co\index.obj.js目录下的 sendSms ,排查日志,已获取到appid 数据结构

    sendSms-task {
      _id: '67287367ce5ec9aad519bc29',
      app_id: 'UNIA061211',
      name: '123',
      template_id: '34048',
      template_content: '您的验证码为${code},该验证码${expMinute}分钟内有效,请勿泄露于他人',
      vars: [
        { field: 'code', value: '23' },
        { field: 'expMinute', value: '33' }
      ],
      to: { type: 'user', receiver: [ '670cbd65bd0220786d9dd98e' ] },
      send_qty: 1,
      success_qty: 0,
      fail_qty: 0,
      create_date: 1730704231889
    }
    
    sendData {
      appId: 'UNIA061211',
      templateId: '34048',
      data: { code: '23', expMinute: '33' },
      phone: '15666905633'
    }
    


2 回复

sendSms 方法的 sendData 对象,appId要改为appid小写。。。
let sendData = { appid: task.app_id, // smsKey: smsConfig.smsKey, // smsSecret: smsConfig.smsSecret, templateId: task.template_id, data: {} };


在处理 uni-appuni-admin 中的短信发送功能时遇到 sendSms 方法错误代码 50003 通常指示后端服务在处理短信发送请求时遇到了问题。错误代码 50003 可能是自定义的错误码,具体含义需要参考你的后端服务或短信服务提供商的文档。不过,我可以提供一个基本的代码示例,展示如何在 uni-app 中调用 uni-admin 提供的短信发送接口,并处理可能的错误情况。

首先,确保你的 uni-admin 后端已经正确配置了短信服务提供商(如阿里云短信、腾讯云短信等),并且有一个可用的 sendSms 接口。

uni-admin 后端代码示例(Node.js)

假设你使用的是 Node.js 和 Express 框架,并且已经集成了短信服务SDK:

const express = require('express');
const app = express();
const smsService = require('./smsService'); // 假设这是你的短信服务封装

app.post('/api/sendSms', async (req, res) => {
    try {
        const { phoneNumber, templateId, templateParams } = req.body;
        await smsService.sendSms(phoneNumber, templateId, templateParams);
        res.status(200).json({ success: true });
    } catch (error) {
        console.error('Send SMS error:', error);
        res.status(500).json({ success: false, errorCode: 50003, message: error.message });
    }
});

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});

uni-app 前端代码示例

uni-app 中,你可以使用 uni.request 来调用上述 sendSms 接口:

uni.request({
    url: 'http://localhost:3000/api/sendSms', // 根据实际情况调整URL
    method: 'POST',
    data: {
        phoneNumber: '12345678901',
        templateId: 'TEMPLATE_ID',
        templateParams: { code: '123456' }
    },
    success: (res) => {
        if (res.data.success) {
            uni.showToast({ title: '短信发送成功', icon: 'success' });
        } else {
            uni.showToast({ title: `发送失败: ${res.data.message}`, icon: 'none' });
            console.error('Send SMS failed with errorCode:', res.data.errorCode);
        }
    },
    fail: (err) => {
        uni.showToast({ title: '请求失败', icon: 'none' });
        console.error('Request failed:', err);
    }
});

这个示例展示了如何构建和调用短信发送接口,并处理可能的错误响应。确保在实际应用中,根据你的短信服务提供商的API文档调整相关参数和错误处理逻辑。同时,注意在生产环境中不要硬编码敏感信息,如电话号码和模板ID,应使用安全的方式管理这些信息。

回到顶部