自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一個(gè)安卓App,如何成為DuerOS 上的技能應(yīng)用呢?

開發(fā) 開發(fā)工具
我們經(jīng)常談到的移動(dòng)互聯(lián)網(wǎng)是與智能手機(jī)密不可分的,iPhone 這樣的智能手機(jī)改變了人們使用手機(jī)的交互方式——由功能機(jī)(feature phone)的按鍵式交互變成了觸控式交互。

我們經(jīng)常談到的移動(dòng)互聯(lián)網(wǎng)是與智能手機(jī)密不可分的,iPhone 這樣的智能手機(jī)改變了人們使用手機(jī)的交互方式——由功能機(jī)(feature phone)的按鍵式交互變成了觸控式交互。

[[336013]]

 

Android 和 iOS 成為了移動(dòng)互聯(lián)網(wǎng)上的兩大主流開發(fā)環(huán)境,大多數(shù)的開發(fā)者和企業(yè)都有著自己的Android App,那么,如何讓這些安卓App 成為DuerOS 上支持語音交互的多模態(tài)技能呢?

DBP 上的 App 技能

App技能同樣是一種DBP的自定義技能,與其他自定義技能的區(qū)別在于需要開發(fā)者開發(fā)或調(diào)整自己的安卓App。DBP 平臺(tái)上 APP技能的推出使得Android App 可以很快地成為DuerOS 設(shè)備上的技能,使安卓系統(tǒng)的App生態(tài)能夠與DuerOS的技能生態(tài)水乳交融,為用戶帶來更多的價(jià)值。

[[336014]]

正像老碼農(nóng)在以往技術(shù)大會(huì)上所講的那樣,APP技能的接入和DBP自定義技能的開發(fā)類似,同樣遵循六個(gè)步驟:

 

  • 開發(fā)者認(rèn)證
  • 技能創(chuàng)建
  • 技能開發(fā)
  • 技能調(diào)試
  • 技能審核
  • 技能上線

目前,DBP 平臺(tái)推出的App技能作為Preview feature 開放給廣大企業(yè)開發(fā)者,遵循預(yù)覽版的相關(guān)審核和流程規(guī)范。

1. 開發(fā)者認(rèn)證

開發(fā)者需要在DBP平臺(tái)上傳身份證、個(gè)人郵箱、手機(jī)號等信息,通過審核后成為認(rèn)證開發(fā)者。目前DBP 平臺(tái)采用了百度AI的證照自動(dòng)識(shí)別技術(shù),可以實(shí)現(xiàn)分鐘級的身份認(rèn)證,使開發(fā)者能夠迅速成為DuerOS 的認(rèn)證開發(fā)者。當(dāng)然,非認(rèn)證開發(fā)者同樣可以創(chuàng)建并調(diào)試自定義技能,但只有認(rèn)證開發(fā)者才能完成技能的上線。

對應(yīng)企業(yè)開發(fā)者而言,還要上傳企業(yè)的營業(yè)執(zhí)照掃描件,通過審核后成為認(rèn)證開發(fā)者。

需要注意的是,當(dāng)前,DBP平臺(tái)APP 技能的開發(fā)只對認(rèn)證的企業(yè)開發(fā)者開放。

 

2. APP技能創(chuàng)建

APP 技能目前作為Preview feature 開放,開發(fā)者在創(chuàng)建APP 技能的時(shí)候首先要閱讀并確認(rèn)《DBP應(yīng)用開發(fā)者協(xié)議》。

然后,填寫技能名稱等相關(guān)信息,提交后,等候Preivew 的審核。

在Preview 審核通過后,即表示APP 技能創(chuàng)建完成,可以對技能的意圖/槽位/詞典等進(jìn)行配置操作了,詳情參見《感知自然語言理解(NLU)》。

 

3. APP技能的開發(fā)

APP 技能開發(fā)包括兩部分:技能(bot) 服務(wù)的開發(fā)和 APP 客戶端的開發(fā)。

3.1 技能服務(wù)的開發(fā)

APP 技能的bot 服務(wù)開發(fā)與DBP 上其他自定義技能的開發(fā)類似,尤其與交互模型的建立,關(guān)于意圖、槽位、詞典、常用表達(dá)等參考《技能交互模型》。

