首页 > 解决方案 > Nexmo:接收短信

问题描述

作为 Nexmo 的新手,我在 这里找到了一种使用 Firebase 接收短信的简单方法。

使用以下命令初始化 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 Dashboard 的 API 设置中添加上述 URL,消息将被 Firebase DB 抓取。

现在我有两个问题。
首先是许可问题:作者声称 Firebase“需要使用第三方 API 的按需付费计划”。这是什么意思?webhook消费者不总是第三方吗?我在Firebase 站点上找不到任何有用的提示。

第二个问题与保护回调 URL 有关。似乎每个人都可以通过 URL 发送数据,那么如何避免垃圾邮件和 URL 的细读呢?

标签: firebasesmswebhooksnexmo

解决方案


很高兴你发现我的帖子很有用。

回答你的问题——

  1. 如果您使用 Nexmo 发送 SMS 或任何其他需要您调用 3rd 方 API 的服务,则需要使用 Firebase 的即用即付。如果您只想将它​​用作从外部源调用Firebase 的 webhook,那么免费层应该是可用的。区别在于调用外部 API。谷歌对这种类型的调用提供了更好的解释 - 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。在标头中,您应该能够在允许它执行任何其他操作之前找到 IP 并对其进行验证,或者完全将其踢出。

让我知道这是否有帮助!


推荐阅读