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

查看oracle会话和进程

在这篇文章中,我将继续在Oracle Digital Assistant和Oracle Digital Assistant之上为FlexDeploy实现对话式UI的故事。
Fn项目 。 今天,我将围绕聊天机器人工作的无服务器API迁移到云中,因此整个解决方案都在云中工作:

对话式使用者介面

该API是作为收集到Fn应用程序中的Fn函数集来实现的。 Fn的优点在于,它只是一堆Docker容器,它们可以同样在本地Docker引擎和云中某个位置的笔记本电脑上运行。 话虽如此,我可以从任何云提供商,因为它描述的运行K8S集群上我的FN应用在这里 。 但是今天不是那天。 今天,我将在基于Fn的全新云服务Oracle Functions上运行我的无服务器API。 该服务尚不通用,但是我参与了“有限可用性”计划,因此我可以对其进行试用,可以使用它并在其上发布博客。 在此解决方案中,我必须摆脱这里实现的Fn Flow ,并回到我原来的实现,因为Oracle Functions还不支持Fn Flow。 我希望很快,因为这实际上是最好的部分。

因此,配置好我们的OCI环境并启动并运行Oracle Functions服务(我不会在此处重新发布Oracle教程),我们需要配置Fn CLI以便能够与该服务进行通信:

fn create context oracle_fn --provider oracle 
fn use context oracle_fn
fn update context oracle.compartment-id MY_COMPARTMENT_ID
fn update context api-url https://functions.us-phoenix-1.oraclecloud.com
fn update context registry phx.ocir.io/flexagonoraclecloud/flexagon-repo
fn update context oracle.profile oracle_fn

好的,现在我们的Fn命令行界面正在与Oracle Functions对话。 下一步是在Oracle Functions控制台中创建一个应用程序:

对话式使用者介面

现在我们可以将Fn应用程序部署到Oracle Functions

Eugenes-MacBook-Pro-3:fn fedor$ ls -l
total 8
-rw-r--r--@ 1 fedor  staff   12 Dec  4 15:41 app.yaml
drwxr-xr-x  5 fedor  staff  160 Feb  9 15:24 createsnapshotfn
drwxr-xr-x  6 fedor  staff  192 Feb  9 15:25 receiveFromBotFn
drwxr-xr-x  6 fedor  staff  192 Feb  9 15:25 sendToBotFn
Eugenes-MacBook-Pro-3:fn fedor$ 
Eugenes-MacBook-Pro-3:fn fedor$ 
Eugenes-MacBook-Pro-3:fn fedor$ fn deploy --all

完成后,我们可以在Oracle Functions控制台中观察该应用程序:

对话式使用者介面

下一步是更新聊天机器人和便携式计算机中的API网址,以便调用云中的功能,而不是先前的本地实现。 可以使用以下命令检索URL:

fn list triggers odaapp

到目前为止,从我的笔记本电脑到Oracle Functions的迁移一直看起来非常简单。 但是这里有点痛苦。 为了使用http请求调用Oracle Functions中托管的函数 ,应该对请求进行签名,以便它们可以通过身份验证。 调用签名函数调用的node.js实现如下所示:

var fs = require('fs');
var https = require('https');
var os = require('os');
var httpSignature = require('http-signature');
var jsSHA = require("jssha");var tenancyId = "ocid1.tenancy.oc1..aaaaaaaayonz5yhpr4vxqpbdof5rn7x5pfrlgjwjycwxasf4dkexiq";
var authUserId = "ocid1.user.oc1..aaaaaaaava2e3wd3cu6lew2sktd6by5hnz3d7prpgjho4oambterba";
var keyFingerprint = "88:3e:71:bb:a5:ea:68:b7:56:fa:3e:5d:ea:45:60:10";
var privateKeyPath = "/Users/fedor/.oci/functions_open.pem";
var privateKey = fs.readFileSync(privateKeyPath, 'ascii');
var identityDomain = "identity.us-ashburn-1.oraclecloud.com";function sign(request, options) {var apiKeyId = options.tenancyId + "/" + options.userId + "/" + options.keyFingerprint;var headersToSign = ["host","date","(request-target)"];var methodsThatRequireExtraHeaders = ["POST", "PUT"];if(methodsThatRequireExtraHeaders.indexOf(request.method.toUpperCase()) !== -1) {options.body = options.body || "";var shaObj = new jsSHA("SHA-256", "TEXT");shaObj.update(options.body);request.setHeader("Content-Length", options.body.length);request.setHeader("x-content-sha256", shaObj.getHash('B64'));headersToSign = headersToSign.concat(["content-type","content-length","x-content-sha256"]);}httpSignature.sign(request, {key: options.privateKey,keyId: apiKeyId,headers: headersToSign});var newAuthHeaderValue = request.getHeader("Authorization").replace("Signature ", "Signature version=\"1\",");request.setHeader("Authorization", newAuthHeaderValue);
}function handleRequest(callback) {return function(response) {var responseBody = "";response.on('data', function(chunk) {responseBody += chunk;});response.on('end', function() {callback(JSON.parse(responseBody));});}
}function createSnapshot(release) {var body = release;var options = {host: 'af4qyj7yhva.us-phoenix-1.functions.oci.oraclecloud.com',path: '/t/createsnapshotfn',method: 'POST',headers: {"Content-Type": "application/text",}};var request = https.request(options, handleRequest(function(data) {console.log(data);}));sign(request, {body: body,privateKey: privateKey,keyFingerprint: keyFingerprint,tenancyId: tenancyId,userId: authUserId});request.end(body);
};

