如何在不发送自动回复的情况下读取传入的短消息

问题描述:

我想读取来自Twilio的传入消息。我已经在他们的网站上建议与ngrok隧道。如何在不发送自动回复的情况下读取传入的短消息

我用下面

SendMessage.java

Twilio.init(SendAndReceiveController.ACCOUNT_SID, SendAndReceiveController.AUTH_TOKEN); 
    Message message = Message.creator(new PhoneNumber(receiver), 
      new PhoneNumber(sender),smsContent).create(); 

我曾尝试4种不同的方法,做一个接收/读取我能发送消息。

ReceiveMessage.java

MessageFetcher mf = new MessageFetcher("SM2ccd0dc43cea07bcc3f522b3e571eb79"); 
    System.out.println("message is " + mf.fetch().getBody()); <-- Method 1 

    Body body = new Body("Something here");      <-- Method 2 
    Message message = new Message.Builder().action("/receive-sms") 
      .method(Method.POST).body(body).build(); 
    MessagingResponse response = new MessagingResponse.Builder().message(message).build(); 

    ResourceSet<Message> messages = Message.reader().read(); <-- Method 3 

    for(Message message : messages){ 
     System.out.println(message); 
    } 

    try { 
     System.out.println(response.toXml()); 
    } catch (TwiMLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    post("/receive-sms", (req, res)-> {       <-- Method 4 
     // This gets the message content 
     System.out.println(req.queryParams("Body"));    
     // GOT CONTENT 
     // Must parse the format and get the content value 
     // Must be able to get the latest message 

     Message sms = new Message.Builder() 
       .body(new Body("")) 
       .build(); 

     MessagingResponse twiml = new MessagingResponse.Builder() 
       .message(sms) 
       .build(); 

     return twiml.toXml(); 
    }); 

我目前使用的方法4.虽然它的作品,我不得不消息发送回,因为它是一个信息[这是使用sparkjava库。我用Twilio的技术帮助来回发送电子邮件,他们不断向我推荐使用Twilio的REST API中的回调函数。我相信我使用的post方法是一个回调函数。

有什么方法可以让我在不发送回复的情况下阅读用户的最新消息?如果是这样,你能否在代码中解释一下如何做?我很难理解如何将它翻译成Java,因为他们网站上的大多数代码似乎都是用HTML编写的。

感谢任何帮助。

+0

检索邮件的方法是使用ResourceSet 。但是,eclipse正在抛出Bound Bound Mismatch的错误:类型Message不是有效的替代类型ResourceSet 的有界参数。我也尝试过扩展消息。它没有工作(除非我没有正确地扩展它)。 – foreverAnIntern

+0

找出问题所在。方法3和方法4中的消息来自不同的导入 - com.twilio.twiml.Message和com.twilio.rest.api.v2010.account.Message。他们冲突。 – foreverAnIntern

Twilio开发人员在这里传播。

您正在使用方法4是正确的。您正在接收传入消息,作为对您的/receive-sms端点的POST请求。

但是,你不想回复!谢天谢地,这很好,很容易。不要用Message来建立MessagingResponse,你可以把它留空。

post("/receive-sms", (req, res)-> {       <-- Method 4 
    // This gets the message content 
    System.out.println(req.queryParams("Body"));    
    // GOT CONTENT 
    // Must parse the format and get the content value 
    // Must be able to get the latest message 

    // do something with the content 

    MessagingResponse twiml = new MessagingResponse.Builder().build(); 
    return twiml.toXml(); 
}); 

这将产生以下TwiML结果:

<Response /> 

并且将不应答发送消息。

让我知道这是否有帮助。

+0

工作就像一个魅力。谢谢您的帮助!我没有意识到,我可以从MessagingResponse中排除主体以创建无回复。 – foreverAnIntern