Как сохранить некоторые данные в userStorage в клиентской библиотеке Java / Kotlin для действий в Google - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь сохранить некоторую информацию в userStorage в Kotlin

В javascript я сделал следующее

exports.saveFloor = (conv, floor) => {
conv.user.storage.floor = floor;

}

вот клиент библиотека

Ответы [ 2 ]

1 голос
/ 26 марта 2019

От Имя экстрасенса :

@ForIntent("request_name_permission")
public ActionResponse requestNamePermission(ActionRequest request) {
  ResponseBuilder response = getResponseBuilder(request);

  String requestedPermission = ConstantsKt.PERMISSION_NAME;

  response.getConversationData().put(DATA_KEY_REQUESTED_PERMISSION, requestedPermission);

  String storageKey = STORAGE_KEY_NAME;

  if (!request.getUserStorage().containsKey(storageKey)) {
    Permission permission =
        new Permission()
          .setContext(formatResponse("permission_reason"))
          .setPermissions(new String[] {requestedPermission});
    response.add("PLACEHOLDER_FOR_PERMISSION");
    response.add(permission);
  } else {
    String name = (String) request.getUserStorage().get(storageKey);
    response.add(formatResponse("say_name", name));
    response.endConversation();
  }

  return response.build();
}
0 голосов
/ 27 марта 2019

Я думаю, что фрагмент, который я искал, это

 Map<String, Object> storage = response.getUserStorage();

String requestedPermission =
    (String) request.getConversationData().get(DATA_KEY_REQUESTED_PERMISSION);
if (requestedPermission.equals(ConstantsKt.PERMISSION_NAME)) {
  String name = request.getUser().getProfile().getDisplayName();
  storage.put(STORAGE_KEY_NAME, name);
  response.add(formatResponse("say_name", name));
  response.endConversation();
  return response.build();
} 
if (requestedPermission.equals(ConstantsKt.PERMISSION_DEVICE_COARSE_LOCATION)) {
  String location = request.getDevice().getLocation().getCity();
  storage.put(STORAGE_KEY_LOCATION, location);
  showLocationOnScreen(request, response);
  return response.build();
} 

Эквивалент моего кода JavaScript в Kotlin будет

fun saveFloor(request: ActionRequest, floor: String) {
    val response = getResponseBuilder(request)
    val storage = response.userStorage as MutableMap

    storage["floor"] = floor
}

Приветствия Ника дляуказывая мне в правильном направлении

...