调用Oracle Functions中托管的无服务器API时, Oracle Digital Assistant定制组件和笔记本电脑上的侦听器组件应使用此方法。

而已!

翻译自: https://www.javacodegeeks.com/2019/02/conversational-oracle-assistant-fn.html

查看oracle会话和进程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/332754.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浏览器用户脚本管理器(Tampermonkey)

文章目录脚本管理器的好处是什么?用户脚本管理器有哪些?如何使用?安装脚本示例常用脚本脚本管理器的好处是什么? 用户脚本管理器将在您的用户脚本管理方面提供更多的便利。 它提供了诸如便捷脚本安装、自动更新检查、标签中的脚本…

服务器$java_top路径_ERP实施项目-MD120_FIN000_即时打印_V1.0

中国移动项目即时打印开发在此将web的即时打印开发成通用程序。1、首先通过创建rtf模板制定报表的输出格式;2、将需要输出的数据插入客户化表cux_fnd_xml_pool中;3、通过EBS功能调用CuxFndXmlpViewer.jsp。此jsp程序会根据传入的参数判断调用哪个rtf模板…

通讯网关 api网关_API网关正在经历身份危机

通讯网关 api网关这些年来,API网关正在经历一些身份危机 。 它们是否是集中的共享资源,从而促进了API对外部实体的公开和治理? 它们是集群入口哨兵,可以严格控制哪些用户流量进入或离开集群吗? 还是他们根据自己拥有…

百度搜索引擎使用技巧

1.在指定的网站搜索内容 在搜索框输入:site:youku.com 蛋炒饭,则只会返回优酷网站上关于蛋炒饭的内容 2.屏蔽指定的网站 例如,搜索“内存溢出”,但是不希望看到 csdn 网站相关的内容,你可以在搜索框输入:内…

docker 容器监控_以简便的方式监控Docker容器中的ADF应用程序

