Skip to content

Commit 21c5679

Browse files
committed
Fixes #72: Expose SIP custom headers for calls in RCDevice.connect() of the SDK
1 parent 5f649b6 commit 21c5679

File tree

5 files changed

+35
-12
lines changed

5 files changed

+35
-12
lines changed

Examples/restcomm-messenger/app/src/main/java/com/telestax/restcomm_messenger/MainActivity.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333

3434
import java.util.ArrayList;
3535
import java.util.HashMap;
36+
import java.util.Map;
37+
import java.util.Vector;
3638

3739

3840
public class MainActivity extends Activity implements RCDeviceListener, RCConnectionListener,
@@ -156,8 +158,14 @@ public void onClick(View view) {
156158
Log.e(TAG, "Error: already connected");
157159
return;
158160
}
159-
HashMap<String, String> connectParams = new HashMap<String, String>();
161+
HashMap<String, Object> connectParams = new HashMap<String, Object>();
160162
connectParams.put("username", txtUri.getText().toString());
163+
164+
// if you want to add custom SIP headers, please uncomment this
165+
//HashMap<String, String> sipHeaders = new HashMap<>();
166+
//sipHeaders.put("X-SIP-Header1", "Value1");
167+
//connectParams.put("sip-headers", sipHeaders);
168+
161169
connection = device.connect(connectParams, this);
162170
if (connection == null) {
163171
Log.e(TAG, "Error: error connecting");

restcomm.android.client.sdk/src/main/java/org/mobicents/restcomm/android/client/sdk/RCDevice.java

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
package org.mobicents.restcomm.android.client.sdk;
2424

2525
import java.util.HashMap;
26+
import java.util.Iterator;
2627
import java.util.Map;
2728

2829
import android.app.Activity;
@@ -191,7 +192,7 @@ public void updateCapabilityToken(String token)
191192
* @param listener The listener object that will receive events when the connection state changes
192193
*
193194
* @return An RCConnection object representing the new connection
194-
*/ public RCConnection connect(Map<String, String> parameters, RCConnectionListener listener)
195+
*/ public RCConnection connect(Map<String, Object> parameters, RCConnectionListener listener)
195196
{
196197
if (haveConnectivity()) {
197198
RCConnection connection = new RCConnection(listener);
@@ -200,8 +201,19 @@ public void updateCapabilityToken(String token)
200201
//DeviceImpl.GetInstance().listener = this;
201202
DeviceImpl.GetInstance().sipuaConnectionListener = connection;
202203

203-
DeviceImpl.GetInstance().Call(parameters.get("username"));
204-
204+
// create a new hash map
205+
HashMap<String, String> sipHeaders = null;
206+
if (parameters.containsKey("sip-headers")) {
207+
sipHeaders = (HashMap<String, String>)parameters.get("sip-headers");
208+
}
209+
DeviceImpl.GetInstance().Call((String)parameters.get("username"), sipHeaders);
210+
/*
211+
for (Map.Entry<String, String> entry : parameters.entrySet()) {
212+
if (entry.getKey().startsWith("X")) {
213+
sipHeaders.put(entry.getKey(), entry.getValue());
214+
}
215+
}
216+
*/
205217
return connection;
206218
}
207219
else {

sipua/src/main/java/org/mobicents/restcomm/android/sipua/IDevice.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,13 @@
2727

2828
import android.media.AudioManager;
2929

30+
import java.util.HashMap;
31+
3032
public interface IDevice extends ISipEventListener{
3133

3234
void Register();
3335

34-
void Call(String to);
36+
void Call(String to, HashMap<String, String> sipHeaders);
3537

3638
void Accept();
3739

sipua/src/main/java/org/mobicents/restcomm/android/sipua/impl/DeviceImpl.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,11 @@ public void onSipMessage(final SipEvent sipEventObject) {
102102
}
103103

104104
@Override
105-
public void Call(String to) {
105+
public void Call(String to, HashMap<String, String> sipHeaders) {
106106
try {
107+
if (sipHeaders != null) {
108+
sipManager.setCustomHeaders(sipHeaders);
109+
}
107110
this.sipManager.Call(to, this.soundManager.setupAudioStream());
108111
} catch (NotInitializedException e) {
109112
e.printStackTrace();

sipua/src/main/java/org/mobicents/restcomm/android/sipua/impl/sipmessages/Invite.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,8 @@ public Request MakeRequest(SipManager sipManager,String to, int port){
8989
// You can add extension headers of your own making
9090
// to the outgoing SIP request.
9191
// Add the extension header.
92-
Header extensionHeader = sipManager.headerFactory.createHeader("My-Header",
93-
"my header value");
94-
callRequest.addHeader(extensionHeader);
92+
//Header extensionHeader = sipManager.headerFactory.createHeader("My-Header", "my header value");
93+
//callRequest.addHeader(extensionHeader);
9594

9695
String sdpData= "v=0\r\n" +
9796
"o=- 13760799956958020 13760799956958020" + " IN IP4 " + sipManager.getSipProfile().getLocalIp() +"\r\n" +
@@ -112,9 +111,8 @@ public Request MakeRequest(SipManager sipManager,String to, int port){
112111
// You can add as many extension headers as you
113112
// want.
114113

115-
extensionHeader = sipManager.headerFactory.createHeader("My-Other-Header",
116-
"my new header value ");
117-
callRequest.addHeader(extensionHeader);
114+
//extensionHeader = sipManager.headerFactory.createHeader("My-Other-Header", "my new header value ");
115+
//callRequest.addHeader(extensionHeader);
118116

119117
Header callInfoHeader = sipManager.headerFactory.createHeader("Call-Info",
120118
"<http://www.antd.nist.gov>");

0 commit comments

Comments
 (0)