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

前提条件

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

快速使用

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

  1. 安装智能媒体管理Node.js SDK。
    使用npm添加智能媒体管理Node.js SDK。安装命令如下:
    npm i @alicloud/pop-core --save

    Node.js SDK在GitHub中的路径请参见Node.js SDK

  2. 开始一个Node.js项目。
    1. 调用CreateOfficeConversionTask接口创建文档转换任务。
      const Core = require('@alicloud/pop-core');
      
      var client = new Core({
        accessKeyId: 'your_access_key_id',
        accessKeySecret: 'your_access_key_secret',
        endpoint: 'https://imm.cn-hangzhou.aliyuncs.com',
        apiVersion: '2017-09-06'
      });
      
      var params = {
        "RegionId": "cn-hangzhou",
        "SrcUri": "oss://preview-office-bucket/docs/input/demo.pptx",
        "TgtUri": "oss://preview-office-bucket/docs/output/demo_pptx",
        "Project": "immdoctest",
        "TgtType": "vector"
      }
      
      var requestOption = {
        method: 'POST'
      };
      
      client.request('CreateOfficeConversionTask', params, requestOption).then((result) => {
        console.log(JSON.stringify(result));
      }, (ex) => {
        console.log(ex);
      })
    2. 调用GetOfficeConversionTask接口查询文档转换任务。
      const { RPCClient } = require('@alicloud/pop-core');
      
      //查询文档转换任务状态。
      async function getOfficeConversionTask(project, taskId){
        var client = new RPCClient({
          endpoint:'http://imm.cn-hangzhou.aliyuncs.com',
          accessKeyId: 'your_access_key_id',
          accessKeySecret: 'your_access_key_secret',
          apiVersion: '2017-09-06'
        });
      
        try{
          var params = {
            Project: project,
            TaskId: taskId
          };
          var result = await client.request("GetOfficeConversionTask", params);
          console.log(JSON.stringify(result));
        }catch(err){
          console.log(err);
        }
      }
      
      getOfficeConversionTask("immdoctet", "formatconvert-a1e2124e-5f10-4e78-bf73-d41d463d6727")
                                  

      您可以使用如下示例轮询文档转换任务状态,直到任务状态不为Running或达到设置的次数时结束轮询。

      如果任务状态为Finished,则返回true,如果状态为Failed或者达到重试次数,则返回false,其他情况均抛出异常。

      async function checkTaskFinished(project, taskId, reTryTimes) {
        var result = {};
        while(reTryTimes-- > 0){
          await delay(1000);
          result = await getOfficeConversionTask(project, taskId);
          if(result && result.Status == "Finished"){
            return true;
          }
          if(result && result.Status == "Failed"){
            return false;
          }
        }
        return false;
      
        async function delay(ms) {
          return new Promise((a, b) => {
            setTimeout(a, ms);
          });
        }
      }