Вы можете попробовать что-то вроде этого, разместив отображение на Активы Twilio в качестве частного ресурса, но вы также можете перетащить эту информацию в Studio с помощью виджета HTTP-запроса, если вы разместили ее на внешнем сервере ( немного более продвинутый). В моем случае я вызвал сопоставление моего файла. 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"
}
]
Затем вы должны использовать виджет «Выполнить функцию» и отправить 3 пары ключ: значение (параметры функции):
С - {{trigger.message.From}}
К - {{trigger.message.To}}
Тело - {{trigger.message.Body}}
Ваша функция Twilio будет затем использовать эти параметры и содержимое частного ресурса для обработки сопоставления. Обязательно настройте свою среду Twilio Functions с пакетом Sendgrid NPM, @sendgrid/mail
версия 7.0.1
, и вы сконфигурируете две указанные ниже переменные окружения Sendgrid, специфицирующие c, с соответствующими значениями (доступ к которым осуществляется через объект контекста в 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();
}
};
Дайте мне знать, как это происходит.