1 /* 2 * Copyright (c) 2002-2017, Mairie de Paris 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 9 * 1. Redistributions of source code must retain the above copyright notice 10 * and the following disclaimer. 11 * 12 * 2. Redistributions in binary form must reproduce the above copyright notice 13 * and the following disclaimer in the documentation and/or other materials 14 * provided with the distribution. 15 * 16 * 3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its 17 * contributors may be used to endorse or promote products derived from 18 * this software without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE 24 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 * POSSIBILITY OF SUCH DAMAGE. 31 * 32 * License 1.0 33 */ 34 35 package fr.paris.lutece.plugins.chatbot.service.bot; 36 37 import fr.paris.lutece.plugins.chatbot.business.BotPost; 38 39 import java.util.List; 40 import java.util.Locale; 41 42 /** 43 * ChatBot 44 */ 45 public interface ChatBot 46 { 47 /** 48 * Get the bot ID 49 * 50 * @return The ID 51 */ 52 String getKey( ); 53 54 /** 55 * Gets the bot name 56 * 57 * @param locale 58 * The locale 59 * @return The name 60 */ 61 String getName( Locale locale ); 62 63 /** 64 * Gets the bot description 65 * 66 * @param locale 67 * The locale 68 * @return The description 69 */ 70 String getDescription( Locale locale ); 71 72 /** 73 * Process the user message 74 * 75 * @param strMessage 76 * The user message 77 * @param strConversationId 78 * The conversation ID 79 * @param locale 80 * The locale 81 * @return The list of bot responses 82 */ 83 List<BotPost> processUserMessage( String strMessage, String strConversationId, Locale locale ); 84 85 /** 86 * Returns available languages 87 * 88 * @return available languages 89 */ 90 List<String> getAvailableLanguages( ); 91 92 /** 93 * The image URL of the bot's avatar 94 * 95 * @return The URL 96 */ 97 String getAvatarUrl( ); 98 99 /** 100 * Is standalone (mode for iframe) 101 * 102 * @return true if standalone 103 */ 104 boolean isStandalone( ); 105 106 /** 107 * The welcome message 108 * 109 * @return The welcome message 110 */ 111 String getWelcomeMessage( ); 112 113 114 /** 115 * Reset the conversation 116 * @param strConversationId The conversation ID 117 */ 118 void reset( String strConversationId ); 119 }