百度云CFC

函数计算CFC(Cloud Function Compute)是由百度云提供,基于事件机制的云端无服务器计算能力,具有高可用性、扩展性好、极速响应的优势。

百度云CFC为服务部署提供了方便,你仅需三步就可以完成服务部署。

  • 在线编写技能代码或者将代码打包成zip压缩包上传。
  • 选择代码触发器。
  • 进行CFC环境配置。

此外,百度云CFC还为服务部署提供了以下优势。

  • 无需关注代码编译、运行。
  • CFC模版中包含SDK开发包,可以直接使用SDK相关函数。
  • 技能仅在调用时运行代码,资源消耗大大减少。

目前CFC支持Node.js.6.11和Python 2.7两种语言。

DBP平台信息配置

当你使用百度云CFC功能时,你需要在DBP平台上配置如下信息。

图片

1.邀请链接:进入CFC的链接地址。目前CFC还属于邀请测试阶段,仅针对DBP平台用户进行开放和使用。

2.BRN(Baidu Resource Name):百度云资源名称。BRN是在CFC函数创建时生成。一个技能在CFC上可能有多个函数,每个函数都有一个BRN,这里需要填写入口函数的BRN。

3.回调功能:指技能回调DuerOS,主动向DuerOS发起请求信息,上报技能统计信息和状态等信息。

  • 不回调。 表示技能不使用回调功能,不向DuerOS上报状态信息及统计信息。技能无法使用技能数据能力。
  • 执行回调。表示技能使用回调功能,技能主动向DuerOS发送请求信息。需要在DBP平台配置如下信息。

    • Public Key:当DuerOS接收到技能发送的请求时,通过Public Key验证消息的正确性。函数创建后自动生成Public Key。
    • 加密算法:采用RSA算法。该选项不能更改。
    • 加密详情:算法长度是1024位。该选项不能更改。

    图片

4.保存配置信息。

创建CFC函数

1.从DBP平台的邀请链接进入百度云CFC函数,使用百度账号进行登陆。

2.创建CFC函数。

图片

  • 如果使用SDK进行技能开发,由“从模版创建函数”入口进入。该模版集成了DuerOS的SDK。创建函数过程请参考从模版创建函数
  • 如果不使用SDK进行技能开发,由“创建函数”入口进入。创建函数过程请参考从头创建函数

3.函数创建成功后,请将生成的BRN信息填到DBP平台。如果使用回调功能,请将Public Key信息填写到DBP平台。

图片

4.CFC函数支持在线编辑和上传函数zip包两种编码方式。你可以根据编码习惯选择任意一种。在使用上传函数zip包功能时,你需要先点击下载完整SDK包程序,然后将SDK包和你的代码一起上传。

图片

在使用上传函数zip包功能时,需要按照如下步骤进行。

  • 首先点击下载完整SDK程序包并解压,zip压缩包中包含node_modules、package.json、rsaKeys.js和index.js。
    • node_modules目录中存放SDK包及其相关的依赖包,该目录下内容不能修改。
    • package.json文件存放包管理相关内容,不能修改。
    • rsaKeys.js文件存放技能的私钥,不能修改。
    • index.js文件存放技能代码。在该文件中编写技能代码,但是文件名不能修改。
  • 其次,在index.js中编写技能代码。如果代码较多,可以新增js类型的文件,但是技能的入口函数需要放在index.js文件中。
  • 最后,将新增的技能代码、node_modules、package.json和rsaKeys.js打包成zip压缩包上传。

图片

5.设置触发器。在配置->触发器中,添加DuerOS触发器

图片

技能测试

以个人所得税为例,讲述如何使用CFC开发、测试技能。

创建个人所得税交互模型

1.创建个人所得税的技能。

在DBP平台点击创建新技能,技能类型选择自定义,技能名称输入“个人所得税技能”,调用名称输入“个人所得税”,点击确认。

2.创建个人所得税词典。

个人所得税技能支持用户根据城市和工资两个信息查询个税缴纳情况。需要创建城市词典和工资词典。

  • 创建城市词典。
    点击左侧导航页的词典,进入词典页面,选择创建词典。输入词典中文名“城市”,输入词典标识名“city”。 城市词典的内容如图所示。

