1

we are trying to use voice call for our web application. we tried using below code:

public class MakeCall {
  public static final String ACCOUNT_SID = "ACbXXXXXXXXXXXXXXXXXXXXXXXX";
  public static final String AUTH_TOKEN = "545XXXXXXXXXXXXXXXXXXXXXXXX";
  public static final String TWILIO_NUMBER = "+185XXXXXXXXX";
  public static void main(String[] args) throws TwilioRestException {
    TwilioRestClient client = new TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN);
    Account mainAccount = client.getAccount();
    CallFactory callFactory = mainAccount.getCallFactory();
    Map<String, String> callParams = new HashMap<String, String>();
    callParams.put("From",TWILIO_NUMBER);
    callParams.put("To", "+919014512394");
    callParams.put("Url", "http://ahoy.twilio.com/voice/api/demo");
    Call call = callFactory.create(callParams);
    System.out.println(call.getSid());
  }
}

From above code,we are able to hear twilio customer voice i.e,Welcome to the Twilio voice demo app. Press 1 to hear the weather forecast tomorrow. Press 2 to hear a song. Press 3 to create or join a conference bridge. Press 4 to record your voice for 5 seconds.

Actually we want to speak with other mobile number by calling from twilio number

Basically we are new to twilio API.Plz guide us Advance thanks

Marcos Placona
  • 21,468
  • 11
  • 68
  • 93
Yuvraj
  • 11
  • 1

1 Answers1

0

Twilio developer evangelist here.

The code you've written will initiate a new call when you call that endpoint. If you want to initiate a new call and then connect to another number so the two of you can talk, you need to change that slightly do it Dials the number for you.

Here's afull working example that shows you how to pick who you want to speak with, and then dials that person.

package com.twilio;

import com.twilio.twiml.Gather;
import com.twilio.twiml.Method;
import com.twilio.twiml.Play;
import com.twilio.twiml.Say;
import com.twilio.twiml.TwiMLException;
import com.twilio.twiml.VoiceResponse;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;

public class TwilioServlet extends HttpServlet {

    public void service(HttpServletRequest request, HttpServletResponse response) throws IOException {
        // Create a dict of people we know.
        HashMap<String, String> callers = new HashMap<String, String>();
        callers.put("+14158675309", "Curious George");
        callers.put("+14158675310", "Boots");
        callers.put("+14158675311", "Virgil");

        String fromNumber = request.getParameter("From");
        String knownCaller = callers.get(fromNumber);
        String message;
        if (knownCaller == null) {
            // Use a generic message
            message = "Hello Monkey";
        } else {
            // Use the caller's name
            message = "Hello " + knownCaller;
        }

        // Create a TwiML response and add our friendly message.
        VoiceResponse twiml = new VoiceResponse.Builder()
                .say(new Say.Builder(message).build())
                // Play an MP3 for incoming callers.
                .play(new Play.Builder("http://demo.twilio.com/hellomonkey/monkey.mp3").build())
                .gather(new Gather.Builder()
                        .action("/handle-key")
                        .method(Method.POST)
                        .numDigits(1)
                        .say(new Say
                                .Builder("To speak to a real monkey, press 1. Press any other key to start over.")
                                .build())
                        .build()
                )
                .build();

        response.setContentType("application/xml");
        try {
            response.getWriter().print(twiml.toXml());
        } catch (TwiMLException e) {
            e.printStackTrace();
        }
    }
}
  1. You start off with a HashMap containing all your telephone numbers
  2. Upon pressing a number, the /handle-key endpoint is called. This is where the logic for dialing another number happens

    package com.twilio;
    
    import com.twilio.twiml.Dial;
    import com.twilio.twiml.Number;
    import com.twilio.twiml.Say;
    import com.twilio.twiml.TwiMLException;
    import com.twilio.twiml.VoiceResponse;
    
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    public class TwilioHandleKeyServlet extends HttpServlet {
    
        @Override
        public void service(HttpServletRequest request, HttpServletResponse response) throws IOException {
    
            String digits = request.getParameter("Digits");
            VoiceResponse twiml;
            // Check if the user pressed "1" on their phone
            if (digits != null && digits.equals("1")) {
                // Connect 310 555 1212 to the incoming caller.
                Number number = new Number.Builder("+13105551212").build();
                Dial dial = new Dial.Builder().number(number).build();
    
                // If the above dial failed, say an error message.
                Say say = new Say.Builder("The call failed, or the remote party hung up. Goodbye.").build();
    
                twiml = new VoiceResponse.Builder().dial(dial).say(say).build();
            } else {
                // If they didn't press 1, redirect them to the TwilioServlet
                response.sendRedirect("/twiml");
                return;
            }
    
            response.setContentType("application/xml");
            try {
                response.getWriter().print(twiml.toXml());
            } catch (TwiMLException e) {
                e.printStackTrace();
            }
        }
    }
    

You can read a full explanation of this and find other examples in this quickstart.

Hope this helps you out.

Marcos Placona
  • 21,468
  • 11
  • 68
  • 93