FB-BotMill est conçu pour faciliter le processus de développement, de conception et d'exécution des robots qui existent au sein de Facebook.
Il fournit une API Java sémantique qui peut être importée sur votre projet Java EE pour envoyer et recevoir des messages de Facebook afin que les développeurs puissent se concentrer sur le développement de l'application réelle au lieu de gérer les points de terminaison de l'API Facebook.
<dependency>
<groupId>co.aurasphere.botmill</groupId>
<artifactId>fb-botmill</artifactId>
<version>2.0.0-RC3</version>
</dependency>
Graduation
compile 'co.aurasphere.botmill:fb-botmill:2.0.0-RC3'
Groovy
@Grapes(
@Grab(group='co.aurasphere.botmill', module='fb-botmill', version='2.0.0-RC3')
)
Autres moyens d'importer, visitez le site du référentiel central Maven
< servlet >
< servlet-name >myFbBot</ servlet-name >
< servlet-class >co.aurasphere.botmill.fb.FbBotMillServlet</ servlet-class >
</ servlet >
< servlet-mapping >
< servlet-name >myFbBot</ servlet-name >
< url-pattern >/myFbBot</ url-pattern >
</ servlet-mapping >
Prenez note du mappage d'URL car il sera utilisé sur la configuration de votre webhook dans Facebook.
1er : configurez le jeton de page et le jeton de validation. Créez le fichier botmill.properties dans votre chemin de classe et ajoutez vos jetons.
fb.page.token =<PAGE_TOKEN>
fb.validation.token =<VALIDATION_TOKEN>
Notez que vous pouvez chiffrer le fichier de propriétés à l'aide de notre chiffrement intégré basé sur Jaspyt. Accédez à notre wiki ici pour savoir comment configurer votre fichier botmill.properties crypté.
2ème : configurez votre classe de cryptage. Nous encourageons strictement l'utilisation de Jaspyt pour chiffrer les jetons, pour cela, nous devons nous assurer que vous créez votre propre classe Jaspyt Encryption. Pour ce faire, créez ce qui suit sur votre projet.
@ BotEncryption
public class DefaultEncryption {
public DefaultEncryption () {
StandardPBEStringEncryptor enc = new StandardPBEStringEncryptor ();
enc . setPassword ( "password" ); // can be sourced out
ConfigurationUtils . loadEncryptedConfigurationFile ( enc , "botmill.properties" );
}
}
Le mot de passe dépend de vous et peut être obtenu n'importe où (via https ou ftp). L'essentiel ici est que ce texte est ce que Jaspyt utilisera pour décrypter votre fichier botmill.properties.
...
enc . setPassword ( "https://mydomain.com/encryptionpassword/password.txt" ); // can be sourced out
..
Une fois que vous avez fait cela, nous devons utiliser le projet botmill-crypto-util pour créer la version cryptée de votre jeton de page et de votre jeton de validation. Téléchargez le botmill-crypto-util [ici] (https://oss.sonatype.org/content/repositories/snapshots/co/aurasphere/botmill/botmill-crypto-util/0.0.1-SNAPSHOT/botmill-crypto-util -0.0.1-20170228.035750-1-jar-with-dependencies.jar) et exécutez la commande suivante :
java -jar botmill-crypto-util-0.0.1-20170228.035750-1-jar-with-dependencies.jar enc <page_token> java -jar botmill-crypto-util-0.0.1-20170228.035750-1-jar-with-dependencies .jar enc <validation_token>
Cela crachera la version cryptée de votre fichier texte. Modifiez votre botmill.properties avec ces valeurs mais assurez-vous de le mettre dans l'ENC(***)
fb.page.token =ENC(<ENCRYPTED_PAGE_TOKEN>)
fb.validation.token =ENC(<ENCRYPTED_VALIDATION_TOKEN>)
Redéployez et vous êtes prêt à partir.
3ème : configurez votre BotConfiguration La classe BotConfiguration se chargera des processus ponctuels qui doivent avoir lieu (menus persistants, authentification de l'API Facebook, etc.). Créez une FbBotConfiguration ci-dessous et placez toute votre configuration initiale (configuration unique) sur le constructeur. Cela initialisera également l'authentification Facebook.
@ BotConfiguration
public class MyBotConfiguration extends FbBotConfiguration {
public MyBotConfiguration () {
MessengerProfileApi . setGetStartedButton ( "get_started" );
MessengerProfileApi . setGreetingMessage ( "Hello!" );
List < PersistentMenu > persistentMenus = new ArrayList < PersistentMenu >();
PersistentMenu persistentMenu = new PersistentMenu ( "default" , false );
persistentMenu . addCallToAction ( ButtonFactory . createPostbackButton ( "Menu 1" , "menu1" ));
persistentMenu . addCallToAction ( ButtonFactory . createPostbackButton ( "Menu 2" , "menu2" ));
CallToActionNested theNestedMenu = new CallToActionNested ( "Menu 3 Nested" );
theServices . addCallToActionButton ( ButtonFactory . createPostbackButton ( "Nested1" , "nested1" ));
theServices . addCallToActionButton ( ButtonFactory . createPostbackButton ( "Nested2" , "nested2" ));
theServices . addCallToActionButton ( ButtonFactory . createPostbackButton ( "Nested3" , "nested3" ));
persistentMenu . addCallToAction ( theNestedMenu );
persistentMenus . add ( persistentMenu );
MessengerProfileApi . setPersistentMenus ( persistentMenus );
HomeUrl homeUrl = new HomeUrl ();
homeUrl . setInTest ( true );
homeUrl . setUrl ( "https://extensionlink.co" );
homeUrl . setWebviewHeightRatio ( WebViewHeightRatioType . TALL );
homeUrl . setWebviewShareButton ( WebViewShareButton . SHOW );
MessengerProfileApi . setHomeUrl ( homeUrl );
}
}
4ème : Configurez la/les classe(s) FbBot. Notre framework facilite et simplifie la définition d'un comportement de robot Facebook en marquant les classes en tant qu'objets de comportement.
@ Bot
public class MyBotClass extends FbBot {
@ FbBotMillController ( eventType = FbBotMillEventType . MESSAGE , text = "Hi" , caseSensitive = true )
public void sendMessage ( MessageEnvelope envelope ) {
reply ( new MessageAutoReply ( "Hello World!" ));
}
}
@ Bot ( state = BotBeanState . PROTOTYPE ) // creates a new instance per call
public class MyBotClass1 extends FbBot {
@ FbBotMillController ( eventType = FbBotMillEventType . MESSAGE , text = "Hi" , caseSensitive = true )
public void sendMessage ( MessageEnvelope envelope ) {
reply ( new MessageAutoReply ( "Hello World on BotClass1" ));
}
}
@ Bot ( state = BotBeanState . SINGLETON ) // uses the same reference/instance (this is the default).
public class MyBotClass2 extends FbBot {
@ FbBotMillController ( eventType = FbBotMillEventType . MESSAGE , text = "Hi" , caseSensitive = true )
public void sendMessage ( MessageEnvelope envelope ) {
reply ( new MessageAutoReply ( "Hello World on BotClass2" ));
}
}
détecter un modèle et répondre avec une réponse rapide
@ FbBotMillController ( eventType = FbBotMillEventType . MESSAGE_PATTERN , pattern = "(?i:hi)|(?i:hello)|(?i:hey)|(?i:good day)|(?i:home)" )
public void replyWithQuickReply ( MessageEnvelope envelope ) {
reply ( new AutoReply () {
@ Override
public FbBotMillResponse createResponse ( MessageEnvelope envelope ) {
return ReplyFactory . addTextMessageOnly ( "Text message with quick replies" )
. addQuickReply ( "Quick reply 1" , "Payload for quick reply 1" ). build ( envelope );
}
});
}
ou répondez avec un bouton
@ FbBotMillController ( eventType = FbBotMillEventType . MESSAGE_PATTERN , pattern = "(?i:hi)|(?i:hello)|(?i:hey)|(?i:good day)|(?i:home)" )
public void replyWithButtonTemplate ( MessageEnvelope envelope ) {
reply ( new AutoReply () {
@ Override
public FbBotMillResponse createResponse ( MessageEnvelope envelope ) {
return ReplyFactory . addButtonTemplate ( "Test button template" )
. addPostbackButton ( "postback button" , "postback button payload" )
. addPhoneNumberButton ( "phone number button" , "+123456789" )
. addUrlButton ( "web url button" , "https://github.com/BotMill/fb-botmill" ). build ( envelope );
}
});
}
Consultez nos documents pour une liste complète des types d’événements et des réponses.
Composants clés dans la construction de votre ChatBot
Copyright (c) 2016-2017 BotMill.io