Files
DevFlow/docs/02-架构设计/专项设计/.research/larkrs-card-action-handler-example.rs
T

47 lines
1.4 KiB
Rust

use std::collections::HashMap;
use larksuite_oapi_sdk_rs::{CardAction, CardActionHandler, EventReq};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let handler =
CardActionHandler::new("verification_token", "", |action: CardAction| async move {
println!("card clicked by open_id={}", action.open_id);
println!("action value: {:?}", action.action.value);
Ok(serde_json::json!({
"toast": {
"type": "info",
"content": "Handled by Rust"
}
}))
})
.skip_sign_verify();
let payload = serde_json::json!({
"open_id": "ou_xxx",
"open_message_id": "om_xxx",
"open_chat_id": "oc_xxx",
"tenant_key": "tenant_xxx",
"token": "verification_token",
"action": {
"tag": "button",
"value": {
"action": "acknowledge",
"ticket_id": "INC-1001"
}
}
});
let req = EventReq {
headers: HashMap::new(),
body: serde_json::to_vec(&payload)?,
request_uri: "/webhook/card".to_string(),
};
let resp = handler.handle(req).await;
println!("response status: {}", resp.status_code);
println!("response body: {}", String::from_utf8_lossy(&resp.body));
Ok(())
}