in libraries/bot-builder/src/main/java/com/microsoft/bot/builder/teams/TeamsActivityHandler.java [62:189]
protected CompletableFuture<InvokeResponse> onInvokeActivity(TurnContext turnContext) {
CompletableFuture<InvokeResponse> result;
try {
if (turnContext.getActivity().getName() == null && turnContext.getActivity().isTeamsActivity()) {
result = onTeamsCardActionInvoke(turnContext);
} else {
switch (turnContext.getActivity().getName()) {
case "fileConsent/invoke":
result = onTeamsFileConsent(
turnContext,
Serialization.safeGetAs(turnContext.getActivity().getValue(), FileConsentCardResponse.class)
);
break;
case "actionableMessage/executeAction":
result = onTeamsO365ConnectorCardAction(
turnContext,
Serialization
.safeGetAs(turnContext.getActivity().getValue(), O365ConnectorCardActionQuery.class)
).thenApply(aVoid -> createInvokeResponse(null));
break;
case "composeExtension/queryLink":
result = onTeamsAppBasedLinkQuery(
turnContext,
Serialization.safeGetAs(turnContext.getActivity().getValue(), AppBasedLinkQuery.class)
).thenApply(this::createInvokeResponse);
break;
case "composeExtension/query":
result = onTeamsMessagingExtensionQuery(
turnContext,
Serialization.safeGetAs(turnContext.getActivity().getValue(), MessagingExtensionQuery.class)
).thenApply(this::createInvokeResponse);
break;
case "composeExtension/selectItem":
result = onTeamsMessagingExtensionSelectItem(turnContext, turnContext.getActivity().getValue())
.thenApply(this::createInvokeResponse);
break;
case "composeExtension/submitAction":
result =
onTeamsMessagingExtensionSubmitActionDispatch(
turnContext,
Serialization
.safeGetAs(turnContext.getActivity().getValue(), MessagingExtensionAction.class)
).thenApply(this::createInvokeResponse);
break;
case "composeExtension/fetchTask":
result =
onTeamsMessagingExtensionFetchTask(
turnContext,
Serialization
.safeGetAs(turnContext.getActivity().getValue(), MessagingExtensionAction.class)
).thenApply(this::createInvokeResponse);
break;
case "composeExtension/querySettingUrl":
result = onTeamsMessagingExtensionConfigurationQuerySettingUrl(
turnContext,
Serialization.safeGetAs(turnContext.getActivity().getValue(), MessagingExtensionQuery.class)
).thenApply(this::createInvokeResponse);
break;
case "composeExtension/setting":
result = onTeamsMessagingExtensionConfigurationSetting(
turnContext,
turnContext.getActivity().getValue()
).thenApply(this::createInvokeResponse);
break;
case "composeExtension/onCardButtonClicked":
result = onTeamsMessagingExtensionCardButtonClicked(
turnContext,
turnContext.getActivity().getValue()
).thenApply(this::createInvokeResponse);
break;
case "task/fetch":
result = onTeamsTaskModuleFetch(
turnContext,
Serialization.safeGetAs(turnContext.getActivity().getValue(), TaskModuleRequest.class)
).thenApply(this::createInvokeResponse);
break;
case "task/submit":
result = onTeamsTaskModuleSubmit(
turnContext,
Serialization.safeGetAs(turnContext.getActivity().getValue(), TaskModuleRequest.class)
).thenApply(this::createInvokeResponse);
break;
case "tab/fetch":
result = onTeamsTabFetch(
turnContext,
Serialization.safeGetAs(turnContext.getActivity().getValue(), TabRequest.class)
).thenApply(this::createInvokeResponse);
break;
case "tab/submit":
result = onTeamsTabSubmit(
turnContext,
Serialization.safeGetAs(turnContext.getActivity().getValue(), TabSubmit.class)
).thenApply(this::createInvokeResponse);
break;
default:
result = super.onInvokeActivity(turnContext);
break;
}
}
} catch (Throwable t) {
result = new CompletableFuture<>();
result.completeExceptionally(t);
}
return result.exceptionally(e -> {
if (e instanceof CompletionException && e.getCause() instanceof InvokeResponseException) {
return ((InvokeResponseException) e.getCause()).createInvokeResponse();
} else if (e instanceof InvokeResponseException) {
return ((InvokeResponseException) e).createInvokeResponse();
}
return new InvokeResponse(HttpURLConnection.HTTP_INTERNAL_ERROR, e.getLocalizedMessage());
});
}