Java Twilio TwiML Bin没有';不允许CallerId属性是动态的

Java Twilio TwiML Bin没有';不允许CallerId属性是动态的,java,xml,twilio,twilio-twiml,Java,Xml,Twilio,Twilio Twiml,我正在尝试为以下Bin中的callerId属性使用TwiML胡须模板: <?xml version="1.0" encoding="UTF-8"?> <Response> <Dial callerId="+11234567890"> <Number>{{to}}</Number> </Dial> </Response>

我正在尝试为以下Bin中的
callerId
属性使用TwiML胡须模板:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Dial callerId="+11234567890">
        <Number>{{to}}</Number>
    </Dial>
</Response>
但是没有用,因为Twilio仪表板上的消息总是报告:

拨号:无效的callerId值


此外,描述垃圾箱的两篇文章没有涵盖这种情况:并且尝试将From和To大写。这应该可以解决问题。

尝试从和到大写。这应该可以解决问题。

在将“To”改为小写后,效果更好,但遗憾的是,更改“For”属性的大小写似乎并没有什么不同:全大写、全小写或titlecase。此外,我对callerId属性模板的语法仍然一无所知……如果您拨打PSTN,callerId必须是E.164格式的电话号码,这就是拨号号码的作用。发件人应为客户端:11234567890,基于您的代码,该代码对PSTN呼叫无效。这给了我更多的组合可供尝试:客户端:11234567890和客户端:+11234567890和+11234567890。障碍似乎是,尽管我不知道从TwiML容器中删除callerId属性的正确语法,如上图所示。删除它,无论我的Java参数说什么,都会出现错误。一定有办法解决这个问题……如果发送的From不是E.164格式,{{{{e164}}{{From}{{/e164}},则可以使用TwiML Bin函数来规范化它。您尝试执行的操作是100%可能的。在向PSTN发出呼叫时,您需要将Twilio客户端标识(即客户端:xxx)映射到特定的电话号码(有两个呼叫分支,客户端分支到Twilio,Twilio分支到电话网络)。正如您所看到的,您的TwiML正在设置
callerId
,您可以从客户端传入客户端要使用的E.164号码,或者在后端执行查找以将特定客户端身份映射到电话号码并生成您的TwiML。在将“改为”小写后,它工作得更好,但遗憾的是改变了“for”的情况属性似乎并没有什么区别:全大写、全小写或titlecase。此外,我对callerId属性模板的语法仍然一无所知……如果您拨打PSTN,callerId必须是E.164格式的电话号码,这就是拨号号码的作用。发件人应为客户端:11234567890,基于您的代码,该代码对PSTN呼叫无效。这给了我更多的组合可供尝试:客户端:11234567890和客户端:+11234567890和+11234567890。障碍似乎是,尽管我不知道从TwiML容器中删除callerId属性的正确语法,如上图所示。删除它,无论我的Java参数说什么,都会出现错误。一定有办法解决这个问题……如果发送的From不是E.164格式,{{{{e164}}{{From}{{/e164}},则可以使用TwiML Bin函数来规范化它。您尝试执行的操作是100%可能的。在向PSTN发出呼叫时,您需要将Twilio客户端标识(即客户端:xxx)映射到特定的电话号码(有两个呼叫分支,客户端分支到Twilio,Twilio分支到电话网络)。正如您所看到的,您的TwiML正在设置
callerId
,您可以从客户端传入客户端要使用的E.164号码,或者在后端执行查找以将特定客户端标识映射到电话号码并生成TwiML。
<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Dial callerId={{from}}>
        <Number>{{to}}</Number>
    </Dial>
</Response>
    public void makeCall() {
        if (accessToken != null) {
            params.put("To", toNumber);
            params.put("From", "11234567890");
            params.put("Caller", "11234567890");
            params.put("CallerId", "client:11234567890");
            ConnectOptions connectOptions = new ConnectOptions.Builder(accessToken)
                    .params(params)
                    .build();
            activeCall = Voice.connect(context, connectOptions, callListener);

        }