code: public boolean initiateOutgoingCall(String fromUri, String toUri, String viaNonProxyRoute) {
      return initiateOutgoingCall(fromUri, toUri, viaNonProxyRoute, null);
    }
docs: This basic method is used to initiate an outgoing call. That is, it applies to the scenario
  where a UAC is originating a call to the network. There are two ways to make an outgoing call:
  1) Use SipPhone.createSipCall() and then call this method, when you need to see
  intermediate/provisional responses received - you will have to handle each yourself. Or, 2) use
  one of the SipPhone.makeCall() methods when you want to establish an outgoing call without
  worrying about the call establishment details (TRYING, authentication challenge, etc.).
  Regardless, all received responses are collected, so you will be able to see
  intermediate/provisional responses received (albeit after the fact, with makeCall()).
  
  <p>
  This method returns when the request message has been sent out. Your calling program must
  subsequently call the waitOutgoingCallResponse() method (one or more times) to get the
  result(s), and optionally at some point, waitForAnswer() if you're no longer interested in
  processing intermediate responses.
  
  @param fromUri An URI string (ex: sip:bob@192.0.2.4), or null to use the default 'from' address
  (me) specified when the SipPhone object was created (SipStack.createSipPhone()).
  @param toUri The URI (sip:bob@nist.gov) to which the call should be directed
  @param viaNonProxyRoute Indicates whether to route the INVITE via Proxy or some other route. If
  null, route the call to the Proxy that was specified when the SipPhone object was
  created (SipStack.createSipPhone()). Else route it to the given node, which is specified
  as "hostaddress:port;parms/transport" i.e. 129.1.22.333:5060;lr/UDP.
  @return true if the message was successfully sent, false otherwise.