前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Serverless Cloud Function 开发实践

Serverless Cloud Function 开发实践

原创
作者头像
lqmeta
修改2020-06-15 02:58:21
2.2K1
修改2020-06-15 02:58:21
举报
文章被收录于专栏:得一

本文将讲述如何使用 Serverless Cloud Function 开发语言翻译工具。


SCF简述

腾讯云云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码, 是实时文件处理和数据处理等场景下理想的计算平台。您只需使用 SCF 平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。

备注:已注册腾讯云账户。若未注册腾讯云账户,可 点此 进入注册页面。

申请腾讯云“机器翻译”

在腾讯云官网“云产品”列表中点击选择“自然语言处理”的“机器翻译”,点击选择“免费试用”,如下图所示:

“机器翻译”界面
“机器翻译”界面

获取 SecretId 和 SecretKey

点击控制台界面右上角“头像”的“账号信息”,进入账号中心界面后,点击“访问管理”进入访问管理界面。

查看“访问密钥”便签下的“API密钥管理”界面,若没有生成过 API 密钥,则点击“新建密钥”按钮生成密钥。

“API密钥管理”界面
“API密钥管理”界面

机器翻译 API 的调用

代码如下:

代码语言:txt
复制
const tencentcloud = require("tencentcloud-sdk-nodejs");
const TmtClient = tencentcloud.tmt.v20180321.Client;
const Credential = tencentcloud.common.Credential;
const ClientProfile = tencentcloud.common.ClientProfile;
const HttpProfile = tencentcloud.common.HttpProfile;
// 此处填写上面获取到的 SecretId 和 SecretKey
const SecretId = 'XXXXXXXX';
const SecretKey = 'XXXXXXXX';

let cred = new Credential(SecretId, SecretKey);
let httpProfile = new HttpProfile();
httpProfile.endpoint = "tmt.tencentcloudapi.com";
let clientProfile = new ClientProfile();
clientProfile.httpProfile = httpProfile;
let client = new TmtClient(cred, "ap-guangzhou", clientProfile);

client.TextTranslate({
    SourceText: 'hello, world.',
    Source: 'en',
    Target: 'zh',
    ProjectId: 0,
}, function (errMsg, response) {
    if (errMsg) {
        console.error(errMsg);
    } else {
        console.log(response);
    }
});

申请腾讯云云函数

在腾讯云官网“云产品”列表中点击选择“Serverless”的“云函数

“云函数”界面
“云函数”界面

创建函数服务

点击“函数服务”进入函数服务界面,如下图所示:

“函数服务”界面
“函数服务”界面

基本信息填写页面

点击“新建”按钮,选择“Nodejs”运行环境,创建“空白函数”,如下图所示:

“函数服务 - 基本信息”
“函数服务 - 基本信息”

函数配置填写页面

点击“下一步”按钮,进入“函数配置”界面,如下图所示:

“函数服务 - 函数配置”
“函数服务 - 函数配置”
配置 package.json 文件

在“Cloud Studio”编辑界面的文件目录单击“右键”选择“新建文件”按钮生成“package.json”文件(点击Enter键生成)

配置 package.json 文件
配置 package.json 文件

输入如下代码:

代码语言:txt
复制
{
  "name": "hello-world",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "directories": {
    "test": "test"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "tencentcloud-sdk-nodejs": "^3.0.187"
  }
}
配置 index.js 文件

删除 index.js 原有的代码,将下面代码复制上去。

注意: 需要填写上面获取到的 SecretId 和 SecretKey,“机器翻译” API 调用需要用到。

代码语言:txt
复制
'use strict'
const tencentcloud = require("tencentcloud-sdk-nodejs");
const fs = require('fs')
const path = require('path')

const TmtClient = tencentcloud.tmt.v20180321.Client;
const Credential = tencentcloud.common.Credential;
const ClientProfile = tencentcloud.common.ClientProfile;
const HttpProfile = tencentcloud.common.HttpProfile;

