如何使用 Node-RED 发送 SMS 消息
这是“Nexmo 和 Node-RED 入门”系列教程的第一篇。
NexmoSMS API允许您使用基于 HTTP 的简单 API 在全球范围内发送和接收 SMS。
好消息是,通过将 Nexmo 节点添加到 Node-RED 调色板,与此 API 以及许多其他 API 的交互变得更加容易。
在本文中,您将学习如何使用 Node-RED 发送 SMS 消息。
从Node-RED 库获取此流程或继续操作。
先决条件
在开始之前,您需要做一些事情:
-
Node.js和Node-RED安装在您的机器上
-
Nexmo 帐户 –免费创建一个如果您还没有
-
ngrok– 了解Aaron 的博客文章
获取您的凭证
为了与 SMS API 交互,您需要记下几件事。创建 Nexmo 帐户后,请转到仪表板以查找您的 API 密钥和密码。
接下来,您需要一个启用 SMS 的虚拟号码。转到号码 > 购买号码以获取它。
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--WZszTx09--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://www.nexmo.com/ wp-content/uploads/2019/04/buy-number-nexmo-dashboard.gif)
在某些国家/地区,您无需购买 Nexmo 号码即可发送短信,但美国等其他国家/地区将要求您拥有短信来源的号码。
设置 Node-RED 编辑器
首先,您需要安装运行时和编辑器。这可以在您的本地计算机、单板计算机(例如 Raspberry Pi)或许多云托管选项上完成。此示例将使用您的本地计算机,因此一旦您全局安装了 Node-RED,只需在终端中键入以下命令即可开始。
$ node-red
然后,您可以通过将浏览器指向http://localhost:1880来访问 Node-RED 编辑器。
打开编辑器后,您需要安装 Nexmo 节点。您可以在_管理调色板_菜单下执行此操作,方法是搜索node-red-contrib-nexmo包并单击安装。
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--7thrqhzf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://www.nexmo.com/ wp-content/uploads/2019/04/install-nexmo-nodered.gif)
现在您应该看到所有 Nexmo 节点都出现在屏幕左侧,以及其他默认节点。
使用 Node-RED 发送 SMS
向下滚动到 sendsms 节点并将其拖到您的工作区中。这将在今天的教程中完成繁重的工作。
您可以通过双击它并填写以下参数来设置此节点。通过单击Nexmo Credentials旁边的编辑按钮,您将找到API KEY和API SECRET。
钥匙
描述
API KEY
您的 Nexmo API 密钥,显示在您的帐户概览中。
API SECRET
您的 Nexmo API 密码,显示在您的帐户概览中。
TO
您要向其发送 E.164 格式的 SMS 的号码。例如447401234567。
FROM
手机显示您的消息时显示的号码或文本。如果您所在国家/地区支持此功能,您可以设置自定义字母数字 FROM 以更好地代表您的品牌。
TEXT
您的消息内容。随意发挥创意,但“Hello World!”也可以。
接下来,将 inject 节点添加到流中,并将其连接为 sendsms 的输入。
这是一个非常强大的功能,它可以使用特定的有效负载值启动流程。它支持注入字符串、数字、布尔值、JavaScript 对象或流/全局上下文值,默认具有自 1970 年 1 月 1 日以来的当前时间的时间戳(以毫秒为单位)。
您可以简单地使用它来启动您的流程,同时硬编码 sendsms 节点中的所有参数,或者您可以更进一步。
在TO、FROM和TEXT参数旁边有一个{}符号,这意味着这些字段支持Mustache 模板。这在将某些值动态传递给 sendsms 节点时会派上用场。
知道时间戳是注入的,让我们通过引用 {{msg.payload}} 将此值添加到消息文本中,例如:
Hello World! The timestamp is `{{msg.payload}}`.
要更深入地了解发送 SMS 时发生的情况,请将 sendsms ' 输出连接到 debug 节点。双击它并将Output设置为complete msg object。
点击 Deploy 并单击 inject 节点的按钮 - 您的 SMS 应该正在发送中!
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--AIhamswe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://www.nexmo.com/ wp-content/uploads/2019/04/send-sms-flow.gif)
当您向 SMS API 发出成功请求时,它会返回一个消息对象数组。理想情况下,每一个都有status或0,表示您的消息已成功安排发送,以及一些其他详细信息,如收件人号码、消息 ID、余额、价格和将用于发送 SMS 的运营商网络.
您可以在 Node-RED 编辑器右侧的调试区域中查看此响应对象。
虽然检查此输出对于确定 Nexmo SMS API 所做的工作非常有帮助,但不能保证消息已到达收件人的手机。
消息送达后,手机运营商会向 Nexmo 返回Delivery Receipt。这将包含交付状态。
接收移动运营商的交货收据
要找出出站消息的status,您需要设置一个 Webhook 端点,Nexmo 可以将 Delivery Receipt 转发到该端点。
定义 Webhook 端点
首先,将一个http输入节点连接到一个http response节点,以及一个debug节点,这样您就可以在调试区域查看您的交货收据。
在http输入节点中,选择POST作为Method,并在URL字段中填写类似/receipt的内容。
http response节点应该将200设置为Status code,但不用担心,这也是默认值。
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--XzioaGTf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://www.nexmo.com/ wp-content/uploads/2019/04/delivery-receipt-flow.gif)
将您的本地服务器暴露到 Internet
接下来,您必须将本地服务器公开到 Internet,以便 Nexmo 可以访问它。一种方便的方法是使用隧道服务,如ngrok。
下载并安装 ngrok ,然后在终端中运行它以在端口1880上启动隧道。
$ ./ngrok http 1880
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--HqZ5NGBw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.nexmo.com/ wp-content/uploads/2019/04/ngrok-1880.png)
您的本地服务器现在有一个 ngrok URL,可用作您的 webhook 端点。
使用 Nexmo 设置端点
最后一步是让 Nexmo SMS API 知道它应该将交货收据转发到哪里。您可以在默认 SMS 设置部分中的API 设置下执行此操作。
将交货收据的默认 Webhook URL 设置为YOUR_NGROK_URL/receipt,然后设置为Save changes。
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--G5q0PN5y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.nexmo.com/ wp-content/uploads/2019/04/delivery-receipt-endpoint-url.png)
现在,当您返回 Node-RED 编辑器并发送另一条消息时,您将看到交付回执出现在调试区域中:
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--6hOijjl_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.nexmo.com/ wp-content/uploads/2019/04/delivery-receipt-in-debug.png)
status和err-code参数都表示消息已经成功传递。在 Nexmo文档中了解有关送达回执状态消息和错误代码的更多信息。
资源
-
宣布 Nexmo Node-RED 软件包
-
详细了解 NexmoSMS API
-
深入了解发货单
-
仔细查看Node-RED
更多推荐


所有评论(0)