2016-04-28 247 views
4

有沒有人創建過一個開放源代碼的項目,在java中公開facebook messenger bot API? (?或其他語言,我可以轉換)Facebook的Messenger Messenger bot對象結構

本質堆棧的對象分層結構中發現: https://developers.facebook.com/docs/messenger-platform/send-api-reference

我寧願不只是使用一個JSONObjects等也映射到提取傳入的JSON聊天消息或構建即將離任的結構化聊天回覆。如果存在一個開源項目 - 我還沒有找到它。

+1

我面臨着同樣的問題,因爲我的服務器是tomcat。我無法找到Pojos的任何鏈接,也沒有找到fb messenger webhook的合約。所以我自己做了。 [這裏是](https://github.com/thekosmix/Java-FbChatBot)你的java服務器webhook和fb messenger之間的合同鏈接。這是一個完整的工作maven項目,可在碼頭部署。 – thekosmix

+0

TheKosmix,非常感謝。我會檢查出來的。 FB Messenger Bot整合證明比Kik或Skype更容易!誰會呃thunk? 「 –

回答

4

看看FaceBot。 FaceBot的目標是讓Facebook的Messenger平臺變得更加簡單:使用FaceBot,您只需要少於5行的代碼即可設置您自己的Messenger機器人。

下面是一個例子:

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!")); 
} 
} 

如果您有疑問或需要幫助,請隨時與我聯繫(我是開發者)。

1

我目前正在研究一個名爲JBot的Java中的bot框架,並且fb部分目前正在開發中,但是Slack部分已經完成並且已經被多個開發人員使用。

3

隨着開源項目messenger4j你會得到所有你需要的。

這是一個易於使用的Java庫在Messenger平臺上構建chatbots。

它提供了一個豐富的構建器API來構造傳出消息。 此外,它將入站消息解析到特定的java對象並自動檢測它們的類型。對於每個消息類型或事件,您可以註冊相應的事件處理程序。

接收:

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); 

發送(簡單):

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

發送(復):

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); 

順便說一句:我已經建好了。

+0

」免責聲明 - 否認某件事,特別是責任的陳述。「你有什麼拒絕免責聲明:我已經建立了它?也許「順便說一句:我已經建立了它。」會更合適。否則,很好的第一個答案! – MikeJRamsey56

+0

@ MikeJRamsey56謝謝!將「免責聲明」更改爲「BTW」。這就是我想說的:) –