Twilio 函数单独工作,但当我在 Studio Flows 中使用它们时它们无法正常工作
Posted
技术标签:
【中文标题】Twilio 函数单独工作,但当我在 Studio Flows 中使用它们时它们无法正常工作【英文标题】:Twilio Functions work individually but they do not work correctly when I use them in Studio Flows 【发布时间】: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 传递给函数,我需要将此信息作为参数传递,但我还没有找到方法这个。
【问题讨论】:
【参考方案1】:在运行函数小部件中,您可以添加参数。这些将显示在函数中的 event
对象上。
您可以将 Liquid 模板语法用于 Run Function 小部件中预期键的值
【讨论】:
您好,谢谢。我知道我可以添加参数,正如我在问题中提到的,我猜我需要将这些值作为参数传递。我的问题是如何正确地做到这一点。 Studio Flow 是否看到“事件”变量,例如 event.From?【参考方案2】:Twilio 支持帮助我解决了这个问题。 我在函数中添加了以下函数参数:
功能 #1: 键:主体 值:trigger.message.Body
功能 #2: 关键字:发件人 值:trigger.message.From
这样,这两个功能都可以在流程中完美运行。
【讨论】:
以上是关于Twilio 函数单独工作,但当我在 Studio Flows 中使用它们时它们无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
Twilio 的 PHP 代码在终端中工作,但在浏览器中不工作
使用 Zapier Webhook 触发 Twilio 工作室流程