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

Commit

Permalink
Added Skill x-ms-conversation-id request header (#1269)
Browse files Browse the repository at this point in the history
  • Loading branch information
tracyboehrer authored Jun 25, 2021
1 parent 2edbf3c commit e94ef7b
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 9 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

package com.microsoft.bot.connector;

/**
* Values and constants used for Conversation specific info.
*/
public final class ConversationConstants {
private ConversationConstants() {
}

/**
* The name of Http Request Header to add Conversation Id to skills requests.
*/
public static final String CONVERSATION_ID_HTTP_HEADERNAME = "x-ms-conversation-id";
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
package com.microsoft.bot.connector.rest;

import com.microsoft.bot.connector.Async;
import com.microsoft.bot.connector.ConversationConstants;
import com.microsoft.bot.restclient.ServiceResponseBuilder;
import com.microsoft.bot.schema.Activity;
import com.microsoft.bot.schema.AttachmentData;
Expand Down Expand Up @@ -111,15 +112,18 @@ CompletableFuture<Response<ResponseBody>> updateActivity(
@Header("User-Agent") String userAgent
);

@Headers({ "Content-Type: application/json; charset=utf-8",
"x-ms-logging-context: com.microsoft.bot.schema.Conversations replyToActivity" })
@Headers({
"Content-Type: application/json; charset=utf-8",
"x-ms-logging-context: com.microsoft.bot.schema.Conversations replyToActivity"
})
@POST("v3/conversations/{conversationId}/activities/{activityId}")
CompletableFuture<Response<ResponseBody>> replyToActivity(
@Path("conversationId") String conversationId,
@Path("activityId") String activityId,
@Body Activity activity,
@Header("accept-language") String acceptLanguage,
@Header("User-Agent") String userAgent
@Header("User-Agent") String userAgent,
@Header(ConversationConstants.CONVERSATION_ID_HTTP_HEADERNAME) String conversationIdHeader
);

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

return service.replyToActivity(
conversationId, activityId, activity, client.getAcceptLanguage(), client.getUserAgent()
conversationId,
activityId,
activity,
client.getAcceptLanguage(),
client.getUserAgent(),
conversationId
)

.thenApply(responseBodyResponse -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

package com.microsoft.bot.integration;

import com.microsoft.bot.connector.ConversationConstants;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
Expand Down Expand Up @@ -195,8 +196,12 @@ protected CompletableFuture<AppCredentials> buildCredentials(String appId, Strin
});
}

private <T extends Object> CompletableFuture<TypedInvokeResponse<T>> securePostActivity(URI toUrl,
Activity activity, String token, Class<T> type) {
private <T extends Object> CompletableFuture<TypedInvokeResponse<T>> securePostActivity(
URI toUrl,
Activity activity,
String token,
Class<T> type
) {
String jsonContent = "";
try {
ObjectMapper mapper = new JacksonAdapter().serializer();
Expand All @@ -208,7 +213,7 @@ private <T extends Object> CompletableFuture<TypedInvokeResponse<T>> securePostA

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

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

private Request buildRequest(URI url, RequestBody body, String token) {

private Request buildRequest(Activity activity, URI url, RequestBody body, String token) {
HttpUrl.Builder httpBuilder = HttpUrl.parse(url.toString()).newBuilder();

Request.Builder requestBuilder = new Request.Builder().url(httpBuilder.build());
if (token != null) {
requestBuilder.addHeader("Authorization", String.format("Bearer %s", token));
}
requestBuilder.addHeader(
ConversationConstants.CONVERSATION_ID_HTTP_HEADERNAME,
activity.getConversation().getId()
);
requestBuilder.post(body);
return requestBuilder.build();
}
Expand Down

0 comments on commit e94ef7b

Please sign in to comment.