9个版本 (5个稳定版)
1.1.0 | 2024年3月25日 |
---|---|
1.0.3 | 2023年8月16日 |
1.0.2 | 2023年1月29日 |
1.0.0 | 2020年9月8日 |
0.1.0 | 2015年4月20日 |
#577 in 网络编程
每月下载 3,687次
用于 3 crates
25KB
653 行
twilio-rs
twilio-rs
是一个用于与Twilio集成的Rust库。它试图提供一个惯用的Rust接口来向Twilio API发送请求,并验证、解析和回复Twilio发送到您的服务器的webhook。
首先,您需要创建一个Twilio客户端
let client = twilio::Client::new(ACCOUNT_ID, AUTH_TOKEN);
现在,您可以使用该客户端发送或接收Twilio请求。例如,要发送消息
client.send_message(OutboundMessage::new(from, to, "Hello, World!")).await;
或者进行通话
client.make_call(OutboundCall::new(from, to, callback_url)).await;
当然,我们与Twilio的交互大部分是通过定义响应Twilio webhook的资源来实现的。为了以自定义回复响应每条短信,在您的服务器处理方法中
use hyper::{Body, Request, Response};
use std::convert::Infallible;
async fn handle_request(req: Request<Body>) -> Result<Response<Body>, Infallible> {
let client = ...;
let response = client.respond_to_webhook(req, |msg: Message| {
let mut t = Twiml::new();
t.add(&twiml::Message {
txt: format!("You told me: '{}'",
msg.body.unwrap()),
});
t
})
.await;
Ok(response)
}
或者,要使用消息响应语音回调
use hyper::{Body, Request, Response};
use std::convert::Infallible;
async fn handle_request(req: Request<Body>) -> Result<Response<Body>, Infallible> {
let client = ...;
let response = client.respond_to_webhook(req, |msg: Call| {
let mut t = Twiml::new();
t.add(&twitml::Say {
txt: "Thanks for using twilio-rs. Bye!".to_string(),
voice: Voice::Woman,
language: "en".to_string(),
});
t
})
.await;
Ok(response)
}
使用respond_to_webhook
方法将首先使用您的AuthToken验证请求是否来自Twilio。如果失败,将向客户端发送错误。接下来,将从传入的参数中解析调用或消息。如果缺少必填字段,将向客户端发送错误。最后,解析后的对象将被传递到您的处理方法,该方法必须返回一个Twiml
,该Twiml将被用于响应webhook。
respond_to_webhook
方法被设计用于处理Hyper Request
和Response
。Hyper也用于内部请求Twilio的API。
依赖关系
~9–21MB
~326K SLoC