目前,多數(shù)APP 技能都采用了DBP 平臺(tái)的代理服務(wù)AVC(App Voice Control),這樣無需獨(dú)立部署服務(wù)器即可使用語音交互的能力。簡單地說, 設(shè)計(jì)并填寫完交互模型,就可以認(rèn)為是開發(fā)完成了。AVC 將語音交互的結(jié)果以結(jié)構(gòu)化數(shù)據(jù)返回給APP 客戶端,由客戶端完成對應(yīng)的操作。

對于復(fù)雜交互的APP 技能而言,同樣可以部署自己的物理bot,在自己的技能服務(wù)中實(shí)現(xiàn)更復(fù)雜的邏輯。

3.2 APP 客戶端的開發(fā)

針對語音交互的復(fù)雜程度,APP 客戶端的開發(fā)可以分為4個(gè)等級:

  • L1: 只支持打開/退出的語音指令
  • L2: 支持有限的語音指令
  • L3: 支持多種意圖\槽位\詞典\常用表達(dá)的語音指令
  • L4: 支持用戶話術(shù)的內(nèi)容直達(dá)以及使用自己的物理bot處理更復(fù)雜的語音指令

從客戶端的維度看,可以分為集成Bot App SDK 的APP 技能和未集成Bot App SDK 的APP 技能。L1等級的APP技能沒有集成Bot APP SDK,L2/L3/L3等級的APP技能集成了Bot APP SDK。

3.2.1 L1 APP 技能的開發(fā)

在DBP 平臺(tái)的控制臺(tái),依次選擇 【創(chuàng)建技能】->【自定義技能】->【Android App 技能】, 填寫技能名稱和APP 包名,如圖所示:

 

一步完成,待開發(fā)者App自身完成開發(fā)后,即可進(jìn)入L1 APP 技能的調(diào)試階段。

3.2.2 L2 APP 技能的開發(fā)

L2 技能使用了本地自定義交互模型,意思就是用戶語音指令和意圖匹配關(guān)系,定義在本地代碼中。

