我正在使用 Java 和 Spark Java 框架开发一个基本的 Twilio Web 应用程序。我试图让用户在初始提示后通过 Gather 动词输入一个数字作为输入,然后处理该输入。到目前为止,我可以拨打我的 Twilio 号码,它会响应初始提示,但是在我输入一个号码后,它会转到 /handle-number 并崩溃,因为请求不包含任何参数并且它找不到“ Digits" 参数(打印时参数为空)。
我试图通过 Postman Chrome 扩展来模拟 API 调用来调试它,但我得到一个 500 内部服务器错误。
编辑:这是邮递员请求的截图:邮递员截图
我是 Java Web 应用程序、HTTP 请求和 Twilio 的新手,所以我不熟悉其中的大部分内容。我已经考虑了 twiml 文档和教程,并尝试继续学习,但我的实现中肯定遗漏了一些东西。
如何正确地将电话输入传递给 processNumber 路由?任何帮助表示赞赏!
应用程序.java
import static spark.Spark.*;
public class App {
public static void main (String[] args){
post("/receive-call", ReceiveCall.call);
post("/handle-number", ReceiveCall.processNumber);
}
}
接收呼叫.java
import com.twilio.twiml.voice.Gather;
import com.twilio.twiml.voice.Say;
import com.twilio.twiml.*;
import spark.Route;
public class ReceiveCall {
public static Route call = (request, response) -> {
Say sayMessage = new Say.Builder("Hello! Please enter a number as input. Enter # when finished.").build();
Gather input = new Gather.Builder().timeout(3).say(sayMessage).action("/handle-number").build();
VoiceResponse twiml = new VoiceResponse.Builder().gather(input).build();
System.out.println(response.body());
return twiml.toXml();
};
public static Route processNumber = ((request, response) -> {
String digit = request.params("Digits");
//CRASHES HERE BECAUSE digit IS NULL
int number = Integer.parseInt(digit);
Say message = process(number);
VoiceResponse twiml = new VoiceResponse.Builder().say(message).build();
return twiml.toXml();
});