HedwigMessenger
December 11, 2016 · View on GitHub
An in-progress alpha...
Configuration
Below is an example configuration
use Mix.Config
config :alfred, Alfred.Robot,
adapter: Hedwig.Adapters.Messenger,
name: "alfred",
token: "", #Your Page Access Token
responders: [
{Hedwig.Responders.Help, []},
{Hedwig.Responders.Ping, []},
]
Facebook Callback
Messages are received from Facebook using an HTTP callback. You can use the included Hedwig.Adapters.Messenger.Callback module or define one yourself
as long as it calls Hedwig.Adapters.Messenger.handle_in/2 to send the message to the robot.
Using the included server
To use the included callback with your robot, update your dependencies by including plug and cowboy:
defp deps do
[
{:cowboy, "~> 1.0"},
{:plug, "~> 1.1"}
]
end
Finally, add Hedwig.Adapters.Messenger.Callback to your supervision tree alongside your robot
children = [
worker(Alfred.Robot, []),
worker(Hedwig.Adapters.Messenger.Callback, [])
]
The parameters are:
cowboy_options- a keyword list of options to pass to cowboy (optional)
Defining your own callback
If you are defining your own callback (for instance in a phoenix app), just make sure to call Hedwig.Adapters.Messenger.handle_in/2
def my_messenger_callback(conn, params) do
case Hedwig.Adapters.Messenger.handle_in(robot_name, params) do
{:error, reason} ->
# Handle robot not found
:ok ->
# Message sent to robot.
end
end
What's Supported
| Send API | Supported? |
|---|---|
| Text Messages | ✓ |
| Audio Messages | |
| File Messages | |
| Image Messages | |
| Video Messages | |
| Typing Indicators | |
| Quick Replies | |
| Buttons | |
| Templates |
| Webhook Reference | Supported? |
|---|---|
| Message Received | ✓ |
| Message Delivered | |
| Message Read | |
| Message Echo | |
| Postback | |
| Plugin Opt-in | |
| Referral | |
| Payment | |
| Checkout Update | |
| Account Linking |
Thanks
Initially based on @bryanjos's hedwig_sms design.