2016-04-28 10 views
4

Hat jemand ein Open-Source-Projekt erstellt, das die facebook Messenger API in Java verfügbar macht? (? Oder eine andere Sprache konnte ich konvertieren)Facebook Messenger Bot Objektstruktur für Java

im Prinzip eine Objekthierarchie für den Stapel gefunden: https://developers.facebook.com/docs/messenger-platform/send-api-reference

würde ich lieber nicht nur JsonObjects verwenden usw. noch Karten, die eingehenden JSON Chat-Nachrichten zu extrahieren oder um die ausgehenden strukturierten Chat-Antworten zu erstellen. Wenn ein Open-Source-Projekt dafür existiert, habe ich es nicht gefunden.

+1

Ich hatte das gleiche Problem wie mein Server Tomcat ist. Ich konnte keinen Link für die Pojos und Verträge für den fb messenger webhook finden. Also habe ich es selbst gemacht. [Hier ist] (https://github.com/thekosmix/Java-FbChatBot) der Link für den Vertrag zwischen Ihrem Java-Server-Webhook und FB Messenger. Es ist ein vollwertiges Arbeitsmaven-Projekt, das in einem Steg eingesetzt werden kann. – thekosmix

+0

TheKosmix, vielen Dank. Ich werde das überprüfen. FB Messenger Bot-Integration erwies sich als viel einfacher als Kik oder Skype! Wer würde thunk? –

Antwort

4

Werfen Sie einen Blick auf FaceBot. Das Ziel von FaceBot ist es, die Messenger-Plattform von Facebook zu vereinfachen: Mit FaceBot benötigen Sie nur weniger als 5 Zeilen Code, um Ihren eigenen Messenger-Bot einzurichten.

Hier ist ein Beispiel:

public class MyFaceBotBehavior extends AbstractFaceBot { 

    public void defineBehavior() { 
    // Setting my tokens from Facebook (page token and validation token for webhook). 
    FaceBotContext.getInstance().setup("myFacebookPageToken", "myFacebookWebhookValidationToken"); 

    // Defining a bot which will reply with "Hello World!" as soon as I write "Hi" 
    addActionFrame(new MessageEvent("Hi"), 
      new MessageAutoReply("Hello World!")); 
} 
} 

Wenn Sie Fragen haben oder Hilfe benötigen, fühlen Sie sich frei, mich zu kontaktieren (Ich bin der Entwickler).

1

Ich arbeite derzeit an einem Bot-Framework in Java namens JBot und der fb-Teil ist derzeit in der Entwicklung, aber der Slack-Teil ist fertig und wird bereits von mehreren Entwicklern verwendet.

3

Mit dem Open-Source-Projekt messenger4j erhalten Sie alles, was Sie brauchen.

Es ist eine einfach zu bedienende Java-Bibliothek zum Erstellen von Chatbots auf der Messenger-Plattform.

Es bietet eine umfangreiche Builder-API zum Erstellen der ausgehenden Nachrichten. Darüber hinaus analysiert es die eingehenden Nachrichten zu bestimmten Java-Objekten und erkennt automatisch ihren Typ. Für jeden Nachrichtentyp oder jedes Ereignis können entsprechende Ereignishandler registriert werden.

Empfangen:

String payload = ... // callback request body 
String signature = ... // 'X-Hub-Signature' request header 

// JDK 8 version 
MessengerReceiveClient receiveClient = MessengerPlatform.newReceiveClientBuilder("APP_SECRET", "VERIFICATION_TOKEN") 
     .onTextMessageEvent(event -> System.out.printf("%s: %s", event.getSender().getId(), event.getText())) 
     .build(); 

// JDK 7 version 
MessengerReceiveClient receiveClient = MessengerPlatform.newReceiveClientBuilder("APP_SECRET", "VERIFICATION_TOKEN") 
     .onTextMessageEvent(new TextMessageEventHandler() { 
      @Override 
      public void handle(TextMessageEvent event) { 
       System.out.printf("%s: %s", event.getSender().getId(), event.getText()); 
      } 
     }) 
     .build(); 

receiveClient.processCallbackPayload(payload, signature); 

Senden (einfach):

MessengerSendClient sendClient = MessengerPlatform.newSendClientBuilder("PAGE_ACCESS_TOKEN").build(); 
sendClient.sendTextMessage("RECIPIENT_ID", "Hi there, how are you today?"); 

Senden (Komplex):

ReceiptTemplate receipt = ReceiptTemplate.newBuilder("Stephane Crozatier", "12345678902", "USD", "Visa 2345") 
     .orderUrl("http://petersapparel.parseapp.com/order?order_id=123456") 
     .timestamp(1428444852L) 
     .addElements() 
      .addElement("Classic White T-Shirt", 50F) 
       .subtitle("100% Soft and Luxurious Cotton") 
       .quantity(2) 
       .currency("USD") 
       .imageUrl("http://petersapparel.parseapp.com/img/whiteshirt.png") 
       .toList() 
      .addElement("Classic Gray T-Shirt", 25F) 
       .subtitle("100% Soft and Luxurious Cotton") 
       .quantity(1) 
       .currency("USD") 
       .imageUrl("http://petersapparel.parseapp.com/img/grayshirt.png") 
       .toList() 
      .done() 
     .addAddress("1 Hacker Way", "Menlo Park", "94025", "CA", "US").street2("").done() 
     .addSummary(56.14F).subtotal(75.00F).shippingCost(4.95F).totalTax(6.19F).done() 
     .addAdjustments() 
      .addAdjustment() 
       .name("New Customer Discount") 
       .amount(20.00F) 
       .toList() 
      .addAdjustment() 
       .name("$10 Off Coupon") 
       .amount(10.00F) 
      .toList() 
     .done() 
     .build(); 

sendClient.sendTemplate("RECIPIENT_ID", receipt); 

BTW: Ich habe es gebaut.

+0

"Disclaimer - eine Aussage, die etwas verweigert, vor allem Verantwortung." Was bestreiten Sie mit dem Disclaimer: Ich habe es gebaut? Vielleicht "BTW: Ich habe es gebaut." wäre angemessener. Ansonsten, gute erste Antwort! – MikeJRamsey56

+0

@ MikeJRamsey56 danke! "Haftungsausschluss" in "BTW" geändert. Das wollte ich sagen :) –