服务器与微信联通,联通微信和钉钉服务

554467912b39e3e092aafb4c9c386783.png

【相关学习推荐:

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

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

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

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

微信公众号

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

c00afd6bf575345c8e08261e54826af5.png

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

钉钉开放平台

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

4ebcf3486c60caec308c63bc918d60aa.png

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

翻译服务开发

翻译服务非常简单:获取微信公众号用户发送的文本

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

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

主要代码:// 微信公众账号var OffiAccount *offiaccount.OffiAccount// 钉钉 App 实例var DingApp *dingding.Appfunc 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)}

运行效果

91e14f3265833f50f44fed069ffb6d12.png

结语

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值