This is a wrapper service for interacting with the Twilio API for Vapor4
Note: Vapor3 version is available in
vapor3
branch and from1.0.0
tag
// 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")
])
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: "<account id>", accountSecret: "<account secret>")
}
import Twilio
func routes(_ app: Application) throws {
app.get { req -> EventLoopFuture<ClientResponse> in
let sms = OutgoingSMS(body: "Hey There", from: "+18316100806", to: "+14083688346")
return req.twilio.send(sms)
}
}
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)")
}
}
After setting up the necessary routing within your Twilio account, you may create routes to handle and respond to incoming texts.
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)
}
}