日韩性视频-久久久蜜桃-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衣东京热无码专区 | 久久久久久久 | 久久九九精品视频 | 国产夫妻在线 | 久久久久国产精品一区 | 91超碰在线播放 | 国产精品视频一区在线观看 | 美女爱爱视频 | 在线免费看黄色片 | 欧美精品乱码视频一二专区 | 日韩有码中文字幕在线观看 | 日本大尺度做爰呻吟 | 四虎av影视| 辟里啪啦国语版免费观看 | 欧美成人亚洲 | 免费av日韩 | 一区二区在线影院 | 国产免费无码一区二区视频 | 少妇又色又紧又黄又刺激免费 | 国产探花一区二区三区 | 日韩爱爱网| 国产精品亚洲一区 | 自拍偷拍第五页 | 99ri精品 | 和漂亮岳做爰3中文字幕 | 国产网红无码精品视频 | 欧美日韩欧美 | av青青| 亚洲美女高潮久久久 | 美女视频一区 | 午夜在线精品 | 四虎在线免费观看 | 亚洲国产精品天堂 | 性色av蜜臀av | 国产私拍 | 久伊人网| 成人免费黄色片 | 欧美日韩aa| 黑丝啪啪| 操碰av| 国产精品人人妻人人爽人人牛 | 激情综合网五月激情 | 亚洲h片| 一本—道久久a久久精品蜜桃 | 国产自产 | 秋霞7777鲁丝伊人久久影院 | 都市激情国产精品 | 亚洲少妇一区二区 | 成人国产一区 | 成人毛片视频免费看 | 久久一区二区三区四区 | 日韩精品一区二区三 | 午夜视频在线观看一区 | 波多野结衣一区二区三区在线观看 | 五月天中文字幕 | 亚洲国产福利 | 国产精品入口66mio | 久一在线视频 | 大尺度叫床戏做爰视频 | 青青草原综合网 | 色爽交| 精品一区二区三区四区五区六区 | 少妇av导航| 色噜噜一区二区三区 | 欧美xxxx83d| 成人黄色短片 | 成人精品一区二区三区四区 | 色狠狠一区二区三区 | 亚洲精品另类 | 噼里啪啦动漫高清在线观看 | 动漫涩涩免费网站在线看 | av中字| 免费av视屏 | 五月婷婷久久综合 | 三级亚洲| 亚洲成人高清 | 一本大道久久a久久精二百 琪琪色在线视频 | 插插宗合网 | 一本一道久久综合狠狠老精东影业 | 亚洲二区一区 | 动漫av在线免费观看 | 欧美日韩高清一区二区三区 | av爱爱网站 | 色眯眯影视 | 国产视频麻豆 | xxxxx黄色 | 91蜜桃| www.亚洲一区二区 | 黄色三极片 | 亚洲天堂视频网 | 久久午夜夜伦鲁鲁片无码免费 | 无码人妻aⅴ一区二区三区 国产高清一区二区三区四区 | 一区二区三区视频免费看 | 久草a视频| 欧美人体做爰大胆视频 | 亚洲色图国产精品 | 天天看天天操 | 国产大学生自拍视频 | 国产亚洲精品久久久久久777 |