2017-11-17 3 views
0

이 부분은 새로운 기능입니다. 질문하는 중입니다. 회의 통화 중에 번호로 전화를 걸어 현재 회의에 참가자를 추가하려고합니다. 회의실에 대한 샘플 코드 hereJava에 입력 해 보았습니다. 입력을 모으고 전화를 걸어 참가자를 같은 회의에 추가 할 수있는 방법이 있습니까?Twilio에서 전화 회의 도중에 번호로 전화를 걸 수 있습니까?

여기 제가 시도한 것입니다. 나는 회의를 만들었으며 이제 회의 참가자 중 하나를 다음 응답

<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에

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(); 

아래와 같이 Gather 동사의 행동에 이제

, 나는 다수에게 코드를 다이얼하고, 내가 전화를 업데이트하고하는 것은 호출자가 하나가 발신자와 수신자 모두에 대해 회의로 리디렉션 * 즉 을 누르고 회의실을 떠난 사람은 some_valid_phone_number입니다. 코드는 코드 전송 위에

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. 

내가하고 싶은 것은 전화 다른 번호 하고 마침내 그들이 동일한 연결됩니다 회의. 은 다른 전화를 걸고 같은 전화 회의에 추가 할 수 있어야합니다. 나는 전화 번호를 연결하기 위해 휴대폰을 사용하고있다.

미리 감사드립니다.

답변

1

개발자 전도사 Twilio가 여기 있습니다.

문제는 <Gather>에 대한 응답으로 TwiML 내에서 두 개의 다이얼을 수행하려고한다는 것입니다. 다이얼 <Gather>으로 전화를 걸 때 으로 <Dial>을 작성하는 대신 create that call using the REST API으로 전화를 걸고 TwiML을 사용하여 전화기에있는 사람을 원래 전화 회의로 다시 보낼 수 있습니다.

는이 같은해야 분명 단계로 그것을 넣으려면 :

  1. 사용자가 호출 Twilio 번호 TwiML가 응답
  2. , hangUpOnStar와
  3. 사용자 프레스 별 회의 및 요청 수집하는 사용자를 추가합니다 전화 할 번호
  4. Gather의 전화 번호에 대한 응답으로 REST API를 사용하여 전화를 걸고 원래 수신 된 URL ("/ conference")에 전화를 겁니다.
  5. t에 대한 응답 그는 행동을 모으고 TwiML을 반환하여 원래 발신자를 전화 회의로 돌려 보내십시오 (원래 인바운드 URL로 리디렉션 함)

저는 자바 개발자가 아니므로이 코드는 약간 잘못되었습니다. :

@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(); 
     } 
    } 
} 

이제 statusCallback이 필요하지 않습니다.

도움이 될지 알려주세요.

+0

감사합니다. 회의에 참가자를 추가 할 수 있습니다. :) –

2

여기 Twilio 직원.

수 있습니다! 할 수있는 일은 REST API를 사용하여 발신 전화를 걸고 회의 동사가있는 TwiML과 동일한 회의 이름을 반환하는 것입니다. 예를 들어 conference1이라는 회의 통화를 만든 경우 다음과 같이 응답해야합니다. TwiML은 다음과 같습니다.

<Response> 
    <Dial> 
     <Conference>conference1</Conference> 
    </Dial> 
</Response> 

기존 회의에 발신 전화를 연결하거나 만듭니다.

기존 통화의 입력에 <Gather> 동사를 사용하는 경우이 솔루션을 사용할 수도 있습니다. 호출 흐름을 리디렉션하고 완전히 새로운 호출을 작성하지 않으려면 Gather 콜백에서이 TwiML을 리턴하십시오.

회의 SID를 추적 한 경우 아웃 바운드 전화 회의 통화 (sample code here)를 만들어 프로그래밍 방식으로 추가 할 수도 있습니다. TwiML과 마찬가지로 전화 회의가 없으면 Twilio가 전화 회의를 만듭니다. 그것이 존재한다면, Twilio는 그 사람을 그것에 추가 할 것입니다.

+0

리키 감사합니다. 당신의 노력에 정말 감사드립니다. –

관련 문제