Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bryanjos/hedwig_sms
SMS Adapter for Hedwig Powered by Twilio
https://github.com/bryanjos/hedwig_sms
Last synced: 11 days ago
JSON representation
SMS Adapter for Hedwig Powered by Twilio
- Host: GitHub
- URL: https://github.com/bryanjos/hedwig_sms
- Owner: bryanjos
- Created: 2016-04-01T02:33:12.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2017-11-18T14:43:26.000Z (almost 7 years ago)
- Last Synced: 2024-10-29T04:41:10.224Z (18 days ago)
- Language: Elixir
- Homepage:
- Size: 18.6 KB
- Stars: 2
- Watchers: 3
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# HedwigSms
An SMS [Hedwig](https://github.com/hedwig-im/hedwig) adapter powered by Twilio.
Refer to the [Create a Robot Module](https://github.com/hedwig-im/hedwig#create-a-robot-module) section for creating a bot.
## Configuration
Below is an example configuration
```elixir
use Mix.Configconfig :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, []}
]
```## Twilio Callback
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.### Using the included server
To use the included callback with your robot, update your dependencies by including `plug` and `cowboy`:
```elixir
defp deps do
[
{:cowboy, "~> 1.0"},
{:plug, "~> 1.1"}
]
end
```Next, Add cowboy to your list of applications:
```elixir
def application do
[applications: [:logger, :hedwig, :cowboy]]
end
```Next, add `Hedwig.Adapters.SMS.Callback` to your supervision tree alongside your robot
```elixir
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`
```elixir
config :hedwig_sms, Hedwig.Adapters.SMS.Callback,
base_path: "/mybasepath" # defaults to "/sms",
port: 3000 # defaults to 4000
```### Defining your own callback
If you are defining your own callback (for instance in a phoenix app), just make sure to call `Hedwig.Adapters.SMS.handle_in/2`
```elixir
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
```