docker 容器监控在这篇简短的文章中,我将展示一种简单的方法来确保在Docker容器中运行的ADF应用程序在内存利用率方面是健康的Java应用程序。 我将使用标准工具JConsole,它是计算机上JDK安装的一部分。 如果存在问题(例如,内存泄漏…

phpexcel 日期 时分秒_thinkPHP+PHPExcel实现读取文件日期的方法含时分秒

Vendor(PHPExcel.PHPExcel.IOFactory);$inputFileName Public/demo/demo.xls;$objReader new PHPExcel_Reader_Excel5();$objPHPExcel $objReader->load($inputFileName);$sheet $objPHPExcel->getSheet(0);$highestRow $sheet->getHighestRow(); // 取得总行数$…

css中的display属性值:table,table-row,table-cell

table&#xff1a;此元素会作为块级表格来显示&#xff08;类似 <table>&#xff09;&#xff0c;表格前后带有换行符。 table-row&#xff1a;此元素会作为一个表格行显示&#xff08;类似 <tr>&#xff09;。 table-cell&#xff1a;此元素会作为一个表格单元格显…

Bootstrap的学习

文章目录概念入门响应式布局响应式布局的实现&#xff08;栅格系统&#xff09;示例代码注意事项栅格系统参考视频应用 Bootstrap 的组件概念 一个前端开发的框架&#xff0c;Bootstrap&#xff0c;来自Twitter&#xff0c; 是目前很受欢迎的前端框架。Bootstrap 是基于HTML、…

jdk8 string::_JDK 12的String :: transform方法的简要但复杂的历史

jdk8 string::最近有人提议从JDK 12中删除Java预览功能Raw String Literals &#xff08; JEP 326 &#xff09;&#xff0c; 现在正式宣布将删除该预览功能 &#xff08; Java SE 12 [JSR 386] 25版将其删除 &#xff09;。 JDK String类中已添加了几种方法来支持此功能。 即使…

注册界面的实现案例视频(前端开发)

视频1&#xff1a;https://live.csdn.net/v/182184 视频2&#xff1a;https://live.csdn.net/v/182185 视频3&#xff1a;https://live.csdn.net/v/182186 视频4&#xff1a;https://live.csdn.net/v/182200

jdbc如何写csv文件_Java:将JDBC结果集作为CSV流化

jdbc如何写csv文件在上一篇文章中 &#xff0c;我展示了如何将java.sql.ResultSet转换为JSON并将其流回调用方。 这篇文章是关于以CSV格式流式传输。 流式传输使您可以一点一点地传输数据&#xff0c;而不必将所有数据都加载到服务器的内存中。 例如&#xff0c;考虑以下Resul…

使用Bootstrap开发网站首页

视频1&#xff1a;https://live.csdn.net/v/182207 视频2&#xff1a;https://live.csdn.net/v/182208 视频3&#xff1a;https://live.csdn.net/v/182209

在java中3.14156d表示_2006年9月计算机等级考试二级Java笔试真题

一、选择题(每小题2分&#xff0c;共70分)下列各题A)、B)、C)、D)四个选项中&#xff0c;只有一个选项是正确的&#xff0c;请将正确选项涂写在答题卡相应位置上&#xff0c;答在试卷上不得分。(1)下列选项中不符合良好程序设计风格的是_____。A)源程序要文档化B)数据说明的次序…

apigee 安装_APIGEE:用于API代理的CI / CD管道

apigee 安装在本文中&#xff0c;我们将看到如何为APIGEE API代理创建CI / CD管道。 我已经参考了APIGEE社区上同一主题的几篇文章。 这些给了一些关于如何为API代理设置CI / CD管道的想法。 这是我用来设置CI / CD的工具。 詹金斯 节点 蜂胶 新人 APIGEE管理API 确保已创…

超链接标签/<a>标签

保留 <a> 标签的点击功能&#xff0c;但是点击不需要跳转&#xff0c;也就是取消 href 属性的功能&#xff0c;可以这样做&#xff1a; <a href"javascript:void(0);">test2</a>href 属性不能去掉&#xff0c;否则看不到链接样式。

php model层怎么写逻辑,目前用php框架的话,大家会把逻辑写到model中吗?

目前用php框架的话&#xff0c;大家会把逻辑写到model中吗&#xff1f;还是model只做数据的添加删除 修改操作&#xff1f;如果说是简单 mvc框架 你们把逻辑写在哪里&#xff1f;controller&#xff1f;还是说自己弄了个逻辑层&#xff1f;回复内容&#xff1a;目前用php框架的…

gradle项目 构建_使用Gradle构建Monorepo项目

gradle项目 构建根据Wikipedia的说法 &#xff0c; monorepo是一种软件开发策略&#xff0c;其中许多项目存储在同一资源库中。 这种策略可以快速检测到因依赖关系的更改而导致的潜在问题和破坏&#xff0c;并且已被许多使用大型代码库的组织采用&#xff0c;例如Google&#x…

jsoup爬虫教程技巧_Jsoup V的幕后秘密:优化的技巧和窍门

jsoup爬虫教程技巧我们已经把事情做好了&#xff0c;现在是时候加快工作速度了。 我们会牢记Donald Knuth的警告&#xff1a;“大约97&#xff05;的时间我们应该忘记效率低下&#xff1a;过早的优化是万恶之源”。 根据Jonathan Hedley的介绍&#xff0c;他使用YourKit Java …

DOM(document object model),文档对象模型

DOM 将标记语言文档一次性加载进内存中&#xff0c;在内存中形成一棵 DOM 数。

php 获取请求设备,php – 如何获取设备令牌

我有一个iOS应用程序,我想集成推送通知.我见过tutorial on youtube,一切都还可以,但最近我使用的是开发证书(用于测试 – 不用于AppStore),我的服务器上有PHP脚本.在这个文件中存储了deviceToken,它有我的iPhone并且用php变量$deviceToken编写.但是现在,当我想在AppStore中使用…