參考示例代碼(https://github.com/dueros/AndroidBotSdkDemo)將Bot App SDK 集成到開發(fā)者的APP 技能中。

開發(fā)者只需要參考代碼組裝UIContextPayload對象,就可以完成本地自定義交互模型的構(gòu)建,示例代碼如下:

  1. // 1.創(chuàng)建UIContextPayload對象開始組裝 
  2.        UiContextPayload payload = new UiContextPayload(); 
  3.        // 2.定義用戶語音意圖集合(盡可能豐富的收集用戶表達(dá),常用同音異字表達(dá)都加上,比如“登錄”&“登陸”) 
  4.        String[] loginWords = {"開始","點(diǎn)擊開始","開始游戲","啟動(dòng)游戲","進(jìn)行游戲"}; 
  5.        // 3.可以定義支持的話術(shù) 
  6.        payload.addHyperUtterance(“sdkdemo://startGame”, Arrays.asList(loginWords), nullnull); 
  7.        // 重復(fù)步驟2.3 可以添加多個(gè)交互組件。比如開始,退出,登錄,注冊...... 
  8.        BotSdk.getInstance().updateUiContext(payload); 

用戶的語音表達(dá),命中自定義交互組件中定義的具體話術(shù)后,云端匹配成功,并封裝url為ClickLink指令下發(fā)到設(shè)備端。設(shè)備端收到ClickLink指令,通過回調(diào)方法onClickLink,把匹配結(jié)果分發(fā)給App,示例代碼如下:

  1. /** 
  2.  * 云端返回的UIContext匹配結(jié)果 
  3.  * @param url 自定義交互描述中的url 
  4.  * @param paramMap 對于系統(tǒng)內(nèi)建類型,參數(shù)列表。參數(shù)就是從query中通過分詞取得的關(guān)鍵詞。這個(gè)參數(shù)配合type,params字段使用 
  5.  */ 
  6.     @Override 
  7.     public void onClickLink(String url, HashMap<String, String> paramMap) { 
  8.         if ("sdkdemo://startGame".equals(url)) { 
  9.             //TODO 執(zhí)行開始游戲邏輯,比如是startGameBtn.performClick() 
  10.         } 
  11.     } 

開發(fā)者完成Android App開發(fā)后,即可進(jìn)入L1 APP 技能的調(diào)試階段。

3.2.3 L3 APP 技能的開發(fā)

L3技能使用了DBP 平臺(tái)的自定義交互模型,關(guān)于如何構(gòu)建交互模型,可以參考《技能交互模型》。

參考示例代碼(https://github.com/dueros/AndroidBotSdkDemo)將Bot App SDK 集成到開發(fā)者的APP 技能中。

在客戶端APP 中, 會(huì)通過Bot App SDK的 回調(diào)方法handleIntent在App中處理意圖的內(nèi)容,示例代碼如下:

  1. /*** 
  2.  * 云端意圖返回結(jié)果 
  3.  * @param intent 意圖內(nèi)容,參考{@link BotIntent} 包含意圖名稱和槽位參數(shù)結(jié)構(gòu)如下 
  4.  * {@link BotIntent#name} 意圖名稱,對應(yīng)于云端創(chuàng)建意圖的 意圖標(biāo)識(shí)名 
  5.  * {@link BotIntent#slots} 槽位列表 對應(yīng)于云端創(chuàng)建意圖的 槽位信息,數(shù)量(0~n) 
  6.  * 槽位信息結(jié)構(gòu)如下: 
  7.  * {@link com.baidu.duer.botsdk.BotIntent.Slot#name} 槽位名稱 
  8.  * {@link com.baidu.duer.botsdk.BotIntent.Slot#value} 槽位值 
  9.  * @param customData 自定義數(shù)據(jù),暫時(shí)不用 
  10.  */ 
  11.     @Override 
  12.     public void handleIntent(BotIntent intent, String customData) { 
  13.  
  14.         String intentResult = "\n指令名稱:%s\n槽位信息:%s"
  15.         Log.i("HandleIntentTAG""intent result:" + intentResult); 
  16.         if ("queryWeather".equals(intent.name)) { 
  17.             String loactionOfWeather; 
  18.             if (intent.slots != null) { 
  19.                 for (BotIntent.Slot slot : intent.slots) { 
  20.                     // 遍歷槽位列表,找到需要的槽位值 
  21.                     if ("sys.city".equals(slot.name)) { 
  22.                         loactionOfWeather = slot.value; 
  23.                     } 
  24.                 } 
  25.             } 
  26.             // TODO 使用localtionOfWeather 參數(shù)查詢天氣 
  27.         } 

開發(fā)者完成Android App開發(fā)后,即可進(jìn)入L3 APP 技能的調(diào)試階段。

3.2.4 L4 APP 技能的開發(fā)

L4 的APP 技能還在內(nèi)測階段,需要聯(lián)系DBP 的產(chǎn)品經(jīng)理進(jìn)行完整的接入流程。

 

4. APP技能調(diào)試

目前,APP 技能還處于Preview feature 階段,因此只能在真機(jī)上進(jìn)行技能調(diào)試。

4.1 真機(jī)調(diào)試開發(fā)環(huán)境的安裝

創(chuàng)建好APP技能后,點(diǎn)擊【測試驗(yàn)證】 → 點(diǎn)擊【真機(jī)測試】→ 點(diǎn)擊【新增設(shè)備SN】,添加自己的小度設(shè)備SN。

 

開發(fā)者在配置好設(shè)備SN之后,可以對真機(jī)設(shè)備說,“小度小度,打開技能開發(fā)助手”,在技能的菜單中選擇【升級為開發(fā)版ROM】,根據(jù)語音提示進(jìn)行后續(xù)操作即可。

注意:如果以上操作都完成還是提示申請升級失敗,請確認(rèn)設(shè)備上的賬號和DBP平臺(tái)登錄的賬號是否一致,要確保使用相同的賬號。

4.2 真機(jī)調(diào)試密鑰的獲取和使用

在開發(fā)環(huán)境安裝成功之后, 需要下載開發(fā)環(huán)境的密鑰本地。

 

真機(jī)調(diào)試密鑰的使用方法如下:

1)替換到設(shè)備本地的 ~/.android 目錄中

2)執(zhí)行命令重啟adb:

adb kill-server

adb start-server

4.3 在真機(jī)上安裝目標(biāo)應(yīng)用

在真機(jī)的調(diào)試環(huán)境和調(diào)試密鑰都安裝成功后, 就可以使用 adb 命令安裝目標(biāo)APP了。

4.4 在技能Debug 模式下進(jìn)行調(diào)試

在保持開發(fā)者賬號和小度設(shè)備賬號一致的前提下,開啟技能調(diào)試模式的按鈕,對設(shè)備說,“開啟技能調(diào)試”。

在技能調(diào)試模式下, 開發(fā)者就可以使用語音交互來調(diào)試APP 技能了。

 

5. APP 技能審核

為了確保用戶體驗(yàn),APP 技能需要通過嚴(yán)格審核才能發(fā)布上線。

5.1 技能審核的一般規(guī)則

APP 技能申請上線的方式與一般的自定義技能類似,具體可以參考《技能發(fā)布》。

APP 技能與一般的自定義技能區(qū)別在于要明確客戶端APP 的版本號(形如a.b.c.d),并上傳APP 的客戶端包。

5.2 APP技能審核的特殊性

APP 技能的審核遵從DuerOS 技能審核的一般原則,包括技能元數(shù)據(jù)審核,功能性測試和技能交互信息測試等,具體可以參考《技能審核規(guī)范》。

5.3 開發(fā)者申請上線審核

APP 技能的審核還包括了客戶端的安全檢查和性能壓測等驗(yàn)證方式。

同時(shí),APP 還涉及權(quán)限申請,例如camera、錄音、手勢等,在審核的時(shí)候會(huì)分別給予確認(rèn)。

5.4 開發(fā)者對審核結(jié)果的解讀

開發(fā)者在【發(fā)布管理】->【版本管理】中可以看到審核的結(jié)果,如果沒有通過審核的話,可以查看失敗的原因。

 

另外,開發(fā)者也可以在【個(gè)人中心】->【消息中心】中查看審核的相關(guān)信息。

 

6. APP 技能上線與升級

技能審核通過后,即處于上線狀態(tài),全網(wǎng)上線在2個(gè)工作日內(nèi)完成。

6.1 首次上線

APP 技能在首次上線的時(shí)候,需要上傳客戶端的APP包,并明確APP技能的客戶端版本(形如a.b.c.d), 并明確技能交互的模型的版本,這對APP技能的后續(xù)升級至關(guān)重要。

6.2 APP 技能升級

APP 技能升級一般包括3種情況:

  • 只升級APP 客戶端
  • 只升級技能交互模型
  • 既升級APP 客戶端又升級技能交互模型

6.2.1 只升級APP 客戶端

如果只是客戶端APP的升級,需要重新上傳APP包,更新版本號,即可申請上線審核。

6.2.2 只升級技能交互模型

如果只升級交互模型,無需重新上傳APP包,只需要更新交互模型的版本號,即可申請上線審核。

6.2.3 既升級APP 客戶端又升級技能交互模型

對于升級APP 客戶端又升級技能交互模型的情形,需要對APP客戶端的版本號和交互模型的版本號,同時(shí)上傳更新的APP包,形同初次上線。

 

小結(jié)

綜上所述,App 技能的接入與開發(fā)流程同樣分為6個(gè)階段,開發(fā)者認(rèn)證->技能創(chuàng)建->代碼開發(fā)->技能調(diào)試->技能審核->上線商用。如果開發(fā)者的Android App 自身沒有什么問題的話(例如,安全問題,內(nèi)測泄露等等),一般可以在3~5天內(nèi)完成App技能的上線,進(jìn)而使開發(fā)者的App迅速地使用DuerOS 的多模態(tài)交互能力, 在數(shù)千萬DuerOS 設(shè)備上為廣大用戶帶來更豐富的用戶體驗(yàn)。

【參考資料】

https://dueros.baidu.com/dbp

 

https://dueros.baidu.com/didp/doc/dueros-bot-platform/dbp-apk-skill/appskilldevelopment_markdown

 

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2021-01-27 12:02:50

AndroidDuerOS調(diào)試

2019-11-22 09:05:20

DuerOS編程語音

2017-02-24 10:30:51

iOS開源App Store

2021-03-11 21:53:09

區(qū)塊鏈區(qū)塊鏈技術(shù)

2024-05-20 01:10:00

Promise變量

2015-05-13 14:06:03

程序員糟糕的程序員

2019-03-08 14:40:00

接口協(xié)議DuerOS

2015-08-27 10:19:04

2014-07-02 10:03:42

App推廣渠道

2015-07-28 14:35:40

2015-06-25 09:32:55

JavaScript程序員

2015-06-25 19:23:03

JavaScript程序員

2009-07-02 09:42:34

JSP程序員

2015-06-25 09:53:13

JavaScript程序員

2010-12-27 09:24:45

JSP程序員

2015-08-17 10:32:06

前端工程師優(yōu)秀

2011-06-13 20:44:06

SEO

2015-08-24 09:02:49

前端工程師

2021-10-06 10:00:57

微軟Windows 11Windows

2021-06-17 14:28:41

蘋果 安卓系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號