const SecretId = 'XXXXXXXXXX';
const SecretKey = 'XXXXXXXXXX';

let cred = new Credential(SecretId, SecretKey);
let httpProfile = new HttpProfile();
httpProfile.endpoint = "tmt.tencentcloudapi.com";
let clientProfile = new ClientProfile();
clientProfile.httpProfile = httpProfile;
let client = new TmtClient(cred, "ap-guangzhou", clientProfile);

const textTranslate = (params) => {
    return new Promise((resolve, reject) => {
        client.TextTranslate(params, function (errMsg, response) {
            if (errMsg) {
                reject(errMsg);
            } else {
                resolve(response);
            }
        });
    });
}
const render = (tpl, variables) => {
    for (let key in variables) {
        const reg = new RegExp('\\$\\{' + key + '\\}', 'g')
        tpl = tpl.replace(reg, variables[key])
    }
    return tpl;
};

exports.main_handler = async (event, context, callback) => {
    const query = event.queryString || {};
    const sourceText = query.q;

    let res = await textTranslate({
        SourceText: sourceText,
        Source: 'en',
        Target: 'zh',
        ProjectId: 0,
    });
    res.SourceText = sourceText;

    let html = fs.readFileSync(path.resolve(__dirname, './index.html'), {
        encoding: 'utf-8'
    });
    html = render(html, res);

    return {
        isBase64Encoded: false,
        statusCode: 200,
        headers: { 'Content-Type': 'text/html' },
        body: html
    }
}
配置 index.html 文件

在“Cloud Studio”编辑界面的文件目录单击“右键”选择“新建文件”按钮生成“index.html”文件(点击Enter键生成)

配置 index.html 文件
配置 index.html 文件

输入如下代码:

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>腾讯云-机器翻译</title>
  <style>
    table{
      width: 100%;
      text-align: center;
    }
  </style>
</head>
<body>
  <table border="1">
    <tr>
      <th>语言种类</th>
      <th>文字信息</th>
    </tr>
    <tr>
      <td>${Source}</td>
      <td>${SourceText}</td>
    </tr>
    <tr>
      <td>${Target}</td>
      <td>${TargetText}</td>
    </tr>
  </table>
</body>
</html>

上传方式选择“在线安装依赖”,点击“完成”按钮。

函数服务
函数服务

至此,我们就创建好了云函数的函数服务。

使用 API 访问

点击“触发管理”进入触发管理界面,点击“创建触发器”按钮,如下图所示:

“触发管理”界面
“触发管理”界面

触发方式选择“API网关触发器”,勾选“启用集成响应”。点击“提交”按钮,即生成“API网关触发器”。

“触发管理 - API网关触发器”
“触发管理 - API网关触发器”

如上图所示的“访问路径”即接口地址。

访问云函数的语言翻译 API

访问接口查询“hello, world.”的翻译:

https://service-2fihgccs-1253513412.gz.apigw.tencentcs.com/release/hello-world?q=hello,%20world.

hello, world.
hello, world.

访问接口查询“Life is short and you deserve to be happy.”的翻译:

http://service-2fihgccs-1253513412.gz.apigw.tencentcs.com/release/hello-world?q=Life%20is%20short%20and%20you%20deserve%20to%20be%20happy%E3%80%82

Life is short and you deserve to be happy.
Life is short and you deserve to be happy.

参考资料

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SCF简述
  • 申请腾讯云“机器翻译”
    • 获取 SecretId 和 SecretKey
      • 机器翻译 API 的调用
      • 申请腾讯云云函数
        • 创建函数服务
          • 基本信息填写页面
          • 函数配置填写页面
        • 使用 API 访问
        • 访问云函数的语言翻译 API
        • 参考资料
        相关产品与服务
        机器翻译
        机器翻译(Tencent Machine Translation,TMT)结合了神经机器翻译和统计机器翻译的优点,从大规模双语语料库自动学习翻译知识,实现从源语言文本到目标语言文本的自动翻译,目前可支持十余种语言的互译。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档