图片

  • 创建工资词典
    工资以数字形式展现,这里不单独创建工资词典,使用DBP平台提供的系统词典中的数字词典(sys.number)。

3.创建意图
在左侧导航的中选择意图,点击创建意图。

  • 填写意图基本信息。意图中文名称“个税查询”和意图标识名“inquiry”,其中inquiry要与代码中的标识名保持一致。
  • 填写用户表达。用户表述意图的语句,可能有多种不同的表述方式,将这些可能的表述方式都要填到用户表达里面。如用户可能会询问“成都缴纳多少个税”,“上海工资5000元缴纳多少个税”,“上海月薪八千五缴纳多少个税”等。

图片

  • 填写槽位信息。
    在个人所得税的技能中,需要对城市和工资两个信息进行槽位标注,并关联相应的词典。城市信息标记为城市槽位,并与城市词典关联,同时填写追问语句“请问你在哪个城市”。工资信息标记为工资槽位,并与系统词典sys.number关联,同时填写追问语句“你工资是多少呢”。填写完槽位信息后,需要对用户表达中的语句进行槽位标注。如“成都月薪12000元个税是多少”中,需要将“成都”标注为city槽位,将“12000”标注为number槽位。用户表达中所有语句都需要进行槽位标注。

图片

4.设置技能回复。
技能回复选择服务配置满足。

图片

创建及配置CFC信息

1.创建CFC函数。
在百度云CFC上完成个人所得税技能代码的实现。

  • 使用百度账号登录到百度云CFC
  • 选择“从模版创建函数”,然后选择dueros-bot模版创建函数,输入函数名tax。点击确认。

图片

图片

  • 编辑个人所得税技能的代码。模版函数就是个人所得税技能的代码实现。这里对tax函数里不做代码修改,直接进行验证。模版代码如下。
    
    const Bot = require('bot-sdk');
    const privateKey = require("./rsaKeys.js").privateKey;    
    class InquiryBot extends Bot {   
      constructor(postData) {
          super(postData);
      
          this.addLaunchHandler(() => {
              this.waitAnswer();
              return {
                  outputSpeech: '欢迎使用查个税!'
              };
          });
          this.addSessionEndedHandler(() => {
              this.endSession();
              return {
                  outputSpeech: '谢谢使用查个税',
              };
          });
      
          this.addIntentHandler('inquiry', () => {
              let loc = this.getSlot('city');
              let monthlySalary = this.getSlot('number');
              if (!monthlySalary) {
                  this.nlu.ask('number');
                  let card = new Bot.Card.TextCard('你工资多少呢');
                  // 可以返回Promise
                  return Promise.resolve({
                      card: card,
                      outputSpeech: '你工资多少呢'
                  });
              }
      
              if (!loc) {
                  let card = new Bot.Card.TextCard('你在哪呢');
                  this.nlu.ask('city');
                  return {
                      card: card,
                      outputSpeech: '你在哪呢'
                  };
              }
      
              if (this.request.isDialogStateCompleted()) {
                  let card = new Bot.Card.TextCard('你需要缴纳1230元');
                  return {
                      card: card,
                      outputSpeech: '你需要缴纳1230'
                  };
              }
          });
      }
    }
    exports.handler = function(event, context, callback) {    
      try {
          let b = new InquiryBot(event);
          // 0: debug  1: online
          b.botMonitor.setEnvironmentInfo(privateKey, 0);
          b.run().then(function(result) {
              callback(null, result);
          }).catch(callback);
      } catch (e) {
          callback(e);
      }
    }
    
  • 其他配置信息保持不变。

2.填写CFC配置信息。
在DBP平台上填写个人所得税技能的配置信息。技能不使用回调功能,所以仅需填写BRN信息。

图片

测试技能效果

在模拟器上进行技能测试。测试样例如下。

测试:打开个人所得税
技能:欢迎使用查个税!
测试:北京缴纳多少个税
技能:你工资多少呢
测试:10000元
技能:你需要缴纳1230元

图片