Java 我们能在Twilio的电话会议中拨一个号码吗?
我是这个领域的新手。有问题了。我想在电话会议期间拨打一个号码,并将该与会者添加到当前会议中。 我尝试了Java中给出的会议示例代码。有没有办法收集信息,然后拨打电话号码,将参与者加入同一个会议 这是我试过的。我已经创建了一个会议,它将返回以下响应Java 我们能在Twilio的电话会议中拨一个号码吗?,java,twilio,conference,Java,Twilio,Conference,我是这个领域的新手。有问题了。我想在电话会议期间拨打一个号码,并将该与会者添加到当前会议中。 我尝试了Java中给出的会议示例代码。有没有办法收集信息,然后拨打电话号码,将参与者加入同一个会议 这是我试过的。我已经创建了一个会议,它将返回以下响应 <Response> <Dial hangupOnStar="true"> <Conference startConferenceOnEnter="true" endConferenceOnExit="true">M
<Response>
<Dial hangupOnStar="true">
<Conference startConferenceOnEnter="true" endConferenceOnExit="true">My Conference</Conference>
</Dial>
<Gather timeout="10" action="/twilio-tut/add/participant?confName=My%20Conference" finishOnKey="#">
<Say>Please enter the number you want to connect followed by hash key.</Say></Gather>
</Response>
在statusCallback上,我正在更新呼叫以重定向到主叫方和被叫方的会议,其中主叫方是通过按*
离开会议的人,即A,被叫方是某个有效的电话号码。代码如下所示
Number number =
new Number.Builder(some_valid_phone_number)
.statusCallback("https://xxxxxxx.ngrok.io/twilio-tut/to/conference")
.statusCallbackMethod(Method.POST)
.statusCallbackEvents(Arrays.asList(Event.ANSWERED))
.build();
Dial dial = new Dial.Builder()
.number(number)
.conference(new Conference.Builder(conferenceName).build())
.build();
twiml = new VoiceResponse.Builder().dial(dial)
.build();
Call callee = Call.updater(callSid)
.setUrl("https://xxxxx.ngrok.io/twilio-tut/voice").setMethod(HttpMethod.POST).update();
Call caller = Call.updater(parentCallSid)
.setUrl("https://xxxxx.ngrok.io/twilio-tut/voice").setMethod(HttpMethod.POST).update();
上面的代码传输被调用方并断开调用方与异常的连接
com.twilio.exception.ApiException: Call is not in-progress. Cannot redirect.
我想做的是打另一个电话,最后他们会连接到同一个会议。而A应该能够拨打其他号码并将其添加到同一会议中。我正在用手机连接号码
提前感谢。这里是Twilio员工
你可以!您可以做的是使用REST API进行出站调用,并让该调用返回带有会议动词和相同会议名称的TwiML-例如,如果您创建了一个名为conference1
的会议调用,您将希望使用TwiML进行响应,该TwiML类似于:
<Response>
<Dial>
<Conference>conference1</Conference>
</Dial>
</Response>
会议1
将出站呼叫连接到现有会议或创建会议
如果您在现有通话中使用
动词进行输入,那么您也可以使用此解决方案。您希望重定向调用流,而不是创建一个全新的调用,因此只需在聚集回调中返回这个TwiML
如果您一直跟踪会议SID,还可以通过创建出站会议呼叫()以编程方式添加它们。与TwiML类似,如果电话会议不存在,Twilio将创建它;如果确实存在,Twilio将向其中添加此人。Twilio员工在此
你可以!您可以做的是使用REST API进行出站调用,并让该调用返回带有会议动词和相同会议名称的TwiML-例如,如果您创建了一个名为conference1
的会议调用,您将希望使用TwiML进行响应,该TwiML类似于:
<Response>
<Dial>
<Conference>conference1</Conference>
</Dial>
</Response>
会议1
将出站呼叫连接到现有会议或创建会议
如果您在现有通话中使用
动词进行输入,那么您也可以使用此解决方案。您希望重定向调用流,而不是创建一个全新的调用,因此只需在聚集回调中返回这个TwiML
如果您一直跟踪会议SID,还可以通过创建出站会议呼叫()以编程方式添加它们。与TwiML类似,如果电话会议不存在,Twilio将创建它;如果确实存在,Twilio将向其中添加此人。Twilio开发者福音传道者 您遇到的问题是,您正试图在TwiML中执行两次拨号以响应。您应该使用TwiML将电话中的人引导回原始会议,而不是将a与您用
拨打的电话号码进行配对
要将其转化为明确的步骤,应该是这样的:
@WebServlet("/dial/participant")
public class AddParticipantToConference extends HttpServlet {
public static final String MODERATOR = System.getenv("MY_PHONE_NUMBER");
public static final String ACCOUNT_SID = System.getenv("TWILIO_ACCOUNT_SID");
public static final String AUTH_TOKEN = System.getenv("TWILIO_AUTH_TOKEN");
@Override
protected void doPost(HttpServletRequest servletRequest, HttpServletResponse servletResponse)
throws IOException {
String selectedOption = servletRequest.getParameter("Digits");
VoiceResponse twiml;
if(selectedOption != null){
Call call = Call.creator(new PhoneNumber("+" + selectedOption), new PhoneNumber(MODERATOR),
new URI("https://example.com/conference")).create();
}
twiml = new VoiceResponse.Builder().redirect("/conference").build();
servletResponse.setContentType("text/xml");
try {
servletResponse.getWriter().print(twiml.toXml());
} catch (Exception e) {
e.printStackTrace();
}
}
}
@WebServlet("/dial/participant")
public class AddParticipantToConference extends HttpServlet {
public static final String MODERATOR = System.getenv("MY_PHONE_NUMBER");
public static final String ACCOUNT_SID = System.getenv("TWILIO_ACCOUNT_SID");
public static final String AUTH_TOKEN = System.getenv("TWILIO_AUTH_TOKEN");
@Override
protected void doPost(HttpServletRequest servletRequest, HttpServletResponse servletResponse)
throws IOException {
String selectedOption = servletRequest.getParameter("Digits");
VoiceResponse twiml;
if(selectedOption != null){
Call call = Call.creator(new PhoneNumber("+" + selectedOption), new PhoneNumber(MODERATOR),
new URI("https://example.com/conference")).create();
}
twiml = new VoiceResponse.Builder().redirect("/conference").build();
servletResponse.setContentType("text/xml");
try {
servletResponse.getWriter().print(twiml.toXml());
} catch (Exception e) {
e.printStackTrace();
}
}
}
您现在不需要状态回调
让我知道这是否有帮助这里的Twilio开发者福音传道者 您遇到的问题是,您正试图在TwiML中执行两次拨号以响应。您应该使用TwiML将电话中的人引导回原始会议,而不是将a与您用
拨打的电话号码进行配对
要将其转化为明确的步骤,应该是这样的:
@WebServlet("/dial/participant")
public class AddParticipantToConference extends HttpServlet {
public static final String MODERATOR = System.getenv("MY_PHONE_NUMBER");
public static final String ACCOUNT_SID = System.getenv("TWILIO_ACCOUNT_SID");
public static final String AUTH_TOKEN = System.getenv("TWILIO_AUTH_TOKEN");
@Override
protected void doPost(HttpServletRequest servletRequest, HttpServletResponse servletResponse)
throws IOException {
String selectedOption = servletRequest.getParameter("Digits");
VoiceResponse twiml;
if(selectedOption != null){
Call call = Call.creator(new PhoneNumber("+" + selectedOption), new PhoneNumber(MODERATOR),
new URI("https://example.com/conference")).create();
}
twiml = new VoiceResponse.Builder().redirect("/conference").build();
servletResponse.setContentType("text/xml");
try {
servletResponse.getWriter().print(twiml.toXml());
} catch (Exception e) {
e.printStackTrace();
}
}
}
@WebServlet("/dial/participant")
public class AddParticipantToConference extends HttpServlet {
public static final String MODERATOR = System.getenv("MY_PHONE_NUMBER");
public static final String ACCOUNT_SID = System.getenv("TWILIO_ACCOUNT_SID");
public static final String AUTH_TOKEN = System.getenv("TWILIO_AUTH_TOKEN");
@Override
protected void doPost(HttpServletRequest servletRequest, HttpServletResponse servletResponse)
throws IOException {
String selectedOption = servletRequest.getParameter("Digits");
VoiceResponse twiml;
if(selectedOption != null){
Call call = Call.creator(new PhoneNumber("+" + selectedOption), new PhoneNumber(MODERATOR),
new URI("https://example.com/conference")).create();
}
twiml = new VoiceResponse.Builder().redirect("/conference").build();
servletResponse.setContentType("text/xml");
try {
servletResponse.getWriter().print(twiml.toXml());
} catch (Exception e) {
e.printStackTrace();
}
}
}
您现在不需要状态回调
如果有帮助,请告诉我谢谢你,菲尔。我可以为会议添加一名参与者。:)谢谢你,菲尔。我可以为会议添加一名参与者。:)谢谢你,瑞奇,谢谢你的回复。真的很感谢你的努力。嘿,瑞奇,你能帮忙吗?谢谢你,瑞奇,谢谢你的回复。非常感谢你的努力。嘿,瑞奇,你能帮我一下吗