Class ConversationFactory


  • public class ConversationFactory
    extends Object
    A ConversationFactory is responsible for creating a Conversation from a predefined template. A ConversationFactory is typically created when a plugin is instantiated and builds a Conversation each time a user initiates a conversation with the plugin. Each Conversation maintains its own state and calls back as needed into the plugin.

    The ConversationFactory implements a fluid API, allowing parameters to be set as an extension to the constructor.

    • Constructor Detail

      • ConversationFactory

        public ConversationFactory​(@NotNull
                                   Plugin plugin)
        Constructs a ConversationFactory.
        Parameters:
        plugin - The plugin that owns the factory.
    • Method Detail

      • withModality

        @NotNull
        public ConversationFactory withModality​(boolean modal)
        Sets the modality of all Conversations created by this factory. If a conversation is modal, all messages directed to the player are suppressed for the duration of the conversation.

        The default is True.

        Parameters:
        modal - The modality of all conversations to be created.
        Returns:
        This object.
      • withLocalEcho

        @NotNull
        public ConversationFactory withLocalEcho​(boolean localEchoEnabled)
        Sets the local echo status for all Conversations created by this factory. If local echo is enabled, any text submitted to a conversation gets echoed back into the submitter's chat window.
        Parameters:
        localEchoEnabled - The status of local echo.
        Returns:
        This object.
      • withTimeout

        @NotNull
        public ConversationFactory withTimeout​(int timeoutSeconds)
        Sets the number of inactive seconds to wait before automatically abandoning all generated conversations.

        The default is 600 seconds (5 minutes).

        Parameters:
        timeoutSeconds - The number of seconds to wait.
        Returns:
        This object.
      • withFirstPrompt

        @NotNull
        public ConversationFactory withFirstPrompt​(@Nullable
                                                   Prompt firstPrompt)
        Sets the first prompt to use in all generated conversations.

        The default is Prompt.END_OF_CONVERSATION.

        Parameters:
        firstPrompt - The first prompt.
        Returns:
        This object.
      • withInitialSessionData

        @NotNull
        public ConversationFactory withInitialSessionData​(@NotNull
                                                          Map<Object,​Object> initialSessionData)
        Sets any initial data with which to populate the conversation context sessionData map.
        Parameters:
        initialSessionData - The conversation context's initial sessionData.
        Returns:
        This object.
      • withEscapeSequence

        @NotNull
        public ConversationFactory withEscapeSequence​(@NotNull
                                                      String escapeSequence)
        Sets the player input that, when received, will immediately terminate the conversation.
        Parameters:
        escapeSequence - Input to terminate the conversation.
        Returns:
        This object.
      • thatExcludesNonPlayersWithMessage

        @NotNull
        public ConversationFactory thatExcludesNonPlayersWithMessage​(@Nullable
                                                                     String playerOnlyMessage)
        Prevents this factory from creating a conversation for non-player Conversable objects.
        Parameters:
        playerOnlyMessage - The message to return to a non-play in lieu of starting a conversation.
        Returns:
        This object.
      • buildConversation

        @NotNull
        public Conversation buildConversation​(@NotNull
                                              Conversable forWhom)
        Constructs a Conversation in accordance with the defaults set for this factory.
        Parameters:
        forWhom - The entity for whom the new conversation is mediating.
        Returns:
        A new conversation.