首頁 >微信小程式 >微信開發 >聯通微信和釘釘服務

聯通微信和釘釘服務

coldplay.xixi
coldplay.xixi轉載
2020-08-31 17:39:593153瀏覽

聯通微信和釘釘服務

【相關學習推薦:#微信公眾號開發教學

#微信和釘釘,分屬於騰訊和阿里巴巴兩大陣營,當他們之間可以互聯互通,會是一種怎樣神奇的場景? 今天,我們就透過fastwego/offiaccount

fastwego/dingding

這兩個開源Golang SDK 試一試:

#實現一個微信公眾號秒變翻譯機的服務:將使用者發送過來的中文文本,翻譯成法語。

微信開放平台& 釘開放平台

#微信公眾號

開啟開發模式,接管用戶發送的訊息:

同時,也將取得到微信公眾號的appid/secret/token 設定資訊

釘開放平台

開通企業內部H5 微應用程式並完成AI 介面授權:

#同時也將取得的釘子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)}

執行效果

結語至此,在fastwego/offiaccount

fastwego/dingding### 這在兩個開源Golang SDK 的輔助下,我們快速實現了微信和釘釘服務打通的效果。 ###

以上是聯通微信和釘釘服務的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:learnku.com。如有侵權,請聯絡admin@php.cn刪除