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 Studio

Twilio 的 PHP 代码在终端中工作,但在浏览器中不工作

Jquery 1.4:两个函数不能在同一页面上一起工作

使用 Zapier Webhook 触发 Twilio 工作室流程

Android Studio 无法识别三星 Galaxy S8

Twilio 传入的短信在 Zoho CRM 中不起作用