如何在不发送自动回复的情况下读取传入的短消息
我想读取来自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编写的。
感谢任何帮助。
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 />
并且将不应答发送消息。
让我知道这是否有帮助。
工作就像一个魅力。谢谢您的帮助!我没有意识到,我可以从MessagingResponse中排除主体以创建无回复。 – foreverAnIntern
检索邮件的方法是使用ResourceSet。但是,eclipse正在抛出Bound Bound Mismatch的错误:类型Message不是有效的替代类型ResourceSet 的有界参数。我也尝试过扩展消息。它没有工作(除非我没有正确地扩展它)。 –
foreverAnIntern
找出问题所在。方法3和方法4中的消息来自不同的导入 - com.twilio.twiml.Message和com.twilio.rest.api.v2010.account.Message。他们冲突。 – foreverAnIntern