use of com.google.api.services.actions_fulfillment.v2.model.OrderUpdateV3 in project dialogflow-transactions-java by actions-on-google.
the class TransactionsApp method sendOrderUpdate.
private static void sendOrderUpdate(String orderId) throws IOException {
// Setup service account credentials
String serviceAccountKeyFileName = "service-account.json";
// Setup service account credentials
String serviceAccountFile = TransactionsApp.class.getClassLoader().getResource(serviceAccountKeyFileName).getFile();
InputStream actionsApiServiceAccount = new FileInputStream(serviceAccountFile);
ServiceAccountCredentials serviceAccountCredentials = (ServiceAccountCredentials) ServiceAccountCredentials.fromStream(actionsApiServiceAccount).createScoped(Collections.singleton("https://www.googleapis.com/auth/actions.order.developer"));
AccessToken token = serviceAccountCredentials.refreshAccessToken();
// Setup request with headers
HttpPatch request = new HttpPatch("https://actions.googleapis.com/v3/orders/" + orderId);
request.setHeader("Content-type", "application/json");
request.setHeader("Authorization", "Bearer " + token.getTokenValue());
// Create order update
FieldMask fieldMask = FieldMask.newBuilder().addAllPaths(Arrays.asList("lastUpdateTime", "purchase.status", "purchase.userVisibleStatusLabel")).build();
OrderUpdateV3 orderUpdate = new OrderUpdateV3().setOrder(new OrderV3().setMerchantOrderId(orderId).setLastUpdateTime(Instant.now().toString()).setPurchase(new PurchaseOrderExtension().setStatus("DELIVERED").setUserVisibleStatusLabel("Order delivered."))).setUpdateMask(FieldMaskUtil.toString(fieldMask)).setReason("Order status was updated to delivered.");
// Setup JSON body containing order update
JsonParser parser = new JsonParser();
JsonObject orderUpdateJson = parser.parse(new Gson().toJson(orderUpdate)).getAsJsonObject();
JsonObject body = new JsonObject();
body.add("orderUpdate", orderUpdateJson);
JsonObject header = new JsonObject();
header.addProperty("isInSandbox", true);
body.add("header", header);
StringEntity entity = new StringEntity(body.toString());
entity.setContentType(ContentType.APPLICATION_JSON.getMimeType());
request.setEntity(entity);
// Make request
HttpClient httpClient = HttpClientBuilder.create().build();
HttpResponse response = httpClient.execute(request);
LOGGER.info(response.getStatusLine().getStatusCode() + " " + response.getStatusLine().getReasonPhrase());
}
use of com.google.api.services.actions_fulfillment.v2.model.OrderUpdateV3 in project dialogflow-transactions-java by actions-on-google.
the class TransactionsApp method transactionDecisionComplete.
// Check result of asking to perform transaction / place order
@ForIntent("Transaction Decision Complete")
public ActionResponse transactionDecisionComplete(ActionRequest request) {
ResourceBundle rb = ResourceBundle.getBundle("resources", request.getLocale());
// Check transaction decision value
Argument transactionDecisionValue = request.getArgument("TRANSACTION_DECISION_VALUE");
Map<String, Object> extension = null;
if (transactionDecisionValue != null) {
extension = transactionDecisionValue.getExtension();
}
String transactionDecision = null;
if (extension != null) {
transactionDecision = (String) extension.get("transactionDecision");
}
ResponseBuilder responseBuilder = getResponseBuilder(request);
if ((transactionDecision != null && transactionDecision.equals("ORDER_ACCEPTED"))) {
OrderV3 order = ((OrderV3) extension.get("order"));
order.setLastUpdateTime(Instant.now().toString());
// Update order status
PurchaseOrderExtension purchaseOrderExtension = order.getPurchase();
purchaseOrderExtension.setStatus("CONFIRMED");
purchaseOrderExtension.setUserVisibleStatusLabel("Order confirmed");
order.setPurchase(purchaseOrderExtension);
// Order update
OrderUpdateV3 orderUpdate = new OrderUpdateV3().setType("SNAPSHOT").setReason("Reason string").setOrder(order);
Map<String, Object> conversationData = request.getConversationData();
String orderId = (String) conversationData.get("UNIQUE_ORDER_ID");
String response = MessageFormat.format(rb.getString("transaction_decision_result_success"), orderId);
responseBuilder.add(response).add(new StructuredResponse().setOrderUpdateV3(orderUpdate));
} else {
responseBuilder.add(rb.getString("transaction_failed"));
}
return responseBuilder.endConversation().build();
}
Aggregations