写点什么

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

用户头像
Ceelog
关注
发布于: 2020 年 08 月 30 日

微信 和 钉钉,分属于 腾讯 和 阿里巴巴 两大阵营,当他们之间可以互联互通,会是一种怎样神奇的场景?


今天,我们就通过 fastwego/offiaccountfastwego/dingding 这两个开源 Golang SDK 试一试:


实现一个微信公众号秒变翻译机的服务:将用户发送过来的中文文本,翻译成法语。


微信开放平台 & 钉钉开放平台


微信公众号


开启开发模式,接管用户发送的消息:



同时,还将获取到微信公众号的 appid/secret/token 配置信息


钉钉开放平台


开通企业内部 H5 微应用并完成 AI 接口授权:



同时还将获取的钉钉 AppKey/AppSecret 的配置信息


翻译服务开发


翻译服务非常简单:


  • 获取微信公众号用户发送的文本

  • 调用钉钉 AI 翻译接口,转换为目标语言

  • 响应微信公众号,将翻译结果发送给用户


主要代码:


// 微信公众账号var OffiAccount *offiaccount.OffiAccount
// 钉钉 App 实例var DingApp *dingding.App
func init() { // 加载配置文件 viper.SetConfigFile(".env") _ = viper.ReadInConfig()
// 创建公众号实例 OffiAccount = offiaccount.New(offiaccount.Config{ Appid: viper.GetString("APPID"), Secret: viper.GetString("SECRET"), })
// 创建钉钉应用实例 DingApp = dingding.NewApp(dingding.AppConfig{ AppKey: viper.GetString("AppKey"), AppSecret: viper.GetString("AppSecret"), })}
func HandleMessage(c *gin.Context) {
// 获取公众号消息 body, _ := ioutil.ReadAll(c.Request.Body) log.Println(string(body))
message, err := OffiAccount.Server.ParseXML(body) if err != nil { log.Println(err) }
var output interface{} switch message.(type) { case type_message.MessageText: // 文本 消息 msg := message.(type_message.MessageText)
// 调用 钉钉 翻译服务 params := struct { Query string `json:"query"` TargetLanguage string `json:"target_language"` SourceLanguage string `json:"source_language"` }{}
params.Query = msg.Content params.SourceLanguage = "zh" params.TargetLanguage = "fr"
data, err := json.Marshal(params) if err != nil { fmt.Println(string(data), err) return }
// 翻译接口 resp, err := ai.Translate(DingApp, data) fmt.Println(string(resp), err)
if err != nil { return }
// 翻译结果 result := struct { Errcode int64 `json:"errcode"` Errmsg string `json:"errmsg"` Result string `json:"result"` }{} err = json.Unmarshal(resp, &result) fmt.Println(result, err) if err != nil { return }
// 回复公众号 翻译结果文本消息 output = type_message.ReplyMessageText{ ReplyMessage: type_message.ReplyMessage{ ToUserName: type_message.CDATA(msg.FromUserName), FromUserName: type_message.CDATA(msg.ToUserName), CreateTime: strconv.FormatInt(time.Now().Unix(), 10), MsgType: type_message.ReplyMsgTypeText, }, Content: type_message.CDATA(result.Result), } }
OffiAccount.Server.Response(c.Writer, c.Request, output)}
复制代码


运行效果



结语


至此,在fastwego/offiaccountfastwego/dingding 这两个开源 Golang SDK 的辅助下,我们快速实现了微信 和 钉钉 服务打通的效果。


完整演示代码:https://github.com/fastwego/offiaccount-demo


你也试一试吧~


发布于: 2020 年 08 月 30 日阅读数: 1216
用户头像

Ceelog

关注

微信公众号 Ceelog 2017.10.18 加入

Faster we go together

评论

发布
暂无评论
打通微信和钉钉服务是一种怎样的体验?