codeBud7/facebook-messenger-java-lib


Facebook Messenger Library for Java

Download


Step 1. Add the JitPack repository to your build file

Add it in your root settings.gradle at the end of repositories:

	dependencyResolutionManagement {
		repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
		repositories {
			mavenCentral()
			maven { url 'https://jitpack.io' }
		}
	}

Add it in your settings.gradle.kts at the end of repositories:

	dependencyResolutionManagement {
		repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
		repositories {
			mavenCentral()
			maven { url = uri("https://jitpack.io") }
		}
	}

Add to pom.xml

	<repositories>
		<repository>
		    <id>jitpack.io</id>
		    <url>https://jitpack.io</url>
		</repository>
	</repositories>

Add it in your build.sbt at the end of resolvers:

 
    resolvers += "jitpack" at "https://jitpack.io"
        
    

Add it in your project.clj at the end of repositories:

 
    :repositories [["jitpack" "https://jitpack.io"]]
        
    

Step 2. Add the dependency

	dependencies {
		implementation 'com.github.codeBud7:facebook-messenger-java-lib:'
	}
	dependencies {
		implementation("com.github.codeBud7:facebook-messenger-java-lib:")
	}
	<dependency>
	    <groupId>com.github.codeBud7</groupId>
	    <artifactId>facebook-messenger-java-lib</artifactId>
	    <version></version>
	</dependency>

                            
    libraryDependencies += "com.github.codeBud7" % "facebook-messenger-java-lib" % ""
        
        

                            
    :dependencies [[com.github.codeBud7/facebook-messenger-java-lib ""]]
        
        

Readme


facebook-messenger-java-lib

Facebook Messenger Library for Java

Usage

Implement MessengerProperties interface

Example:

@Config.Sources("classpath:messenger.properties")
public interface MessengerProperties extends Config, MessengerProperties
{
    @Key("verify.token")
    @DefaultValue("foo")
    String getVerifyToken();

    @Key("PAGE_ACCESS_TOKEN")
    String getPageAccessToken();

    @Key("api.message.endpoint")
    @DefaultValue("https://graph.facebook.com/v2.6/me/messages")
    String getMessageEndpoint();

    @Key("api.user.endpoint")
    @DefaultValue("https://graph.facebook.com/v2.6/")
    String getUserEndpoint();
}

Create controller for verification

Example:

    @RequestMapping(value = "/webhook", method = RequestMethod.GET)
    @ResponseBody
    private String verify(
        @RequestParam(name = "hub.mode") final String hubMode,
        @RequestParam(name = "hub.challenge") final String hubChallenge,
        @RequestParam(name = "hub.verify_token") final String hubToken)
    {
        if (hubToken.equals(this.messengerProperties.getVerifyToken()))
        {
            return hubChallenge;
        }
        else
        {
            return NOT_AUTHORIZED;
        }
    }


    @RequestMapping(value = "/webhook", method = RequestMethod.POST)
    @ResponseBody
    @ResponseStatus(HttpStatus.OK)
    private void receive(@RequestBody final FacebookMessengerCallback facebookMessengerCallback)
    {
        if (FacebookMessengerCallback.FacebookMessengerCallbackType.RECEIVED.equals(facebookMessengerCallback.getType()))
        {
            this.exampleService.sendTextMessage(
                facebookMessengerCallback.getMessageText(),
                facebookMessengerCallback.getSender());
        }
    }

Use the FacebookMessengerHandler in your service

Example:

    private FacebookMessengerHandler facebookMessengerHandler;


    public ExampleService()
    {
        this.facebookMessengerHandler = new FacebookMessengerHandlerImpl(ConfigFactory.create(MessengerProperties.class, System.getenv()));
    }


    public void sendTextMessage(final String message, final Long recipientId)
    {
        this.facebookMessengerHandler.sendTextMessage(answer, recipientId);
    }

Todo's:

  • integration of token verification
  • integration of welcome message
  • integrate multiple message types
  • push to maven central repo