跳至内容

会话机器人/一个简单的回显机器人

来自 Wikibooks,为开放世界创作开放书籍

如何构建会话机器人?机器人是提供 API 的服务器应用程序,因此你需要一个可以公开访问的服务器来托管你的机器人。如果你没有,你可以使用例如提供免费层的 Amazon 的 EC2。通常情况下,可以使用运行用 Go 编写的应用程序的所有服务器。你也许还希望下载此免费iOS 应用程序以测试你的代码。

以下是简单回显机器人的代码,它只输出回显:后跟用户输入。在将其保存到echobot.go后,使用go run echobot.go运行该代码。

package main

import (
    "net/http"
    "log"
    "encoding/json"
    "fmt"
)

func Server(w http.ResponseWriter, req *http.Request) {
    if req.Method == "GET" {
        if req.RequestURI == "/info" {
            data := map[string]interface{}{ "name": "Echo Bot", "info": "A simple echo bot" }
            b,_ := json.Marshal(data)
            w.Header().Set("Content-Type", "text/plain;charset=utf-8")
            w.Write(b)
        }
    }
    if req.Method == "POST" {
        if req.RequestURI == "/msg" {
            decoder := json.NewDecoder(req.Body)
            var data interface{}
            err := decoder.Decode(&data)
            if err != nil {
                fmt.Println("couldn't decode JSON data")
            } else {
                m := data.(map[string]interface{})
                //user := m["user"].(string)
                text := m["text"].(string)
                resp := "Echo: " + text
                data := map[string]interface{}{ "text": resp }
                b,_ := json.Marshal(data)
                w.Header().Set("Content-Type", "text/plain;charset=utf-8")
                w.Write(b)
            }
        }
    }
}

func main() {
    http.HandleFunc("/", Server)
    err := http.ListenAndServe(":8090", nil)
    if err != nil {
        log.Fatal("ListenAndServe: ", err)
    }
}
华夏公益教科书