我们正在使用Twilio代理拨号来发起两个用户之间的呼叫。
在大多数情况下,此方法工作正常,但有时甚至无法启动呼叫。我们像拨打电话一样获得了call.getSid(),但电话从未响过。
if (!from.equals(to)) {
Twilio.init(TWILIO_ACCOUNT_SID, TWILIO_ACCOUNT_TOKEN);
try {
final String encodedNumber = URLEncoder.encode(to, "UTF-8");
final String url = URL + "/connect/" + encodedNumber;
final Call call = Call.creator(new PhoneNumber(from), new PhoneNumber(TWILIO_PHONE_NUMBER), new URI(url)).setTimeout(20).create();
response.setMessage("Calling " + response.getItem().getDisplayName() + "'s " + params.getNumberType() + "...");
LoggerUtil.out("Call done through Twilio: " + call.getSid() + " from: " + from + " to: " + to);
} catch (UnsupportedEncodingException | URISyntaxException ex) {
ex.printStackTrace();
response.setMessage("I cannot dial " + response.getItem().getDisplayName() + "'s " + params.getNumberType() + " now, please try again later.");
}
} else {
response.setMessage("You cannot call yourself.");
}
输出:通过Twilio进行的呼叫:CAabf9ba78b3b94921b000cda2ae6d2b91从:+521234567890至:+520987654321
并且,在Twilio控制台上,两个都没有错误。另外,我们注意到$减少了,这意味着我们在“发出呼叫”时被收取了费用(非试用帐户),但是没有。
有人遇到同样的问题吗?有时,对于Agent端,也会发生相同的情况(上述步骤中的第4个项目):用户A应答,但用户B从未被呼叫(用户A电话上没有拨号音或任何声音,只是无效):
final Dial dial = new Dial.Builder().number(number).build();
final VoiceResponse voiceResponse = new VoiceResponse.Builder().dial(dial).build();
如前所述,这种情况有时会发生,并且大多数时候是在非美国手机上发生的(在美国手机上也会发生,但价格较低)。
谢谢。