Facebook的Messenger Messenger bot对象结构

问题描述:

有没有人创建过一个开放源代码的项目,在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? “ –

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

如果您有疑问或需要帮助,请随时与我联系(我是开发者)。

我目前正在研究一个名为JBot的Java中的bot框架,并且fb部分目前正在开发中,但是Slack部分已经完成并且已经被多个开发人员使用。

随着开源项目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”。这就是我想说的:) –