【发布时间】:2022-01-23 03:07:05
【问题描述】:
我创建了几个可以自己正常工作的函数。
功能 #1 - 短信到电子邮件。这会在 Twilio 号码收到短信后发送一封电子邮件:
const got = require('got');
exports.handler = function(context, event, callback) {
const requestBody = {
personalizations: [{ to: [{ email: context.TO_EMAIL_ADDRESS }] }],
from: { email: context.FROM_EMAIL_ADDRESS },
subject: `New SMS message from: ${event.From}`,
content: [
{
type: 'text/plain',
value: event.Body
}
]
};
got.post('https://api.sendgrid.com/v3/mail/send', {
headers: {
Authorization: `Bearer ${context.SENDGRID_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify(requestBody)
})
.then(response => {
let twiml = new Twilio.twiml.MessagingResponse();
callback(null, twiml);
})
.catch(err => {
callback(err);
});
};
功能 #2 - 转发短信。这会将在 Twilio 号码收到的短信转发到两个手机号码:
exports.handler = function (context, event, callback) {
const twiml = new Twilio.twiml.MessagingResponse();
twiml.message(`From: ${event.From}. Body: ${event.Body}`, {
to: context.ASDA_PHONE_NUMBER,
});
twiml.message(`From: ${event.From}. Body: ${event.Body}``, {
to: context.MY_PHONE_NUMBER,
});
callback(null, twiml);
};
当直接链接到号码作为唯一响应传入 SMS 的服务或功能时,这两个功能都可以正常工作。
但是,当我在带有运行功能小部件的 Studio Flow 中使用这些功能时,它们无法按预期工作。功能 #1 根本不起作用。函数 #2 部分工作,但似乎 event.From 和 event.Body 变量未定义,手机收到的 SMS 消息文本显示为“From: undefined. Body: undefined”。
这是带有两个 Run Function 小部件的 Studio Flow 结构:
Structure of the Studio Flow with a Run Function widget for each function
似乎上下文数据,如 context.MY_PHONE_NUMBER 可以访问这些功能。否则第二个功能将无法转发短信。但是,函数似乎无法访问事件数据,例如 event.From。
我猜测函数(上下文、事件、回调)中的“事件”参数没有被 Studio Flow 传递给函数,我需要将此信息作为参数传递,但我还没有找到方法这个。
【问题讨论】: