打通微信和钉钉服务是一种怎样的体验?

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"微信 和 钉钉,分属于 腾讯 和 阿里巴巴 两大阵营,当他们之间可以互联互通,会是一种怎样神奇的场景?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"今天,我们就通过 "},{"type":"codeinline","content":[{"type":"text","text":"fastwego/offiaccount"}]},{"type":"text","text":" 和 "},{"type":"codeinline","content":[{"type":"text","text":"fastwego/dingding"}]},{"type":"text","text":" 这两个开源 Golang SDK 试一试:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"实现一个微信公众号秒变翻译机的服务:将用户发送过来的中文文本,翻译成法语。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"微信开放平台 & 钉钉开放平台"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"微信公众号"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"开启开发模式,接管用户发送的消息:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/7b/7b758ae921d0d2e4e70f363106bd2239.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"同时,还将获取到微信公众号的 appid/secret/token 配置信息"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"钉钉开放平台"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"开通企业内部 H5 微应用并完成 AI 接口授权:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/ef/ef4bd9e05c12158ad2c8f772e3b7f4e8.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"同时还将获取的钉钉 AppKey/AppSecret 的配置信息"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"翻译服务开发"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"翻译服务非常简单:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"获取微信公众号用户发送的文本"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"调用钉钉 AI 翻译接口,转换为目标语言"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"响应微信公众号,将翻译结果发送给用户"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"主要代码:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"go"},"content":[{"type":"text","text":"// 微信公众账号\nvar OffiAccount *offiaccount.OffiAccount\n\n// 钉钉 App 实例\nvar DingApp *dingding.App\n\nfunc init() {\n\t// 加载配置文件\n\tviper.SetConfigFile(\".env\")\n\t_ = viper.ReadInConfig()\n\n\t// 创建公众号实例\n\tOffiAccount = offiaccount.New(offiaccount.Config{\n\t\tAppid: viper.GetString(\"APPID\"),\n\t\tSecret: viper.GetString(\"SECRET\"),\n\t})\n\n\t// 创建钉钉应用实例\n\tDingApp = dingding.NewApp(dingding.AppConfig{\n\t\tAppKey: viper.GetString(\"AppKey\"),\n\t\tAppSecret: viper.GetString(\"AppSecret\"),\n\t})\n}\n\nfunc HandleMessage(c *gin.Context) {\n\n\t// 获取公众号消息\n\tbody, _ := ioutil.ReadAll(c.Request.Body)\n\tlog.Println(string(body))\n\n\tmessage, err := OffiAccount.Server.ParseXML(body)\n\tif err != nil {\n\t\tlog.Println(err)\n\t}\n\n\tvar output interface{}\n\tswitch message.(type) {\n\tcase type_message.MessageText: // 文本 消息\n\t\tmsg := message.(type_message.MessageText)\n\n\t\t// 调用 钉钉 翻译服务\n\t\tparams := struct {\n\t\t\tQuery string `json:\"query\"`\n\t\t\tTargetLanguage string `json:\"target_language\"`\n\t\t\tSourceLanguage string `json:\"source_language\"`\n\t\t}{}\n\n\t\tparams.Query = msg.Content\n\t\tparams.SourceLanguage = \"zh\"\n\t\tparams.TargetLanguage = \"fr\"\n\n\t\tdata, err := json.Marshal(params)\n\t\tif err != nil {\n\t\t\tfmt.Println(string(data), err)\n\t\t\treturn\n\t\t}\n\n\t\t// 翻译接口\n\t\tresp, err := ai.Translate(DingApp, data)\n\t\tfmt.Println(string(resp), err)\n\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\t// 翻译结果\n\t\tresult := struct {\n\t\t\tErrcode int64 `json:\"errcode\"`\n\t\t\tErrmsg string `json:\"errmsg\"`\n\t\t\tResult string `json:\"result\"`\n\t\t}{}\n\t\terr = json.Unmarshal(resp, &result)\n\t\tfmt.Println(result, err)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\t// 回复公众号 翻译结果文本消息\n\t\toutput = type_message.ReplyMessageText{\n\t\t\tReplyMessage: type_message.ReplyMessage{\n\t\t\t\tToUserName: type_message.CDATA(msg.FromUserName),\n\t\t\t\tFromUserName: type_message.CDATA(msg.ToUserName),\n\t\t\t\tCreateTime: strconv.FormatInt(time.Now().Unix(), 10),\n\t\t\t\tMsgType: type_message.ReplyMsgTypeText,\n\t\t\t},\n\t\t\tContent: type_message.CDATA(result.Result),\n\t\t}\n\t}\n\n\tOffiAccount.Server.Response(c.Writer, c.Request, output)\n}"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"运行效果"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/18/18dc690a3c16f897bf7832425a186857.jpeg","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"结语"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"至此,在"},{"type":"codeinline","content":[{"type":"text","text":"fastwego/offiaccount"}]},{"type":"text","text":" 和 "},{"type":"codeinline","content":[{"type":"text","text":"fastwego/dingding"}]},{"type":"text","text":" 这两个开源 Golang SDK 的辅助下,我们快速实现了微信 和 钉钉 服务打通的效果。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"完整演示代码:"},{"type":"link","attrs":{"href":"https://github.com/fastwego/offiaccount-demo","title":""},"content":[{"type":"text","text":"https://github.com/fastwego/offiaccount-demo"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"你也试一试吧~"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章