BotMill / fb-botmill

A Java framework for building bots on Facebook's Messenger Platform.
MIT License
72 stars 26 forks source link

Error when trying to initialize / create a get started button #62

Closed alvin-reyes closed 7 years ago

alvin-reyes commented 7 years ago

Whenever I try to create a get started button via FbBotMillThreadSettingsConfiguration.setGetStartedButton("Get Started Button Payload"); it gives me the following exception:

java.lang.NullPointerException: null
    at co.aurasphere.botmill.fb.internal.util.json.ButtonSerializer.getButtonClass(ButtonSerializer.java:92) ~[classes/:na]
    at co.aurasphere.botmill.fb.internal.util.json.ButtonSerializer.serialize(ButtonSerializer.java:63) ~[classes/:na]
    at co.aurasphere.botmill.fb.internal.util.json.ButtonSerializer.serialize(ButtonSerializer.java:1) ~[classes/:na]
    at com.google.gson.internal.bind.TreeTypeAdapter.write(TreeTypeAdapter.java:81) ~[gson-2.7.jar:na]
    at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:69) ~[gson-2.7.jar:na]
    at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:97) ~[gson-2.7.jar:na]
    at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:61) ~[gson-2.7.jar:na]
    at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:69) ~[gson-2.7.jar:na]
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:125) ~[gson-2.7.jar:na]
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:243) ~[gson-2.7.jar:na]
    at com.google.gson.Gson.toJson(Gson.java:669) ~[gson-2.7.jar:na]
    at com.google.gson.Gson.toJson(Gson.java:648) ~[gson-2.7.jar:na]
    at com.google.gson.Gson.toJson(Gson.java:603) ~[gson-2.7.jar:na]
    at com.google.gson.Gson.toJson(Gson.java:583) ~[gson-2.7.jar:na]
    at co.aurasphere.botmill.fb.internal.util.json.JsonUtils.toJson(JsonUtils.java:116) ~[classes/:na]
    at co.aurasphere.botmill.fb.internal.util.network.NetworkUtils.toStringEntity(NetworkUtils.java:358) [classes/:na]
    at co.aurasphere.botmill.fb.internal.util.network.NetworkUtils.postThreadSetting(NetworkUtils.java:162) [classes/:na]
    at co.aurasphere.botmill.fb.threadsettings.FbBotMillThreadSettingsConfiguration.setGetStartedButton(FbBotMillThreadSettingsConfiguration.java:132) [classes/:na]
alvin-reyes commented 7 years ago

Fixed this by setting the button type upon creating the Get Started button.

    public static void setGetStartedButton(String payload) {
        if (payload == null || payload.isEmpty()) {
            logger.error("FbBotMill validation error: Get Started Button payload can't be null or empty!");
            return;
        }
        Button button = new PostbackButton(null, ButtonType.POSTBACK, payload);
        List<Button> buttonList = new ArrayList<Button>();
        buttonList.add(button);
        CallToActionsRequest request = new CallToActionsRequest(
                ThreadState.NEW_THREAD, buttonList);
        NetworkUtils.postThreadSetting(request);
    }