【问题标题】:Twilio and Sendgrid - Incoming SMSTwilio 和 Sendgrid - 接收短信
【发布时间】:2020-08-08 04:09:03
【问题描述】:

目前,我们通过 MS Flow 和 Twilio 发送单向短信,效果很好。我一直在探索如何处理收到的短信,所以我按照指南并设法利用 Sendgrid 将收到的短信转发到我的电子邮件地址,这也可以。

但是,我希望原始发件人通过电子邮件接收 SMS。我可以给每个员工他们自己的电话号码,这将定义每个人,但我需要一种 Twilio 或 Sendgrid 在发送回复电子邮件之前进行查找的方式,以便它知道将其发送到哪里,即

User 1 = 01234455678, 
User 2 = 01234543245,
User 3 = 06546546445,...etc.

我想我可以为每个数字重新创建相同的过程,但它需要大量的 Twilio 函数和变量,这似乎不是实现此目的的好方法?

对不起,我不是一个编码员,并尽量使用在线指南和论坛。

非常感谢, JP

【问题讨论】:

    标签: twilio sms sendgrid


    【解决方案1】:

    您可以尝试这样的操作,将 Twilio Assets 上的映射作为私有资产托管,但如果您将其托管在外部服务器上,您也可以通过 HTTP 请求小部件将这些信息拉入 Studio(更高级一些)。就我而言,我调用了具有以下格式的文件 mapping.json:

    [
      {
      "name": "John Doe",
      "phone": "+14075551212",
      "email": "jdoe@example.com"
      },
      {
      "name": "Susan Doe",
      "phone": "+19545551212",
      "email": "sdoe@example.com"
      },
      {
      "name": "Nadia Doe",
      "phone": "+14705551212",
      "email": "ndoe@example.com"
      },
      {
      "name": "Carl Doe",
      "phone": "+18025551212",
      "email": "cdoe@example.com"
      }  
    ]
    

    然后您将使用 Run Function 小部件并发送 3 个键:值对(函数参数):

    来自 - {{trigger.message.From}} 致-{{trigger.message.To}} 正文 - {{trigger.message.Body}}

    然后,您的 Twilio 函数将使用这些参数和私有资产的内容来处理映射。确保使用 Sendgrid NPM 包 configure 您的 Twilio Functions 环境,@sendgrid/mail 版本 7.0.1 并使用它们各自的值配置下面的两个 Sendgrid 特定环境变量(通过 JavaScript 中的上下文对象访问):

    SENDGRID_API_KEY

    FROM_EMAIL_ADDRESS

    const fs = require('fs');
    const sgMail = require('@sendgrid/mail');
    
    exports.handler = function(context, event, callback) {
    
        let from = event.From;
        let to = event.To;
        let body = event.Body;
    
        let fileName = 'mapping.json';
        let file = Runtime.getAssets()[fileName].path;
        let text = fs.readFileSync(file);
        let mappings  = JSON.parse(text);
    
        // Filter array to match to number
        let result = mappings.filter(record => record.phone === to);
    
        if (result.length) {
    
        sgMail.setApiKey(context.SENDGRID_API_KEY);
            // Define message params
            const msg = {
              to: result[0].email,
              from: context.FROM_EMAIL_ADDRESS,
              text: body,
              subject: `New SMS from: ${from}`,
            };
            // Send message
            sgMail.send(msg)
            .then(response => {
                console.log("Success.");
                callback();
            })
            .catch(err => {
                console.log("Not Success.");
                callback(err);
            });
        } else {
        console.log("** NO MATCH **");
        callback();
        }
    }; 
    

    告诉我进展如何。

    【讨论】:

    • 感谢 Alan 的回复,绅士。我会试一试,并随时通知您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    • 2016-04-10
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多