php网站开发试题及答案,搜索设置 网站,北京搜狗建网站的电话,网站如何建设推广查看oracle会话和进程在这里和那里#xff0c;我们看到了无数的预测#xff0c;很快聊天机器人将在用户与其系统之间的通信中扮演关键角色。 我没有水晶球#xff0c;也不想等待这个“很快”#xff0c;所以我决定现在就使这些预言成真#xff0c;看看它是什么样。 我正在… 查看oracle会话和进程 在这里和那里我们看到了无数的预测很快聊天机器人将在用户与其系统之间的通信中扮演关键角色。 我没有水晶球也不想等待这个“很快”所以我决定现在就使这些预言成真看看它是什么样。 我正在工作的公司的标志产品是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_limit5) transcript r.recognize_google(audio)print(transcript)if active:requests.post(url URL, data transcript)time.sleep(5)except sr.UnknownValueError:print(Sorry, I dont 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, hostendpoint, 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; charsetutf-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隧道将我侦听localhost8080的Fn应用程序公开到Internet。 receiveFromBotFn函数也通过Node.js实现 const fdkrequire(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与custombotcomponent的Fn功能createSnapshotFn的聊天机器人所调用 fdk.handle(function(input){var resrequest(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会话和进程