联通微信与钉钉服务的相关整合策略

why 192 2024-07-08

联通微信和钉钉服务

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

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

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

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

微信公众号

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

image.png

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

钉钉开放平台

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

image.png

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

翻译服务开发

翻译服务非常简单:

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

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

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

主要代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

// 微信公众账号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)}

运行效果

image.png

结语

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微信中文件过期后的恢复方法有哪些
下一篇:身份证遭他人绑定微信应如何处理
相关文章

 发表评论

暂时没有评论,来抢沙发吧~