Nexmo接收SMS Java

时间:2017-05-22 02:57:55

标签: java nexmo

我想知道我应该使用什么方法来通过Nexmo接收消息。有没有人在这个问题上有任何经验,因为Nexmo似乎没有关于如何通过库接收消息的明确文档。任何帮助都会很棒。

1 个答案:

答案 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