Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/vapor-community/vaportwilioservice

Twilio API provider for all your Vapor needs
https://github.com/vapor-community/vaportwilioservice

api sdk server-side-swift swift swift-4 twilio vapor

Last synced: about 3 hours ago
JSON representation

Twilio API provider for all your Vapor needs

Awesome Lists containing this project

README

        


Documentation


Team Chat


MIT License


Continuous Integration

Github Actions

Swift 5.1

# What

This is a wrapper service for interacting with the Twilio API for Vapor4
> Note: Vapor3 version is available in `vapor3` branch and from `1.0.0` tag

## Installation

```swift
// dependencies
.package(url: "https://github.com/twof/VaporTwilioService.git", from: "2.0.0")

// Targets
.target(name: "App", dependencies: [
.product(name: "Vapor", package: "vapor"),
.product(name: "Twilio", package: "VaporTwilioService")
])
```

## Usage

### Setup
```swift
import Twilio

// Called before your application initializes.
func configure(_ app: Application) throws {
/// case 1
/// put into your environment variables the following keys:
/// TWILIO_ACCOUNT_ID=...
/// TWILIO_ACCOUNT_SECRET=...
app.twilio.configuration = .environment

/// case 2
/// manually
app.twilio.configuration = .init(accountId: "", accountSecret: "")
}
```
### Sending a text

#### In route handler

```swift
import Twilio

func routes(_ app: Application) throws {
app.get { req -> EventLoopFuture in
let sms = OutgoingSMS(body: "Hey There", from: "+18316100806", to: "+14083688346")
return req.twilio.send(sms)
}
}
```

#### Anywhere else

```swift
import Twilio

public func configure(_ app: Application) throws {
// ...
// e.g. in the very end
let sms = OutgoingSMS(body: "Hey There", from: "+18316100806", to: "+14083688346")
app.twilio.send(sms).whenSuccess { response in
print("just sent: \(response)")
}
}
```

### Handling Incoming Texts
After [setting up the necessary routing within your Twilio account](https://www.twilio.com/docs/sms/twiml#twilios-request-to-your-application), you may create routes to handle and respond to incoming texts.

```swift
import Twilio

func routes(_ app: Application) throws {
app.post("incoming") { req -> Response in
let sms = try req.content.decode(IncomingSMS.self)

let responseMessage = SMSResponse(
Message(body: "Hello Friend!"),
Message(body: "This is a second text.")
)

return req.twilio.respond(with: responseMessage)
}
}
```