Skip to content
This repository was archived by the owner on Dec 4, 2023. It is now read-only.

Commit e94ef7b

Browse files
authored
Added Skill x-ms-conversation-id request header (#1269)
1 parent 2edbf3c commit e94ef7b

File tree

3 files changed

+43
-9
lines changed

3 files changed

+43
-9
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT License.
3+
4+
package com.microsoft.bot.connector;
5+
6+
/**
7+
* Values and constants used for Conversation specific info.
8+
*/
9+
public final class ConversationConstants {
10+
private ConversationConstants() {
11+
}
12+
13+
/**
14+
* The name of Http Request Header to add Conversation Id to skills requests.
15+
*/
16+
public static final String CONVERSATION_ID_HTTP_HEADERNAME = "x-ms-conversation-id";
17+
}

libraries/bot-connector/src/main/java/com/microsoft/bot/connector/rest/RestConversations.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
package com.microsoft.bot.connector.rest;
88

99
import com.microsoft.bot.connector.Async;
10+
import com.microsoft.bot.connector.ConversationConstants;
1011
import com.microsoft.bot.restclient.ServiceResponseBuilder;
1112
import com.microsoft.bot.schema.Activity;
1213
import com.microsoft.bot.schema.AttachmentData;
@@ -111,15 +112,18 @@ CompletableFuture<Response<ResponseBody>> updateActivity(
111112
@Header("User-Agent") String userAgent
112113
);
113114

114-
@Headers({ "Content-Type: application/json; charset=utf-8",
115-
"x-ms-logging-context: com.microsoft.bot.schema.Conversations replyToActivity" })
115+
@Headers({
116+
"Content-Type: application/json; charset=utf-8",
117+
"x-ms-logging-context: com.microsoft.bot.schema.Conversations replyToActivity"
118+
})
116119
@POST("v3/conversations/{conversationId}/activities/{activityId}")
117120
CompletableFuture<Response<ResponseBody>> replyToActivity(
118121
@Path("conversationId") String conversationId,
119122
@Path("activityId") String activityId,
120123
@Body Activity activity,
121124
@Header("accept-language") String acceptLanguage,
122-
@Header("User-Agent") String userAgent
125+
@Header("User-Agent") String userAgent,
126+
@Header(ConversationConstants.CONVERSATION_ID_HTTP_HEADERNAME) String conversationIdHeader
123127
);
124128

125129
@Headers({ "Content-Type: application/json; charset=utf-8",
@@ -454,7 +458,12 @@ public CompletableFuture<ResourceResponse> replyToActivity(
454458
Validator.validate(activity);
455459

456460
return service.replyToActivity(
457-
conversationId, activityId, activity, client.getAcceptLanguage(), client.getUserAgent()
461+
conversationId,
462+
activityId,
463+
activity,
464+
client.getAcceptLanguage(),
465+
client.getUserAgent(),
466+
conversationId
458467
)
459468

460469
.thenApply(responseBodyResponse -> {

libraries/bot-integration-core/src/main/java/com/microsoft/bot/integration/BotFrameworkHttpClient.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
package com.microsoft.bot.integration;
55

6+
import com.microsoft.bot.connector.ConversationConstants;
67
import java.util.HashMap;
78
import java.util.Map;
89
import java.util.concurrent.CompletableFuture;
@@ -195,8 +196,12 @@ protected CompletableFuture<AppCredentials> buildCredentials(String appId, Strin
195196
});
196197
}
197198

198-
private <T extends Object> CompletableFuture<TypedInvokeResponse<T>> securePostActivity(URI toUrl,
199-
Activity activity, String token, Class<T> type) {
199+
private <T extends Object> CompletableFuture<TypedInvokeResponse<T>> securePostActivity(
200+
URI toUrl,
201+
Activity activity,
202+
String token,
203+
Class<T> type
204+
) {
200205
String jsonContent = "";
201206
try {
202207
ObjectMapper mapper = new JacksonAdapter().serializer();
@@ -208,7 +213,7 @@ private <T extends Object> CompletableFuture<TypedInvokeResponse<T>> securePostA
208213

209214
try {
210215
RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), jsonContent);
211-
Request request = buildRequest(toUrl, body, token);
216+
Request request = buildRequest(activity, toUrl, body, token);
212217
Response response = httpClient.newCall(request).execute();
213218

214219
T result = Serialization.getAs(response.body().string(), type);
@@ -219,14 +224,17 @@ private <T extends Object> CompletableFuture<TypedInvokeResponse<T>> securePostA
219224
}
220225
}
221226

222-
private Request buildRequest(URI url, RequestBody body, String token) {
223-
227+
private Request buildRequest(Activity activity, URI url, RequestBody body, String token) {
224228
HttpUrl.Builder httpBuilder = HttpUrl.parse(url.toString()).newBuilder();
225229

226230
Request.Builder requestBuilder = new Request.Builder().url(httpBuilder.build());
227231
if (token != null) {
228232
requestBuilder.addHeader("Authorization", String.format("Bearer %s", token));
229233
}
234+
requestBuilder.addHeader(
235+
ConversationConstants.CONVERSATION_ID_HTTP_HEADERNAME,
236+
activity.getConversation().getId()
237+
);
230238
requestBuilder.post(body);
231239
return requestBuilder.build();
232240
}

0 commit comments

Comments
 (0)