All Projects → mileusna → facebook-messenger

mileusna / facebook-messenger

Licence: other
Go (GoLang) package for Facebook Messenger API and Chat bot

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to facebook-messenger

Facebook-Auto-Pilot
Automate common Facebook activities such as posting to groups and pages walls. Effortlessly post to multiple groups or pages.
Stars: ✭ 126 (+103.23%)
Mutual labels:  facebook, facebook-messenger-platform, facebook-messenger-bot, facebook-messenger, facebook-api
Facebook
📨 Facebook Notifications Channel for Laravel
Stars: ✭ 120 (+93.55%)
Mutual labels:  facebook, facebook-messenger-bot, facebook-messenger, facebook-api
messenger
💬 A PHP library for Facebook Messenger
Stars: ✭ 53 (-14.52%)
Mutual labels:  facebook, facebook-messenger-bot, facebook-messenger, facebook-api
Chatblocks
Declarative Messenger chatbot framework
Stars: ✭ 48 (-22.58%)
Mutual labels:  facebook, chatbot, facebook-messenger-bot, facebook-messenger
Awesome Bots
The most awesome list about bots ⭐️🤖
Stars: ✭ 2,864 (+4519.35%)
Mutual labels:  facebook-messenger-platform, chatbot, facebook-messenger
Magento Chatbot
Magento Chatbot Integration with Telegram, Messenger, Whatsapp, WeChat, Skype and wit.ai.
Stars: ✭ 149 (+140.32%)
Mutual labels:  facebook, chatbot, facebook-messenger
Botkit
Botkit is an open source developer tool for building chat bots, apps and custom integrations for major messaging platforms.
Stars: ✭ 10,555 (+16924.19%)
Mutual labels:  facebook, chatbot, facebook-messenger
hubot-messenger-bot
🔌 A Hubot adapter for Facebook Messenger Platform (Bots) with zero external dependencies.
Stars: ✭ 44 (-29.03%)
Mutual labels:  facebook, facebook-messenger-platform, facebook-messenger-api
messenger-bot
A Node bot server for the Facebook Messenger Platform
Stars: ✭ 23 (-62.9%)
Mutual labels:  facebook-messenger-platform, chatbot, facebook-messenger-bot
Devil
Devil is a tool that is basically made for facebook to Hack target accounts , BruteForce Attack , grab friendlist accounts , yahoo chacker , Facbook Friend information gathering tool , auto likes reactions & much more i hope you enjoy this tool i'm not responsible if you use this tool for any illegal purpose
Stars: ✭ 88 (+41.94%)
Mutual labels:  facebook, facebook-messenger-bot, facebook-api
facebook-send-api-emulator
Facebook Messenger Emulator & Facebook Send API Emulator functionality allowing you to test web hooks on developer's machine.
Stars: ✭ 24 (-61.29%)
Mutual labels:  facebook, chatbot, facebook-messenger
Fb Messenger Cli
fb-messenger-cli, console Facebook messenger
Stars: ✭ 665 (+972.58%)
Mutual labels:  facebook, facebook-messenger, facebook-api
Restfb
RestFB is a simple and flexible Facebook Graph API client written in Java.
Stars: ✭ 681 (+998.39%)
Mutual labels:  facebook, facebook-messenger, facebook-api
Facebooktoolkit
a tool to get Facebook data, and some Facebook bots, and extra tools found on Facebook Toolkit ++.
Stars: ✭ 227 (+266.13%)
Mutual labels:  facebook, facebook-messenger-bot, facebook-api
Facebot
Slackbot for facebook messaging integration in slack
Stars: ✭ 91 (+46.77%)
Mutual labels:  facebook, facebook-messenger
Facebook Export
Tools to help administer your Facebook groups
Stars: ✭ 96 (+54.84%)
Mutual labels:  facebook, facebook-api
Docker Multistreamer
Dockerized multistreamer
Stars: ✭ 90 (+45.16%)
Mutual labels:  facebook, facebook-api
Facebook Js Ads Sdk
[DEPRECATED] OFFICIAL FACEBOOK SDK: https://github.com/facebook/facebook-nodejs-ads-sdk
Stars: ✭ 140 (+125.81%)
Mutual labels:  facebook, facebook-api
Messenger For Desktop
This is not an official Facebook product, and is not affiliated with, or sponsored or endorsed by, Facebook.
Stars: ✭ 2,180 (+3416.13%)
Mutual labels:  facebook, facebook-messenger
Forensic Tools
A collection of tools for forensic analysis
Stars: ✭ 204 (+229.03%)
Mutual labels:  facebook, facebook-messenger

