日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/3 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 带有Oracle Digital Assistant和Fn Project的会话式UI。 第三部分,迁移到云 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在本文中,我將繼續講述在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 Digital Assistant和Fn Project的会话式UI。 第三部分,迁移到云的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 杨贵妃颤抖双乳呻吟求欢小说 | 亚洲福利视频一区 | 亚洲 欧美 变态 另类 综合 | 999久久久国产精品 韩国精品一区二区 | av综合色| 黄站在线观看 | 日韩av网址大全 | 超碰黑人| 欧美乱大交xxxxx | av网站在线免费 | 一区二区久久 | 欧美日韩国产免费一区二区三区 | 中日韩在线视频 | 夜夜嗨aⅴ一区二区三区 | 免费毛片a| 国产日产久久高清欧美一区 | 欧美性久久久久 | 可以免费看的av网站 | 黄色资源在线播放 | 七七色影院 | 啦啦啦av | 91香蕉国产| 黄色av不卡| 怡红院精品视频 | 欧美一区二区三区观看 | 日日干天天射 | 91丝袜呻吟高潮美腿白嫩 | 亚洲www| 亚欧美一区二区三区 | 亚洲AV成人无码久久精品巨臀 | 亚洲激情网站 | 黄色一级大片免费版 | 国产女人叫床高潮大片免费 | 春闺艳妇(h)高h产乳 | 大j8黑人w巨大888a片 | 欧美精品黄 | 国产人妻人伦精品1国产盗摄 | 精品国产一级 | 国产一区二区三区在线观看视频 | 97在线国产 | 久久国产这里只有精品 | 久热精品在线观看 | 精品免费一区 | 中文天堂av | 爱爱视频免费网站 | 69xxx国产 | 久久免费看少妇高潮v片特黄 | 绿帽人妻精品一区二区 | 99久视频| 四虎在线免费播放 | 午夜不卡视频 | 91嫩草在线 | 狠狠操夜夜爽 | 亚洲综合在线观看视频 | 国产www视频 | 曰女同女同中文字幕 | 夜色视频网站 | 久久久久久蜜桃一区二区 | 黄wwwww| 久久久久久久福利 | 亚洲国产精一区二区三区性色 | 欧美自拍区 | 超碰成人在线免费观看 | 国产伊人精品 | 成人毛片18女人 | 极品探花在线 | 精品国产丝袜一区二区三区乱码 | www.成人在线视频 | 色小说在线观看 | 操极品少妇| 最近最新mv字幕观看 | 伊人草草 | 国产视频一区二区视频 | 国语一区二区 | 国产成人无码一区二区在线播放 | 免费精品视频一区二区三区 | 日韩三区四区 | 亚洲免费专区 | 国产在线观看免费视频软件 | 丁香婷婷九月 | 亚洲iv一区二区三区 | 日韩av高清在线播放 | 国产乱free国语对白 | 久久精品国产亚洲av嫖农村妇女 | 巨乳美女在线 | 性视频黄色 | 在线网站黄 | 国产91国语对白在线 | 成人免费视频观看 | 天天网综合| 我要看免费的毛片 | 免费av一区二区 | 成人av资源站 | 夜夜免费视频 | 尹人综合在线 | 精品免费久久久 | 日韩国产二区 | 中文字幕在线观看国产 | 久久国产精品波多野结衣av |