首页 文章

用于java的Facebook Messenger bot对象结构

提问于
浏览
5

有没有人创建过一个在java中公开facebook messenger bot API的开源项目? (或我可以转换的另一种语言?)

基本上是堆栈的对象层次结构:https://developers.facebook.com/docs/messenger-platform/send-api-reference

我宁愿不只是使用JsonObjects等,也不是使用Maps来提取传入的JSON聊天消息或构建传出的结构化聊天回复 . 如果存在一个开源项目 - 我还没有找到它 .

3 回答

  • 1

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

    如果您有任何疑问或需要帮助,请随时与我联系(我是开发人员) .

  • 5

    使用开源项目messenger4j,您将获得所需的一切 .

    它是一个易于使用的Java库,用于在Messenger平台上构建聊天机器人 .

    它提供了丰富的构建器API来构造传出消息 . 此外,它将入站消息解析为特定的Java对象,并自动检测其类型 . 对于每种消息类型或事件,您可以注册相应的事件处理程序 .

    Receiving:

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

    Sending (simple):

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

    Sending (complex):

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

    顺便说一句:我已经建成了 .

  • 4

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

相关问题