Facebook Messenger for Go GoDoc

Facebook Messenger API for Go, essential API used for Facebook chat bots

It can send and receive messages from Facebook Messenger.

Use AS IS. It works, but perhapse it needs touch or two and more unit tests.

Example:

package main

import (
    "log"
    "net/http"

    "github.com/mileusna/facebook-messenger"
)

func main() {
    msng := &messenger.Messenger{
        AccessToken:     "YOUR_ACCESS_TOKEN_THAT_YOU_WILL_GENERATE_FOR_YOUR_PAGE_ON_FACEBOOK",
        VerifyToken:     "YOUR_SECRET_TOKEN_FOR_VERIFYING_WEBHOOK_PUT_THE_SAME_VALUE_HERE_AND_ON_FB",
        PageID:          "YOUR_PAGE_ID",
        MessageReceived: messageReceived, // your function for handling received messages, defined below
    }

    // in init or afterwards, you can also specify events when receiving postbacks and message delivery reports from Facebook
    // if you don't want to manage this events, just comment/don't use this receivers
    msng.PostbackReceived = postbackReceived // comment/delete if not used
    // msng.DeliveryReceived = deliveryReceived // comment/delete if not used

    // set URL for your webhook and directly use msng as http Handler
    http.Handle("/mychatbot", msng)
    http.ListenAndServe(":8008", nil)
}

// messageReceived is called when you receive message on you webhook i.e. when someone sends message to your chat bot
// params: messenger that received the message, then the user id that sent us message and message data itself
func messageReceived(msng *messenger.Messenger, userID int64, m messenger.FacebookMessage) {

    // message received, now lets check what user has sent to us
    switch m.Text {
    case "hello", "hi":
        // someone sent hello or hi, reply with simple text message
        msng.SendTextMessage(userID, "Hello there")

    case "send me website":
        // now lets send him some structured message with image and link
        gm := msng.NewGenericMessage(userID)
        gm.AddNewElement("Title", "Subtitle", "http://mysite.com", "http://mysite.com/some-photo.jpeg", nil)

        // GenericMessage can contain up to 10 elements, they are represented as cards and can be scoreled horicontally in messenger
        // So lets add one more element, this time with buttons
        btn1 := msng.NewWebURLButton("Contact US", "http://mysite.com/contact")
        btn2 := msng.NewPostbackButton("Ok", "THIS_DATA_YOU_WILL_RECEIVE_AS_POSTBACK_WHEN_USER_CLICK_THE_BUTTON")
        gm.AddNewElement("Site title", "Subtitle", "http://mysite.com", "http://mysite.com/some-photo.jpeg", []messenger.Button{btn1, btn2})

        // ok, message is ready, lets send
        msng.SendMessage(gm)

    default:
        // upthere we haven't check for errors and responses for cleaner example code
        // but keep in mind that SendMessage returns FacebookResponse struct and error
        // errors are received from Facebook if sometnihg went wrong with message sending
        resp, err := msng.SendTextMessage(userID, m.Text) // echo, send back to user the same text he sent to us
        if err != nil {
            log.Println(err)
            return // if there is an error, resp is empty struct, useless
        }
        log.Println("Message ID", resp.MessageID, "sent to user", resp.RecipientID)
        // store resp.MessageID if you want to track delivery reports that will be sent later from Facebook
    }
}

// postbackReceived is called when you reiceive postback event from Facebook server
func postbackReceived(msng *messenger.Messenger, userID int64, p messenger.FacebookPostback) {
    if p.Payload == "THIS_DATA_YOU_WILL_RECEIVE_AS_POSTBACK_WHEN_USER_CLICK_THE_BUTTON" {
        // user just clicked Ok button from previouse example, lets just send him a message
        msng.SendTextMessage(userID, "Ok, I'm always online, chat with me anytime :)")
    }
}

// deliveryReceived is used if you want to track delivery reports for sent messages
func deliveryReceived(msng *messenger.Messenger, userID int64, d messenger.FacebookDelivery) {
    for _, mid := range d.Mids {
        log.Println("Message delivered, msgID:", mid)
    }
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].