Nexmo 正在接收短信 Java

Nexmo Receiving SMS Java

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

对于您拥有的每个 Nexmo 号码,您可以配置一个 URL,当该号码收到短信时,Nexmo 将呼叫该号码。 GET 请求将包含有关接收到的 SMS 的信息作为请求参数。

增加了一点复杂性(在您开发时),因为 Nexmo 需要能够访问托管在您的开发机器上的 URL,这可能 public 不可用在网上!为此,你需要 运行 类似 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

中记录了其工作原理的详细信息