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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

带有Oracle Digital Assistant和Fn Project的会话式UI

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

在這里和那里,我們看到許多預測,很快聊天機器人將在用戶與其系統之間的通信中扮演關鍵角色。 我沒有水晶球,也不想等待這個“很快”,所以我決定現在就使這些預言成真,看看它的樣子。

我正在工作的公司的標志產品是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與custombotcomponent的Fn功能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的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 免费在线观看黄色av | 天天干在线播放 | 高清二区 | av影视在线观看 | 韩国电影一区 | 亚洲天堂网一区二区 | 免费成人看片 | 日本男男激情gay办公室 | 欧美xxxx83d | 黄色片在线视频 | 男人天堂成人网 | 9人人澡人人爽人人精品 | 红桃视频网站 | 国产高潮流白浆喷水视频 | 黄色网页免费观看 | 全部毛片永久免费看 | 欧美一级做性受免费大片免费 | 免费三级网| 亚洲中文字幕无码一区二区三区 | 香蕉视频一级 | 国产伦精品一区二区三区四区 | 国产a级淫片 | 日本一区二区三区久久 | 一级黄色片大全 | 在线欧美日韩国产 | 久草剧场| 亚洲综合色网 | 国产免费999| 综合久久99 | 亚洲人 女学生 打屁股 得到 | 日韩久久精品 | 成人妇女淫片aaaa视频 | 国产精品入口麻豆九色 | 亚洲自拍成人 | 国产精品国产三级国产播12软件 | 日韩美女激情视频 | 色爱视频 | 麻豆免费在线 | 亚洲精品综合久久 | 色亚洲天堂 | 人人插人人草 | 久久人妻少妇嫩草av | 真实乱偷全部视频 | www.蜜桃av.com | 成人亚洲精品 | 国产人妖一区二区三区 | 免费午夜激情 | 欧美 中文字幕 | 人人干人人爽 | 四虎色播 | 日韩中文字幕av在线 | 国产欧美精品一区二区在线播放 | 丰满少妇被猛烈进入一区二区 | 一级做a免费 | 国产伦理一区二区 | 久久天 | 亚洲视频一区在线观看 | 欧美日韩国产一区二区三区 | 自拍偷拍第1页 | 久久久久久欧美精品se一二三四 | av999| 欧美啪啪一区二区 | 欧美日韩视频一区二区三区 | 国产福利一区二区三区在线观看 | 在线a天堂 | 成人综合网站 | 草草在线观看视频 | 国产精品16p | 久久99影院 | 国产suv精品一区二区68 | 成年人在线免费看 | 国产精品亚洲第一 | 夜夜嗨av一区二区 | 欧美亚洲国产日韩 | 三上悠亚在线观看一区二区 | www 在线观看视频 | 久伊人 | 欧美色图亚洲自拍 | 高清国产午夜精品久久久久久 | 激情视频免费观看 | 艳妇臀荡乳欲伦交换h漫 | 欧美丰满熟妇bbb久久久 | 亚洲精品日韩丝袜精品 | 国产日韩精品一区二区三区在线 | 大陆av在线播放 | 中国av在线 | 国产又粗又长视频 | 麻豆传媒网址 | 欧美日韩综合网 | 绿帽人妻精品一区二区 | 男人天堂一区二区 | 久久精品国产亚洲AV黑人 | 亚洲精品动漫在线观看 | 亚洲人成无码网站久久99热国产 | 国产精品久久久久野外 | 亚洲欧美另类激情 | 美丽姑娘免费观看在线观看 | 黑丝av在线 | 丁香一区二区 |