我想知道我应该使用什么方法来通过Nexmo接收消息。有没有人在这个问题上有任何经验,因为Nexmo似乎没有关于如何通过库接收消息的明确文档。任何帮助都会很棒。
答案 0 :(得分:4)
对于您拥有的每个Nexmo号码,您可以配置一个URL,当该号码收到短信时,Nexmo将调用该URL。 GET请求将包含有关收到的SMS作为请求参数的信息。
添加了一点点复杂性(在开发过程中),因为Nexmo需要能够访问开发计算机上托管的URL,这可能不是Internet上公开的!为此,您需要运行类似Ngrok的内容,它将通过公共URL为本地计算机上的端口提供隧道。
我建议从一个打印出params的简单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);
}
}
}
...将其配置为方便的网址...
<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。
现在向您配置的号码发送短信,您应该看到消息内容已打印到控制台;类似的东西:
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
上