日韩性视频-久久久蜜桃-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的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 久久一区二区电影 | 91麻豆精品视频 | 男男啪啪无遮挡 | 成人另类小说 | 美女被啪啪 | 91av免费| 香蕉视频免费看 | 国产精品久久久久久久专区 | 少妇av| 国产在线拍揄自揄拍无码视频 | 国产成人午夜精品 | 少妇闺蜜换浪荡h肉辣文 | 99视频导航 | 极品少妇xxxx | 亚洲精品国产综合 | 亚洲AV无码乱码国产精品色欲 | 日韩h视频 | 日韩欧美少妇 | 久久久久久久女国产乱让韩 | 欧美成人生活片 | 狠狠爱亚洲 | 色秀av | 欧美大片免费在线观看 | 91av麻豆| 国产一二三 | 美女爆乳18禁www久久久久久 | 老司机在线免费视频 | 打屁股无遮挡网站 | 日韩成人精品一区二区三区 | 中国av在线播放 | 亚洲av午夜精品一区二区三区 | 精品少妇人妻av免费久久洗澡 | 中文字幕有码无码人妻av蜜桃 | 91桃色免费视频 | 国产天堂视频 | 久久国产精品久久国产精品 | 亚洲专区在线播放 | 精产国品一二三产品蜜桃 | 天天操天天干天天 | 天天操婷婷 | 开心激情网五月天 | 国产chinesehd精品 | 黄色国产| 亚洲手机视频 | 午夜亚洲aⅴ无码高潮片苍井空 | 好吊视频一区二区三区四区 | www.com污| 国产制服丝袜 | 亚洲精品~无码抽插 | 成人精品在线观看视频 | 在线免费观看黄网站 | 日韩视频成人 | 国产精品无码AV | 人妻与黑人一区二区三区 | 高潮一区二区三区 | 你懂的亚洲 | 久久蜜桃av | 麻豆传媒在线免费 | 一曲二曲三曲在线观看中文字幕动漫 | 在线成人| 国内精品免费 | 国产精品一区二区在线观看 | 欧美网站免费 | 高h放荡受浪受bl | 亚欧洲精品在线视频免费观看 | 国产鲁鲁视频在线观看特色 | 黄色免费在线视频 | 午夜香蕉网 | 高h奶汁双性受1v1 | 一级黄色片欧美 | 看个毛片 | 大学生三级中国dvd 日韩欧美一区二区区 | 亚洲精品911| 国产主播福利 | 国产精品19乱码一区二区三区 | 亚洲色偷偷综合亚洲av伊人 | 涩天堂 | 亚洲精品www久久久久久 | 久久久91视频 | 日韩一区二区在线视频 | 精品无人国产偷自产在线 | caopor在线| 国产精品久久久网站 | 91香蕉视频污污 | 亚洲香蕉| 亚洲精品一区二区三 | 免费高清视频在线观看 | 精品一区二区亚洲 | 欧美在线观看一区二区三区 | 麻豆系列| 一区二区三区免费播放 | 欧美日韩一二三区 | 欧美成人一区在线 | 成年黄色网 | 无码国模国产在线观看 | 亚洲激情区 | 不卡影院 | 打美女白嫩屁屁网站 | 五月婷婷激情五月 |