15 releases
0.5.0 | Mar 19, 2020 |
---|---|
0.4.0 | Jan 17, 2019 |
0.4.0-beta.1 | Dec 27, 2018 |
0.3.1 | Dec 1, 2018 |
0.0.4 | Sep 18, 2018 |
#1135 in Asynchronous
90KB
2.5K
SLoC
messagebird-async
MessageBird is a service for sending SMS at its core https://www.messagebird.com/
Example
Send a SMS Message
Sending a sms to a specified target is implemented in examples/send.rs
:
export MESSAGEBIRD_ACCESSKEY=abio8usad..dfahdk
export SMS_RECIPIENT=1234556
The SMS_RECIPIENT
should NOT contain leading zeros nor the +
. The countrycode is still necessary.
cargo run --example send
or copy & paste:
#[macro_use]
extern crate log;
extern crate env_logger;
extern crate futures;
extern crate messagebird_async;
extern crate tokio_core;
use futures::future::Future;
use messagebird_async::errors::*;
use messagebird_async::sms;
use messagebird_async::sms::*;
fn main() -> Result<(), MessageBirdError> {
env_logger::init();
let msisdn_str = std::env::var("SMS_RECIPIENT".to_string())
.expect("SMS_RECIPIENT should contain the number without prefix");
let msisdn: Msisdn = Msisdn::from_str(msisdn_str.as_str())
.expect("SMS_RECIPIENT did not contain a valid number");
info!("example: sending a message");
let sendable = sms::send::SendParameters::builder()
.payload(
PayloadType::Sms,
Payload::Text("fun".to_string()),
PayloadEncoding::Auto,
)
.origin(AlphaNumeric("inbox".to_string()).into())
.add_recipient(msisdn.into())
//.add_recipient(Recipient::new())
.build();
let accesskey = AccessKey::from_env()?;
let fut = RequestSend::new(&sendable, &accesskey);
let fut = fut.and_then(|sent_msg: Message| {
info!("{:?}", sent_msg);
futures::future::ok(())
});
let mut core = tokio_core::reactor::Core::new().unwrap();
core.run(fut.map(|_| ()))
}
Features
Currently the planned features only include to send SMS and query SMS stati.
RoadMap
- serde impl for all relevant datatypes
- roundtrip decode encode tests
- use
crate serde_plain
fortrait ToString
andtrait FromStr
for objects which are used in query filters and payload www urlencode - future for SMS sending and retrieval based on hyper.rs
- send SMS example using tokio as executor
- future for listing SMS
- listing SMS examples using tokio as executor
- write documentation
- future for notification callback on SMS reception
- callback example using hyper (and thus imlicitly tokio) as executor
- convert all service API return errors to typed errors
- improve error information content
- create sms callback notification test based on the receive example running on clever cloud (the creators of sozu)
MessageBird APIs
-
SMS
-
Contacts
(low prio) -
MMS
(*) -
Conversation
(*) -
VoiceMessaging
(*) -
VoiceCalling
(*)
* = not planned, unless external contributors step up
License
MIT or Apache-2.0
If neither of those work for you, feel free to request so via a github issue.
Donations
Since I am not affiliated with MessageBird in any kind (other than being their customer) I'd be delighted if you'd leave a tipp to keep the automated send/receive routines going.
Dependencies
~27MB
~615K SLoC