会话机器人/一个简单的回显机器人
外观
< 会话机器人
如何构建会话机器人?机器人是提供 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)
}
}