我想知道应该使用哪种方法才能通过Nexmo接收消息。是否有人对此问题有任何经验,因为Nexmo似乎没有关于如何通过那里的库接收消息的清晰文档。任何帮助都会很棒。
最佳答案
对于您拥有的每个Nexmo号码,您可以配置一个URL,当以该号码接收到SMS时,Nexmo将调用该URL。 GET请求将包含有关接收到的SMS的信息作为请求参数。
(在开发过程中)增加了一些复杂性,因为Nexmo需要能够访问开发计算机上托管的URL,该URL可能在Internet上不公开!为此,您需要运行Ngrok之类的东西,它将使用公共URL提供到本地计算机端口的隧道。
我建议从一个简单的servlet开始,该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,然后在要接收SMS消息的号码上单击“编辑”。输入您在上面测试的Ngrok URL。现在,向您配置的号码发送一条SMS,您应该看到打印到控制台的消息内容。就像是:
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接收SMS Java,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44103987/