本文介绍如何安装和快速使用智能媒体管理Go SDK。

前提条件

  • 已下载并安装Go的开发环境。
  • 已创建并获取Access Key。具体操作,请参见获取AccessKey
  • 已开通OSS服务、创建存储空间并上传文件到存储空间。具体操作,请参见OSS控制台使用流程
  • 已开通智能媒体管理服务。具体操作,请参见开通产品
    注意 目前在华东1(杭州)和华东2(上海)地域中,您也可以通过调用OpenImmService接口开通智能媒体管理服务。
  • 已创建所需类型的项目。具体操作,请参见创建项目

快速使用

使用智能媒体管理Go SDK的操作步骤如下:

  1. 安装智能媒体管理Go SDK。

    执行如下命令安装智能媒体管理Go SDK。

    Go SDK在GitHub中的路径请参见Go SDK

    go get github.com/aliyun/alibaba-cloud-sdk-go
    安装过程中出现如下错误时,请忽略该错误。
    can't load package: package github.com/aliyun/alibaba-cloud-sdk-go: no Go files in /Users/zouyongbo/Projects/go-deps/src/github.com/aliyun/alibaba-cloud-sdk-go
  2. 开始一个Go项目。

    使用Go SDK的主要步骤如下:

    1. 创建Client实例。

      在创建Client实例时,您需要获取并配置Region ID、AccessKey ID和AccessKey Secret。

    2. 创建API请求并设置参数。
    3. 发起请求并处理应答或异常。

    如下示例以在华东1(杭州)地域中创建文档转换任务为例说明。

    package main
    
    import (
        "fmt"
        "time"
    
        "github.com/aliyun/alibaba-cloud-sdk-go/services/imm"
    )
    
    func main() {
        //初始化IMM客户端。
        immClient, err := imm.NewClientWithAccessKey(
            "cn-hangzhou",               //项目所在地域ID。
            "your_access_key_id",        //RAM用户的AccessKey ID。
            "your_access_key_secret")    //RAM用户的AccessKey Secret。
        if err != nil {
            // Handle exceptions
            panic(err)
        }
    
        //项目名称。请确保已创建该项目且项目类型为文档标准型(DocStarter)。
        projectName := "imm-go-sdk-doc-demo"
    
        //创建文档转换任务。
        req2 := imm.CreateCreateOfficeConversionTaskRequest()
        req2.Project = projectName
        req2.SrcUri = "oss://your-bucket-name/your-path/your-doc.doc"
        req2.TgtType = "vector"
        req2.TgtUri = "oss://your-bucket-name/your-path/your-doc-output"
    
        response2, err := immClient.CreateOfficeConversionTask(req2)
        if err != nil {
            //Handle exceptions
            panic(err)
        }
        fmt.Println(response2)
    
        //等待任务完成。
        maxGetCount := 30
        getInternval := time.Second
    
        getCount := 0
        req3 := imm.CreateGetOfficeConversionTaskRequest()
        req3.Project = projectName
        req3.TaskId = response2.TaskId
    
        for {
            time.Sleep(getInternval)
    
            response3, err := immClient.GetOfficeConversionTask(req3)
            if err != nil {
                //Handle exceptions
                panic(err)
            }
            fmt.Println(response3)
    
            if response3.Status != "Running" {
                break
            }
    
            getCount++
            if getCount >= maxGetCount {
                fmt.Println("OfficeConversion Timeout for 30 seconds")
                break
            }
    
        }
    }                            
    当文档转换任务的执行状态为Running时,返回结果如下:
    {
      "NotifyTopicName": "",
      "FailDetail": {
        "Code": ""
      },
      "TaskId": "ee52a217-234a-4922-8bd5-fcce5584c0e7",
      "NotifyEndpoint": "",
      "PageCount": 0,
      "Status": "Running",
      "TgtType": "vector",
      "FinishTime": "",
      "CreateTime": "2018-07-21T15:37:28.539Z",
      "RequestId": "4153D465-45D3-4457-A273-DED40505CAD5",
      "SrcUri": "oss://your-bucket-name/your-path/your-doc.doc",
      "Percent": 0,
      "TgtUri": "oss://your-bucket-name/your-path/your-doc-output"
    }                            
    当文档转换任务的执行状态为Finished时,返回结果如下:
    {
      "NotifyTopicName": "",
      "FailDetail": {
        "Code": "NoError"
      },
      "TaskId": "ee52a217-234a-4922-8bd5-fcce5584c0e7",
      "NotifyEndpoint": "",
      "PageCount": 32,
      "Status": "Finished",
      "TgtType": "vector",
      "FinishTime": "2018-07-21T15:37:32.419Z",
      "CreateTime": "2018-07-21T15:37:28.539Z",
      "RequestId": "CACA2EC6-98FC-457A-810F-4035DD32A43B",
      "SrcUri": "oss://your-bucket-name/your-path/your-doc.doc",
      "Percent": 100,
      "TgtUri": "oss://your-bucket-name/your-path/your-doc-output"
    }                            
    当文档转换任务的执行状态为Failed时,返回结果如下:
    {
      "NotifyTopicName": "",
      "FailDetail": {
        "Code": "FailedToDownloadSrcFile"
      },
      "TaskId": "1c8d3a19-9f28-433f-be13-8e42b8851ef3",
      "NotifyEndpoint": "",
      "PageCount": 0,
      "Status": "Failed",
      "TgtType": "vector",
      "FinishTime": "",
      "CreateTime": "2018-07-21T15:47:53.865Z",
      "RequestId": "453B7362-D404-47A3-88A7-BE14F494812C",
      "SrcUri": "oss://your-bucket-name/your-path/your-doc.doc",
      "Percent": 0,
      "TgtUri": "oss://your-bucket-name/your-path/your-doc-output"
    }