格式化JSON —— 飞书机器人 serverless 实战

格式化JSON —— 飞书机器人 serverless 实战

格式化JSON —— 飞书机器人 serverless 实战_第1张图片

现在使用 Serverless Reactor 创建机器人应用,并参与 Second State 与 CSDN 合办的开源征文活动,就有机会获得 苹果新推出的 Airtag

Serverless Reactor 为开发者提供快速上线飞书上机器人的体验。只需将怎么从输入(发给机器人的消息)产生输出(机器人回复的消息)的逻辑写成一段代码函数,然后把函数上传到 Serverless Reactor 上,就可以轻松上线一个机器人应用。

Serverless Reactor 支持用当下最火的 Rust 语言写这样的函数。我们使用最简单的 Rust 语法就能完成一个机器人。你可以在玩转飞书机器人的同时轻松学习 Rust 编程!

今天给大家带来一个小 app —— 格式化 JSON。参见上文的视频,将混乱的 JSON 字符串发给及机器人,机器人就能输出格式完好的 JSON,简单方便 ,不用再面向 Google 编程啦。

在 Serverless Reactor 创建机器人的详细步骤,请参考我们的入门文档《快速入门 Serverless Reactor》。 这篇文章主要来讲解一下 Rust 代码以及一些关键步骤。

Rust 代码

use wasm_bindgen::prelude::*;
use serde_json::{Value};

#[wasm_bindgen]
pub fn text_received(msg: String, _user_info: String, _step_data: String) -> String {
  let obj: Value = match serde_json::from_str(&msg) {
    Ok(v) => v,
    Err(e) => return format!("{:?}", e)
  };
  let str = serde_json::to_string_pretty(&obj).unwrap();
  return format!(r#"{
    {"result": "{}"}}"#, str.replace("\"", "\\\""));
}

这个格式化 JSON 的机器人使用 Rust 的 serde_json 库,实际的代码量非常小。一问一答式的机器人,接收返回文本,所以这里只使用到了 Serverless Reactor 提供的 text_received 接口。我们的目标先把从简单语法开始,是把学习到的 Rust 用起来,让 Rust 起码在开发者的个人空间具有用武之地。

这里需要注意一个问题,飞书机器人本来返回的就是 JSON 格式的内容,格式化 JSON 机器人返回的也是 JSON 格式,这种情况要怎么处理呢?

非常简单,不将内容直接返回给 Host,需要以 { "result": "要返回的内容" } 的格式返回给 Host,Host 才能正确识别返回结果。

Rust 代码完成后,就是使用 rustwasmc 将 Rust 代码编译成 Wasm 文件,上传到 Serverless Reactor 平台,并把生成的 service URL 提交给飞书详细步骤可以参考我们的入门文档《快速入门 Serverless Reactor》。

如果你也想搭建一个格式化 JSON 的机器人,完整代码在这里。

你可能感兴趣的:(serverless,最佳实践,serverless,聊天机器人,rust)