twimlresponse与java中的拨号动词

tzcvj98z  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(365)

我想打个电话。我可以成功地拨打电话,但它说:“对不起,发生了一些应用程序错误。”。这可能是响应xml中的一个问题。
下面是拨打电话的代码:

@RequestMapping(value = "/makeCall", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
    public @ResponseBody
    String makeCall(@RequestBody TwilRequest twilRequest, HttpServletRequest request) {

   ....
    Map<String, String> params = new HashMap<String, String>();
    params.put("From", CallerID);
    params.put("To", addPulsIfNot(twilRequest.getToPhone()));
    params.put(
    "Url", "http://example.com/ws/twil/voiceResponse?phone=9198989...");

     .....
    }

下面是调用和返回响应xml的响应服务:

@RequestMapping(value = "/voiceResponse", method = RequestMethod.GET)
    public @ResponseBody String voiceResponse(HttpServletRequest request,
    HttpServletResponse response) throws IOException {
    TwiMLResponse twiml = new TwiMLResponse();
      Dial dial = new Dial(addPulsIfNot(phone));
      try {
        dial.append(client);
        twiml.append(dial);
      } catch (TwiMLException e) {
      e.printStackTrace();
     }
     response.setContentType("Application/xml");
     return twiml.toXML();
    }

我不确定出了什么问题。请帮忙。提前谢谢。

sqxo8psd

sqxo8psd1#

问题是方法 =RequestMethod.GET ,应该是post。
您可以指定希望在api请求中使用的方法。建议使用post,默认为post。
在本例中,twilio将发布到 http://demo.twilio.com/docs/voice.xml 获取twiml以处理调用:

// Build a filter for the CallList
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("Url", "http://demo.twilio.com/docs/voice.xml"));
params.add(new BasicNameValuePair("To", "client:tommy"));
params.add(new BasicNameValuePair("From", "+14158675309"));

但是这里twilio会发送一个get请求给 http://demo.twilio.com/docs/voice.xml 获取twiml来处理调用。

// Build a filter for the CallList
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("Url", "http://demo.twilio.com/docs/voice.xml"));
params.add(new BasicNameValuePair("To", "+14155551212"));
params.add(new BasicNameValuePair("SendDigits", "1234#"));
params.add(new BasicNameValuePair("From", "+18668675309"));
params.add(new BasicNameValuePair("Method", "GET"));

相关问题