如何使用Ngrok使用POST和GET API请求来发送自动回传短信

605 阅读6分钟

Ngrok是一个免费的公共托管服务,它允许你设置HTTP隧道,Twilio服务器可以在其中达到响应特定的请求,如短信、语音通话和其他服务。在这篇文章中,学习如何在向Twilio号码发送定制的短信后收到自动的 "文本返回 "信息。

前提条件

为了完成本教程,你将需要以下条件:

  • 一个Twilio账户 - 如果你目前没有Twilio的免费账户,请注册一个。
  • 一个ngrok账户
  • 一个编码文本编辑器,如Sublime

设置Twilio命令行界面(CLI)环境

在你的浏览器中访问Homebrew,并从Homebrew主页上复制代码。在你的终端上按照安装步骤进行安装,并等待它完成。

Homebrew允许你安装任何用于开发目的的工具和功能。一旦Homebrew安装完毕,运行以下命令来安装Twilio命令行界面 (CLI):

brew tap twilio/brew && brew install twilio

Twilio CLI允许你连接到Twilio产品和服务,可用于开发者目的。一旦CLI安装完毕,运行下面的命令。pip install twilio.

这是Twilio服务器端SDK,是安装该库最方便的方法。

如果你看到pip: command not found 的错误,你也可以使用easy_install ,在终端运行这个:easy_install twilio

安装完Twilio SDK后,运行以下命令:

pip install flask

Flask是一个适用于Python的迷你网络框架,可以方便地嵌入和开发网络应用程序。 一旦你完成了这个项目的所有依赖项的安装,你的下一步就是购买一个Twilio电话号码。 购买一个电话号码在你可以接收电话和发送消息之前,你需要购买一个Twilio电话号码。一旦你进入Twilio控制台,你可以点击左侧边栏的购买号码。

控制台页面会给你一个可供选择的电话号码列表,这些号码可以按国家和能力进行过滤。只要能接收和发送短信,电话号码的具体情况就不重要。

创建一个脚本为了保持项目的条理性,创建一个名为 "textback "的文件夹来存储你的应用程序文件。在这个文件夹中为你的脚本创建一个名为recieve_sms.py的文件。在你的终端或命令提示符中,导航到你喜欢的目录并输入:

touch textback
cd textback
touch recieve_sms.py

在你喜欢的文本编辑器中打开你刚刚创建的recieve_sms.py ,并粘贴以下代码:

from flask import Flask, request, redirect
from twilio.twiml.messaging_response import MessagingResponse

app = Flask(__name__)

@app.route("/sms", methods=['GET', 'POST'])
def sms_reply():
    """Respond to incoming calls with a simple text message."""
    # Start our TwiML response
    resp = MessagingResponse()

    # Add a message
    resp.message("Hey, did you get this message!")

    return str(resp)

if __name__ == "__main__":
    app.run(debug=True)

上面的代码包含了告诉你的程序使用POST和GET API请求路由短信的说明。如前所述,Flask是一个Python的网络框架,所以我们需要访问一个允许Twilio响应短信的依赖性。

TwiML,即Twilio标记语言,是一种基于XML的语言,指示Twilio客户端如何处理各种事件,如来电和出局,短信和彩信。

当我们创建一个Flask应用程序时,我们必须在脚本中加入一个*/sms*路由。我们创建一个sms_reply() 函数和MessagingResponse 对象,以包括一个消息,我们可以返回消息响应对象的字符串形式,并使用它来运行应用程序。

保存该文件并关闭你的文本编辑器。

安装ngrok

访问ngrok网站并登录你的账户。下载ngrok zip文件。双击该文件,让它在终端中运行。

要连接到你的ngrok账户,你需要找到你的ngrok authtoken。你可以在ngrok仪表板的设置和安装页面中找到你的ngrok authtoken。打开一个新的终端标签,运行下面的命令,将你的authtoken添加到默认的ngrok.yml配置文件中 确保用你的authtoken替换XXX 占位符:

./ngrok authtoken XXX

或者你可以在这里的第一个框中下载ngrok client 作为一个文件。如果你把ngrok直接下载到你的桌面上,那么你会看到桌面工具栏附近的可执行文件图标,如图所示:

ngrok icon on desktop

根据你的文件的位置,你可能需要在终端输入./ngrok ,而不是ngrok

运行Python脚本

在终端上打开一个新的标签,导航到recieve_sms.py所在的textback目录,用以下命令运行Python脚本:

python recieve_sms.py

如果你得到一个错误信息,如ModuleNotFoundError: No module named 'flask' ,那么使用pip install flaskeasy_install flask ,然后python receive_sms.py

运行该脚本后,localhost 5000端口的网络服务器将启动。

运行ngrok

回到你向ngrok添加authtoken的终端标签,用以下命令启动ngrok:

ngrok http 5000

这个命令在localhost的5000端口上启动了一个HTTP隧道,这样Twilio就可以到达服务器。会话状态和细节应该出现,这表明隧道正在正常工作。它看起来应该是这样的:

ngrok http 5000 on the terminal

会话细节中的转发链接是访问HTTP隧道的关键。复制这个链接进行下一步。

设置电话号码路线

你的下一步是将你的Twilio号码链接到你刚刚创建的webhook。访问Twilio控制台中的活动号码页面,点击你刚买的电话号码。

导航到Messaging部分,确保CONFIGURE WITH OTHER HANDLERS选项被链接到WebhooksWHEN A MESSAGE COMES IN 选项也被设置为Webhook

将你之前复制的转发URL粘贴到Webhook旁边的文本框中,并在URL的末尾添加/sms ,这样邮件就会被转发到*/sms*路由。

完成后,点击底部的 " 保存"来保存你的设置。

测试你的项目

现在你的webhook已经设置好了,终于可以测试你的项目了!

向你的Twilio号码发送一条信息,看看会有什么反应。如果你收到这条消息 "嘿,你收到这条消息了吗!",那么隧道已经成功发送了出站消息。你的回复应该是这样的。

screenshot of automatic textback using twilio sms

下一步是什么自动发回短信?

很好地完成了这个教程!这个项目有几个使用案例,可以用Twilio应用程序在现实生活中实现。一个很好的用例可以是 "办公室外 "的服务,客户或顾客在下班后给雇主发信息。这个项目可以自动向客户发送一条消息,并附上 "对不起,请在不同的时间联系 "这样的语句。