在这里和那里,我们看到许多预测,很快聊天机器人将在用户与其系统之间的通信中扮演关键角色。 我没有水晶球,也不想等待这个“很快”,所以我决定现在就使这些预言成真,看看它的样子。

我正在工作的公司的标志产品是FlexDeploy ,它是一种完全自动化的DevOps解决方案。 FlexDeploy中最流行的活动之一是创建一个发行快照,该快照实际上会构建所有可部署的工件,并使用管道在环境之间部署它们。

因此,我决定在周末玩得开心,并为此操作实现了一个对话式UI,可以与FlexDeploy进行对话从字面上看 。 在工作结束时,我的家人看到我正在和笔记本电脑聊天,他们可以听到类似的声音:

“ Calypso!” 我说。

“嗨,我能为您提供什么帮助?” 就是答案。

“不确定”我测试了她。

“你在开玩笑吧!” 她明白了。

“您可以建立快照吗?” 我问。

“当然,您在想什么版本?”

“ 1001”

她报告说: “为版本1001创建了快照”

“谢谢”

“今天过得愉快。”她松了一口气。

因此,基本上,我将实现以下图表:

作为UI的核心组件,我使用了全新的Oracle产品Oracle Digital Assistant 。 我建立了一种新的技能,可以进行基本的聊天,并实现了一个新的自定义 组件,因此我的机器人可以调用http请求,以使后端系统创建快照。 FlexDeployBot技能以及自定义组件的Node.js源代码的导出
在本文的GitHub 存储库中可以使用custombotcomponent

我将MacBook用作能够听和说的通信设备,并为机器人定义了一个Webhook 通道 ,以便可以向其发送消息并获得带有响应的回调。

在上面的图上看起来很简单。 唯一的问题是,我想将我的聊天机器人的大脑与通信设备的详细信息以及后端系统FlexDeploy的安装/版本的详细信息分离。 我需要一个中间的API层,一个缓冲区,在ODA和外部世界之间放置一些东西。 看起来无服务器功能非常适合这项工作。

作为无服务器平台,我使用了Fn Project 。 它的优点在于,它是一个完全基于Docker容器的无容器平台的无服务器平台,它可以轻松地在我的笔记本电脑(我在本文中所做的工作)或在云中的某个地方(例如在Oracle Kubernetes Engine上) 本地运行

好的,让我们从图的左到右深入了解实现细节。

因此, 侦听器组件,耳朵,可以识别我的语音并将其转换为文本的组件是使用Python实现的

该组件的关键代码片段如下所示(完整的源代码可在GitHub上找到 ):

r = sr.Recognizer()
mic = sr.Microphone()with mic as source:r.energy_threshold = 2000while True:  try:with mic as source: audio = r.listen(source, phrase_time_limit=5)           transcript = r.recognize_google(audio)print(transcript)if active:requests.post(url = URL, data = transcript)time.sleep(5)except sr.UnknownValueError:print("Sorry, I don't understand you")

为什么是Python ? 有很多可用的Python语音识别库,因此您可以使用它们,并选择一个更了解您的口音的库。 我喜欢Python。

因此,一旦听众识别出我的语音,它将调用Fn函数,将该短语作为请求主体传递。

函数sendToBotFn是通过Node.js实现的:

function buildSignatureHeader(buf, channelSecretKey) {return 'sha256=' + buildSignature(buf, channelSecretKey);
}function buildSignature(buf, channelSecretKey) {const hmac = crypto.createHmac('sha256', Buffer.from(channelSecretKey, 'utf8'));hmac.update(buf);return hmac.digest('hex');
}function performRequest(headers, data) {var dataString = JSON.stringify(data);var options = {body: dataString,
headers: headers};request('POST', host+endpoint, options);
}function sendMessage(message) {let messagePayload = {type: 'text',text: message}let messageToBot = {userId: userId,messagePayload: messagePayload}let body = Buffer.from(JSON.stringify(messageToBot), 'utf8');let headers = {};headers['Content-Type'] = 'application/json; charset=utf-8';headers['X-Hub-Signature'] = buildSignatureHeader(body, channelKey);performRequest(headers, messageToBot);
}fdk.handle(function(input){ sendMessage(input); return input;
})

为什么选择Node.js? 不是因为我喜欢。 不。这是因为有关实现自定义Web挂钩通道的 Oracle文档是指Node.js。 他们喜欢。

当聊天机器人响应时,它正在调用Webhook,该Webhook指的是在笔记本电脑上运行的Fn函数receiveFromBotFn
我使用ngrok隧道将侦听localhost:8080的Fn应用程序公开到Internet。 receiveFromBotFn函数也通过Node.js实现:

const fdk=require('@fnproject/fdk');
const request = require('sync-request');
const url = 'http://localhost:4390';
fdk.handle(function(input){  var sayItCall = request('POST', url,{body: input.messagePayload.text,});return input;
})

该功能将http请求发送到在本地运行并监听4390端口的简单Web服务器。

我必须承认,使用Node.js实现类似的事情非常容易。 Web服务器使用Mac OS X本机实用程序说出请求正文中出现的所有内容:

var http = require('http');
const exec = require("child_process").exec
const request = require('sync-request');http.createServer(function (req, res) {let body = '';req.on('data', chunk => {body += chunk.toString();});req.on('end', () => {       exec('say '+body, (error, stdout, stderr) => {});       res.end('ok');});res.end();}).listen(4390);

为了实际调用后端来创建一个快照与FlexDeploy与custombotcomponentFn功能createSnapshotFn的聊天机器人所调用:

fdk.handle(function(input){var res=request('POST',fd_url+'/flexdeploy/rest/v1/releases/'+input+'/snapshot',  {json: {action : 'createSnapshot'},});return JSON.parse(res.getBody('utf8'));
})

该函数很简单,它只是调用FlexDeploy REST API来开始为给定版本构建快照。 它也可以用Node.js实现,但是我将用Java重写它。 我爱Java。 此外,我将实现一个Fn Flow ,而不是一个简单的函数,该流程首先检查给定的发行版是否存在以及该发行版是否有效,然后才为该发行版调用createSnapshotFn函数。 在下一篇文章中。

而已!

翻译自: https://www.javacodegeeks.com/2018/12/conversational-assistant-fn-project.html

带有Oracle Digital Assistant和Fn Project的会话式UI相关推荐

  1. 查看oracle会话和进程_带有Oracle Digital Assistant和Fn Project的会话式UI

    查看oracle会话和进程 在这里和那里,我们看到了无数的预测,很快聊天机器人将在用户与其系统之间的通信中扮演关键角色. 我没有水晶球,也不想等待这个"很快",所以我决定现在就使这 ...

  2. oracle11g安装教程_带有Oracle Digital Assistant和Fn Project的会话式UI

    oracle11g安装教程 在这里和那里,我们看到了许多预测,很快聊天机器人将在用户与其系统之间的通信中发挥关键作用. 我没有水晶球,也不想等待这个"很快",所以我决定现在就使这些 ...

  3. 查看oracle会话和进程_带有Oracle Digital Assistant和Fn Project的会话式UI。 第三部分,迁移到云...

    查看oracle会话和进程 在这篇文章中,我将继续在Oracle Digital Assistant和Oracle Digital Assistant之上为FlexDeploy实现对话式UI的故事. ...

  4. 带有Oracle Digital Assistant和Fn Project的会话式UI。 第三部分,迁移到云

    在本文中,我将继续讲述在Oracle Digital Assistant和Oracle Digital Assistant的 基础上为FlexDeploy实现对话式UI的故事. Fn项目 . 今天,我 ...

  5. 带有Oracle Digital Assistant和Fn Project的会话式UI。 第二部分

    在上一篇文章中,我使用Oracle Digital Assistant为FlexDeploy实现了一个对话式UI. 今天,我将用Fn Flow丰富它,以便聊天机器人接受发行名称而不是ID来创建快照. ...

  6. java 使用 oracle的nvarchar2类型 字符串,java – 使用带有oracle JDBC驱动程序的Types.NVARCHAR来处理Cyrillic字符...

    我正在尝试使用 "New Methods for National Character Set Type Data in JDK 1.6"来获得标准的JDBC解决方案来处理西里尔字 ...

  7. 人力资源oracle,Oracle Connections

    Oracle HCM推出新功能以增强员工体验 为了帮助组织吸引最佳人才并满足不断发展的员工期望,Oracle今天宣布了Oracle人力资本管理(HCM)云中的一系列新功能和机器学习功能.这些新增功能使 ...

  8. 都在说 AI 与云计算融合,AI 在云中的作用真有那么大吗?

    采访嘉宾 | 谢鹏,甲骨文副总裁及中国区技术顾问总经理 记者 | 夕颜 出品 | CSDN(ID:CSDNnews) 「AI 技术生态论」 人物访谈栏目是 CSDN 发起的百万人学 AI 倡议下的重要 ...

  9. 2018甲骨文云大会:如何用“灵全快”抢占市场?

     关注ITValue,查看企业级市场最新鲜.最具价值的报道! 本文经授权转载自微信公众号云科技时代,ID:CloudTechTime 自数据库巨头甲骨文公司从2010年开始全面向云转型以来,就在业界掀 ...

最新文章

  1. Scrumban-拉动企业渐进式变革的利器
  2. navicat保存查询语句_MySQL数据库安装创建及Navicat客户端连接
  3. Linux shell程序一
  4. 软件包管理 之 fedora-rpmdevtools 工具介绍
  5. sql 查询表结构_SQL查询语句的完整结构解析
  6. ControllerChannelManager分析
  7. mybatis分页应用
  8. 什么是面向过程?什么是面向对象?面向对象的三大基本特征是什么?
  9. 02矩阵01 ——概念、运算和基本矩阵、对角矩阵、方幂、数量矩阵、转置矩阵、对称矩阵、逆矩阵、奇异矩阵、三角矩阵、矩阵乘积的行列式与秩
  10. 六石风格:雨伞用袋子套起来
  11. 如何解决VC 应用程序无法启动,因为应用程序的并行配置不正确 sxstrace.exe问题...
  12. DTCC大会归来感想
  13. QT自制复古武侠端游
  14. coreldraw2019天气滤镜_CorelDRAW2019(cdr2019)使用教程之 复制图形技巧
  15. android获取系统签名,Android apk签名详解——AS签名、获取签名信息、系统签名、命令行签名...
  16. struct和union的区别和存储方式
  17. 孩子为什么不能玩抖音精彩回答,共勉
  18. 企业信用代码等常用的正则验证
  19. 关于二维数组传参做形参
  20. php如何实现发送qq邮箱验证,php在windows下发送邮件实现

热门文章

  1. Codeforces Gym 101173 CERC 16 D BZOJ 4790 Dancing Disks
  2. 汇编语言(七)之字符串转大写
  3. 彻底理解HashMap的元素插入原理
  4. 漫画:什么是鸡尾酒排序
  5. Java 可重入锁内存可见性分析
  6. FileDescriptor的作用
  7. Util包中Arrays
  8. 09-一对多关系建表
  9. PPT 2010实现使用自定义主题付下载
  10. 生物信息 python 书籍_用python做生物信息数据分析(1-环境准备)