An SMS Hedwig adapter powered by Twilio.
Refer to the Create a Robot Module section for creating a bot.
Below is an example configuration
use Mix.Config
config :alfred, Alfred.Robot,
adapter: Hedwig.Adapters.SMS,
name: "alfred",
account_sid: "", #your twilio sid
auth_token: "", #your twilio auth token
account_number: "+10000000000", # your twilio number
responders: [
{Hedwig.Responders.Help, []},
{Hedwig.Responders.GreatSuccess, []},
{Hedwig.Responders.ShipIt, []}
]
Messages are received from Twilio using an HTTP callback. You can use the included Hedwig.Adapters.SMS.Callback
module or define one yourself
as long as it calls Hedwig.Adapters.SMS.handle_in/2
to send the message to the robot.
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
Next, Add cowboy to your list of applications:
def application do
[applications: [:logger, :hedwig, :cowboy]]
end
Next, add Hedwig.Adapters.SMS.Callback
to your supervision tree alongside your robot
children = [
worker(Alfred.Robot, []),
worker(Hedwig.Adapters.SMS.Callback, [])
]
Optionally, add the following configuration block to your config to set the base_path
and/or the port
config :hedwig_sms, Hedwig.Adapters.SMS.Callback,
base_path: "/mybasepath" # defaults to "/sms",
port: 3000 # defaults to 4000
If you are defining your own callback (for instance in a phoenix app), just make sure to call Hedwig.Adapters.SMS.handle_in/2
def my_twilio_callback(conn, params) do
case Hedwig.Adapters.SMS.handle_in(robot_name, params) do
{:error, reason} ->
# Handle robot not found
:ok ->
# Message sent to robot.
end
end