我想知道应该使用什么方法才能通过 Nexmo 接收消息。有没有人在这个问题上有任何经验,因为 Nexmo 似乎没有关于如何通过那里的库接收消息的明确文档。任何帮助都会很棒。
最佳答案
对于您拥有的每个 Nexmo 号码,您可以配置一个 URL,当该号码收到 SMS 时,Nexmo 将调用该 URL。 GET 请求将包含有关收到的 SMS 的信息作为请求参数。
增加了一点复杂性(在您开发时),因为 Nexmo 需要能够访问托管在您的开发计算机上的 URL,该 URL 可能不会在 Internet 上公开提供!为此,您需要运行类似 Ngrok 的命令。这将通过公共(public) URL 提供到本地计算机上端口的隧道。
我建议从一个打印出其参数的简单 servlet 开始:
public class InboundSMSServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req,
HttpServletResponse resp)
throws ServletException,
java.io.IOException {
System.out.println("Received: " + req.getMethod());
for (String param : Collections.list(req.getParameterNames())) {
String value = req.getParameter(param);
System.out.println(param + ": " + value);
}
}
}
...将其配置为方便的 URL ...
<servlet>
<servlet-name>inbound-sms</servlet-name>
<servlet-class>getstarted.InboundSMSServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>inbound-sms</servlet-name>
<url-pattern>/inbound</url-pattern>
</servlet-mapping>
同时运行 servlet 容器和 ngrok,并检查末尾带有 /YOUR_PROJECT_NAME/inbound
的 ngrok URL 是否按预期工作。然后进入 Nexmo 仪表板,Your Numbers ,然后在您想要接收短信的号码上点击“编辑”。输入您在上面测试的 Ngrok URL。
现在向您配置的号码发送一条短信,您应该会看到消息内容打印到控制台;像这样:
Received: GET
messageId: 0B0000004A2D09D9
to: 447520666777
text: Hello Nexmo!
msisdn: 447720123123
type: text
keyword: HELLO
message-timestamp: 2017-04-27 14:41:32
其工作原理的详细信息记录在 Nexmo site 上。
关于java - Nexmo 接收短信 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44103987/