node.js - twilio node.js 不发送短信
问题描述
我有以下代码作为 amazon sqs 事件的 lambda 触发器执行。
require('dotenv').config()
const client = require('twilio')(process.env.TWILIO_ACCOUNT_SID, process.env.TWILIO_AUTH_TOKEN);
exports.handler = async function (event, context) {
console.info('phoneNumber', event.Records[0].messageAttributes.Phone.stringValue);
console.info('smsContent', event.Records[0].body);
console.info('from phone number', process.env.TWILIO_PHONE_NUMBER);
console.info('TWILIO_ACCOUNT_SID', process.env.TWILIO_ACCOUNT_SID);
console.info('TWILIO_AUTH_TOKEN', process.env.TWILIO_AUTH_TOKEN);
sendMessage(event);
return context.logStreamName;
}
function sendMessage(event) {
client.messages
.create({
body: event.Records[0].body,
from: process.env.TWILIO_PHONE_NUMBER,
to: event.Records[0].messageAttributes.Phone.stringValue
})
.then(message => {
console.info('messageId', message.sid)
}
,
err => {
console.error('delivery error', err);
});
}
我在日志中检查了所有相关的 process.env 参数及其值是否正确。当 sendMessage 函数被执行时,没有输出。就好像它永远不会执行一样。
我遵循了他们的文件:
https://www.twilio.com/docs/sms/quickstart/node
它们非常简单,但代码无法执行。
解决方案
您无需等待承诺即可返回您的功能。
在您的处理程序中等待 sendMessage:
sendMessage(event)
应该成为await sendMessage(event)
更改您的 sendMessage 方法以返回承诺:
client.messages.create({...
应该成为return client.messages.create({...
工作版本:
exports.handler = async function (event, context) {
await sendMessage(event);
return context.logStreamName;
}
function sendMessage(event) {
return client.messages
.create({
body: event.Records[0].body,
from: process.env.TWILIO_PHONE_NUMBER,
to: event.Records[0].messageAttributes.Phone.stringValue
})
.then(message => {
console.info('messageId', message.sid)
})
.catch(err => {
console.error('delivery error', err);
})
}
推荐阅读
- c# - XmlSerializerOutputFormatter 和 XmlDataContractSerializerOutputFormatter 之间的区别
- java - 如何将 Android 应用程序连接到 MySQL 数据库?
- selenium - Xpath 选择第二个文本匹配而不是第一个并选择下一个元素
- azure - Azure Wrangling 数据流未出现
- mongodb - 如何获取记录,使我的输入是 ids 数组和集合字段只是 id 使用 mongodb 聚合
- r - 如何在R中将多个csv合并为一个csv文件?
- azure - Azure Keyvault 错误:尝试了以下 3 种方法来获取访问令牌,但都没有奏效
- powershell - 在 Send-MailMessage 的标题中添加一个计数器
- android - Qt 创建者集成器 ndk android
- flutter - 将方法移动到流构建器