1 个稳定版本
1.0.3 | 2023年11月2日 |
---|
#9 在 #twilio
26KB
662 行(不包括注释)
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。如果失败,则会向客户端发送错误。接下来,将解析从传入的参数中解析出的呼叫或消息。如果缺少必填字段,则会向客户端发送错误。最后,将解析的对象传递给您的处理方法,该方法必须返回一个将用于响应 webhook 的 Twiml
。
respond_to_webhook
方法设计用于在 Hyper Request
和 Response
上工作。Hyper 还用于内部请求 Twilio 的 API。
依赖项
~12–26MB
~346K SLoC