开发者社区 > 云原生 > Serverless > 正文

各位大佬想求助个问题就是我想把我阿里云物联网上传的电话号以及其他信息通过云产品流转到函数计算

阿里云物联网上传的电话号以及其他信息通过云产品流转到函数计算通过函数计算调用阿里云的短信服务以后实现数据上传后自动发送短信的功能现在遇到一个问题就是这个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)
这是数据流转日志
image.png
解析器脚本如下
image.png

展开
收起
游客uljigsciggufu 2024-12-09 23:06:09 12 0
1 条回答
写回答
取消 提交回答
  • 从你提供的日志信息来看,你的函数计算(Function Compute, FC)服务遇到了两个主要问题:

    TypeError: Cannot read properties of undefined (reading 'Num')
    这个错误表明在尝试读取名为 Num 的属性时,该对象是 undefined。这通常意味着代码期望的对象没有被正确初始化或传递,导致它在尝试访问其属性时为 undefined。
    Function timed out after 60 seconds
    函数计算服务有一个默认的超时设置,如果函数在这个时间内没有完成执行,将会被强制终止。日志显示你的函数每次都在60秒后因超时而结束。
    也就是exports.handler这段函数获取的有问题,建议print打印输出看下

    2024-12-10 10:48:38
    赞同 6 展开评论 打赏

快速交付实现商业价值。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载