Nexmo:接收短信

Nexmo: Receiving SMSes

作为 Nexmo 的新手,我发现了一种使用 Firebase 接收短信的简单方法 here

初始化 Firebase 后:

firebase init functions

你写入生成的index.js:

const functions = require('firebase-functions');
const admin = require('firebase-admin'); 

admin.initializeApp();

exports.inboundSMS = functions.https.onRequest(async (req, res) => {
  await admin.database().ref('/msgq').push(req.body);
  res.send(200);
});

然后将代码部署到 Firebase:

firebase deploy --only functions

这会产生一个回调 URL(webhook)类似于:

https://us-central1-nexmo-project.cloudfunctions.net/inboundSMS

通过在 Nexmo 仪表板的 API 设置中添加上述 URL,消息将被 Firebase DB 抓取。

现在我有两个问题。
首先是许可问题:作者声称 Firebase "Pay-as-you-go plan is required to use a third-party API"。这是什么意思? webhook 消费者不总是第三方吗?我在 Firebase site.

上找不到任何有用的提示

第二个问题是关于保护回调URL。 URL好像大家都可以发数据,那怎么才能避免URL的垃圾邮件和阅读呢?

很高兴您发现我的 post 有用。

回答您的问题 -

  1. 如果您使用 Nexmo 发送短信,或任何其他需要您呼叫第三方 API 的服务,您需要使用 pay-as-you-go来自 Firebase。如果您只想将它​​用作将从外部源 调用到 Firebase 的 webhook,则应该可以使用免费层。不同之处在于调用外部 APIs。 Google 对此类调用提供了更好的解释 - https://firebase.google.com/docs/functions/use-cases#integrate_with_third-party_services_and_apis。 Google 网络调用不应包含在此 - 使用 Firebase 的好处之一。

  2. 保护 webhook 有几个选项。首先,它不是一个容易被发现的 URL,因此将其保密应该是最初的防线。 Nexmo 也有一个 IP 列表,可以在此处列入白名单 - https://help.nexmo.com/hc/en-us/articles/204015053。在 headers 中,您应该能够找到 IP 并在允许它执行任何其他操作之前对其进行验证,或者完全将其踢出。

如果有帮助请告诉我!