Skip to content
This repository was archived by the owner on Dec 4, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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