阿里云物联网上传的电话号以及其他信息通过云产品流转到函数计算通过函数计算调用阿里云的短信服务以后实现数据上传后自动发送短信的功能现在遇到一个问题就是这个event
老是格式不对,可能是数据格式有问题我现在不知道那一步环节出了错误,如果把参数换成具体的字符串就可以正常运行。请各位大佬解惑。
下面是运行代码
'use strict';
// 引入必要的阿里云短信服务相关依赖包
const Dysmsapi20170525 = require('@alicloud/dysmsapi20170525');
const OpenApi = require('@alicloud/openapi-client');
const Util = require('@alicloud/tea-util');
// 使用AK&SK初始化账号Client,用于访问短信服务
function createClient() {
let config = new OpenApi.Config({
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'], // 从环境变量获取Access Key ID,需提前设置好环境变量
accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'], // 从环境变量获取Access Key Secret,需提前设置好环境变量
});
config.endpoint = 'dysmsapi.aliyuncs.com';
return new Dysmsapi20170525.default(config);
}
// 函数计算的入口函数,即handler函数
exports.handler = async function (event, context) {
try {
const phoneNumbers = event.items.Num.value;
const dat = event.items.DA.value;
// 初始化短信服务客户端
let client = createClient();
let sendSmsRequest = new Dysmsapi20170525.SendSmsRequest({
signName: '快递柜kj',
templateCode: 'SMS_475965370',
phoneNumbers: phoneNumbers,
templateParam: JSON.stringify({ code: "1234", pick_up_code: dat }), // 此处也建议改为正确的JSON格式设置模板参数
});
let runtime = new Util.RuntimeOptions({});
// 调用短信服务发送短信
await client.sendSmsWithOptions(sendSmsRequest, runtime);
return {
statusCode: 200,
body: '短信发送成功'
};
} catch (error) {
console.log(error);
return {
statusCode: 500,
body: '短信发送失败,原因:' + error.message
};
}
};
这是近期日志
(reading 'Num')
at exports.handler (/code/index.js:21:42)
2024-12-09 22:25:29FC Invoke End RequestId: 1866126260414860288, Error: Function timed out after 60 seconds (maxMemoryUsage: 15MB)
2024-12-09 22:25:29FC Invoke Start RequestId: 1866126260414860288
2024-12-09 22:25:29load code for handler:index.handler
2024-12-09 22:25:292024-12-09 22:25:29 1866126260414860288 [verbose] TypeError: Cannot read properties of undefined (reading 'Num')
at exports.handler (/code/index.js:21:42)
2024-12-09 22:26:06FC Invoke End RequestId: 1866126667916703744, Error: Function timed out after 60 seconds (maxMemoryUsage: 15MB)
2024-12-09 22:26:06FC Invoke Start RequestId: 1866126667916703744
2024-12-09 22:26:06load code for handler:index.handler
2024-12-09 22:26:062024-12-09 22:26:06 1866126667916703744 [verbose] TypeError: Cannot read properties of undefined (reading 'Num')
at exports.handler (/code/index.js:21:42)
2024-12-09 22:26:29FC Invoke End RequestId: 1866126260414860288, Error: Function timed out after 60 seconds (maxMemoryUsage: 15MB)
2024-12-09 22:27:06FC Invoke End RequestId: 1866126667916703744, Error: Function timed out after 60 seconds (maxMemoryUsage: 15MB)
2024-12-09 22:27:07FC Invoke Start RequestId: 1866126667916703744
2024-12-09 22:27:07load code for handler:index.handler
2024-12-09 22:27:072024-12-09 22:27:07 1866126667916703744 [verbose] TypeError: Cannot read properties of undefined (reading 'Num')
at exports.handler (/code/index.js:21:42)
2024-12-09 22:28:07FC Invoke End RequestId: 1866126667916703744, Error: Function timed out after 60 seconds (maxMemoryUsage: 15MB)
这是数据流转日志
解析器脚本如下
从你提供的日志信息来看,你的函数计算(Function Compute, FC)服务遇到了两个主要问题:
TypeError: Cannot read properties of undefined (reading 'Num')
这个错误表明在尝试读取名为 Num 的属性时,该对象是 undefined。这通常意味着代码期望的对象没有被正确初始化或传递,导致它在尝试访问其属性时为 undefined。
Function timed out after 60 seconds
函数计算服务有一个默认的超时设置,如果函数在这个时间内没有完成执行,将会被强制终止。日志显示你的函数每次都在60秒后因超时而结束。
也就是exports.handler这段函数获取的有问题,建议print打印输出看下
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。