FB-BotMill은 Facebook 내부에 존재하는 봇을 개발, 설계 및 실행하는 프로세스를 쉽게 하도록 설계되었습니다.
개발자가 Facebook API 엔드포인트를 처리하는 대신 실제 애플리케이션 개발에 집중할 수 있도록 Java EE 프로젝트에서 가져와 Facebook에서 메시지를 보내고 받을 수 있는 시맨틱 Java API를 제공합니다.
<dependency>
<groupId>co.aurasphere.botmill</groupId>
<artifactId>fb-botmill</artifactId>
<version>2.0.0-RC3</version>
</dependency>
그래들
compile 'co.aurasphere.botmill:fb-botmill:2.0.0-RC3'
그루비
@Grapes(
@Grab(group='co.aurasphere.botmill', module='fb-botmill', version='2.0.0-RC3')
)
다른 가져오기 방법은 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 >
URL 매핑 은 Facebook의 웹훅 구성에 사용되므로 기록해 두세요.
1차: 페이지 토큰과 검증 토큰을 설정합니다. 클래스 경로에 botmill.properties 파일을 생성하고 토큰을 추가하세요.
fb.page.token =<PAGE_TOKEN>
fb.validation.token =<VALIDATION_TOKEN>
내장된 jaspyt 기반 암호화를 사용하여 속성 파일을 암호화할 수 있습니다. 암호화된 botmill.properties 파일을 설정하는 방법을 알아보려면 여기 Wiki로 이동하세요.
두 번째: 암호화 클래스를 설정합니다. 우리는 토큰을 암호화하기 위해 Jaspyt의 사용을 엄격하게 추진하고 있습니다. 이를 위해서는 사용자가 자신만의 Jaspyt 암호화 클래스를 생성해야 합니다. 이렇게 하려면 프로젝트에서 다음을 만듭니다.
@ BotEncryption
public class DefaultEncryption {
public DefaultEncryption () {
StandardPBEStringEncryptor enc = new StandardPBEStringEncryptor ();
enc . setPassword ( "password" ); // can be sourced out
ConfigurationUtils . loadEncryptedConfigurationFile ( enc , "botmill.properties" );
}
}
비밀번호는 귀하에게 달려 있으며 https 또는 ftp를 통해 어디에서나 얻을 수 있습니다. 여기서 중요한 점은 이 텍스트가 Jaspyt가 botmill.properties 파일을 해독하는 데 사용한다는 것입니다.
...
enc . setPassword ( "https://mydomain.com/encryptionpassword/password.txt" ); // can be sourced out
..
이 작업을 완료한 후에는 botmill-crypto-util 프로젝트를 사용하여 페이지 토큰과 검증 토큰의 암호화된 버전을 생성해야 합니다. botmill-crypto-util을 [여기]에서 다운로드하세요(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-dependent.jar) 다음 명령을 실행합니다.
java -jar botmill-crypto-util-0.0.1-20170228.035750-1-jar-with-dependent.jar enc <page_token> java -jar botmill-crypto-util-0.0.1-20170228.035750-1-jar-with-종속성 .jar enc <validation_token>
그러면 텍스트 파일의 암호화된 버전이 나옵니다. 이 값으로 botmill.properties를 수정하되 ENC(***) 안에 넣어야 합니다.
fb.page.token =ENC(<ENCRYPTED_PAGE_TOKEN>)
fb.validation.token =ENC(<ENCRYPTED_VALIDATION_TOKEN>)
재배포하면 됩니다.
세 번째: BotConfiguration 설정 BotConfiguration 클래스는 발생해야 하는 일회성 프로세스(영구 메뉴, Facebook API 인증 등)를 처리합니다. 아래에서 FbBotConfiguration을 생성하고 모든 초기 구성(일회성 구성)을 생성자에 넣습니다. 그러면 FB 인증도 초기화됩니다.
@ 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번째: FbBot 클래스/클래스를 설정합니다. 우리의 프레임워크를 사용하면 클래스에 동작 개체로 태그를 지정하여 Facebook 봇 동작을 쉽고 간단하게 정의할 수 있습니다.
@ 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" ));
}
}
패턴을 파악하고 빠른 답변으로 응답
@ 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 );
}
});
}
또는 버튼으로 응답
@ 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 );
}
});
}
EventTypes 및 응답의 전체 목록을 보려면 문서를 방문하세요.
ChatBot 구축의 주요 구성 요소
저작권 (c) 2016-2017 BotMill.io