Maison  >  Article  >  Applet WeChat  >  Services WeChat et DingTalk de China Unicom

Services WeChat et DingTalk de China Unicom

coldplay.xixi
coldplay.xixiavant
2020-08-31 17:39:593048parcourir

Services WeChat et DingTalk de China Unicom

[Recommandations d'apprentissage associées : Tutoriel de développement de compte public WeChat]

WeChat et DingTalk appartiennent aux deux camps de Tencent et Alibaba. Quel genre de scène magique ce sera lorsqu'ils pourront être interconnectés ?

Aujourd'hui, nous allons l'essayer via les deux SDK Golang open source fastwego/offiaccount et fastwego/dingding :

Implémenter un compte public WeChat qui se transforme en traducteur en quelques secondes : envoyer aux utilisateurs sur texte chinois, traduit en français.

WeChat Open Platform et DingTalk Open Platform

Compte officiel WeChat

Activer le mode développement et reprendre les messages envoyés par les utilisateurs :

Dans le même temps, les informations de configuration appid/secret/token du compte public WeChat seront également obtenues

DingTalk Open Platform

Ouvrez la micro-application H5 interne de l'entreprise et complétez l'autorisation de l'interface AI :

En même temps, les informations de configuration de DingTalk AppKey/AppSecret sera obtenu

Développement du service de traduction

Le service de traduction est très simple :

  • Récupérez le texte envoyé par le Utilisateur du compte public WeChat
  • Appelez l'interface de traduction DingTalk AI, convertie dans la langue cible
  • Répondez au compte officiel WeChat et envoyez les résultats de la traduction à l'utilisateur

Code principal :

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

Effet opérationnel

Conclusion

À ce stade , avec l'aide des deux SDK Golang open source fastwego/offiaccount et fastwego/dingding, nous pouvons rapidement implémenter Cela a pour effet de connecter les services WeChat et DingTalk.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer