微信小程序最近比較熱門道伟,再加上自然語義理解也越來越被人關(guān)注帚豪,于是我想趕趕潮流,做一個(gè)小程序試試空另。想來想去快遞查詢應(yīng)該是一種比較普遍的需求。
如果你也在通過自然語言接口做點(diǎn)什么蹋砚,希望我的這篇博客能幫到你扼菠。感興趣的朋友可以加入互通有無摄杂。或者你也可以直接下載代碼試一試循榆。
----------代碼下載:-------------
----------------功能介紹: 我的小程序名字叫“智能生活寶”------------------------
1. 通過自然語言對(duì)話查詢
現(xiàn)在在微信里析恢,如果你參加一個(gè)什么活動(dòng),一般都是在輸入框里寫上關(guān)鍵字或者數(shù)字秧饮,這樣才能獲取你所需要的服務(wù)映挂。而通過自然語言接口,可以讓用戶像跟人對(duì)話一樣和你的小程序?qū)υ捚珠埂1热纾?/p>
我要查快遞袖肥,幫我查一下快遞咪辱,查快遞122343振劳,甚至直接輸入快遞運(yùn)單號(hào),小程序就能做出相應(yīng)的回應(yīng)油狂。
2. 多功能查詢
目前支持快遞查詢历恐,聊天,日歷查詢专筷,菜譜查詢弱贼,講笑話,講故事磷蛹,計(jì)算吮旅,算24點(diǎn)功能。
原本我只是準(zhǔn)備支持快遞查詢功能味咳,后來發(fā)現(xiàn)OLAMI開放平臺(tái)有許多內(nèi)置的模塊庇勃,于是也順便添加了一下。
----------------功能展示:------------------------------------------------------------------------
1. 快遞查詢頁面如下圖所示槽驶,只要在下方的輸入框中輸入查詢句子责嚷,就會(huì)在text控件中返回結(jié)果。
也可以點(diǎn)擊“例句”按鈕和“更換例句”按鈕體驗(yàn)一下掂铐。
2. ?點(diǎn)擊例句后的效果圖罕拂,觸摸例句就會(huì)在text控件中看到效果。
3. ?輸入語句: “查詢中通快遞765325527325”
4. ?點(diǎn)擊更換例句按鈕可以更換例句
5. ? 其他模塊體驗(yàn)
點(diǎn)擊左下角的切換按鈕全陨,會(huì)發(fā)現(xiàn)右下角的查快遞變成了“聊天”
爆班。
6. ?點(diǎn)擊“例句”按鈕,這時(shí)候例句里就是其他模塊的例句了辱姨。
7. ?同樣可以通過“更換例句”按鈕進(jìn)行例句更換
8. ?查日期
9. 講笑話
10. ?查菜譜
----------------開發(fā)步驟----------------------------------------
1. ?微信小程序相關(guān)
首先要申請(qǐng)一個(gè)微信小程序公眾號(hào)柿菩,注意不是微信公眾號(hào),然后仔細(xì)閱讀小程序的框架和功能介紹炮叶。有些JS的功能小程序里是不能用的碗旅。我之前也沒有做過JS渡处,但上起手來感覺還是很快的,幾乎沒有太多阻礙祟辟。網(wǎng)上有很多教程医瘫,我就不多說了。
網(wǎng)址:微信小程序開發(fā)文檔
2. 快遞查詢的API接口
注意尋找合適的API接口時(shí)旧困,要選用支持https的訪問接口醇份,微信小程序目前僅支持https的訪問。
我選用的是快遞鳥快遞API里面的即使查詢API吼具,因?yàn)槊赓M(fèi)嘛僚纷,呵呵。而且每天可以訪問3000次拗盒,足夠了怖竭。你需要自己注冊(cè),獲取自己的API key和商戶ID陡蝇。
注意:注冊(cè)之后痊臭,需要在自己的賬號(hào)界面申請(qǐng)對(duì)應(yīng)的API接口才能使用,免費(fèi)的也要申請(qǐng)登夫。如下圖所示:
3. ?歐拉蜜(OLAMI)人工智能開發(fā)平臺(tái)
這個(gè)非常重要广匙,決定了你能支持多少種模塊,多少種句子恼策。畢竟這種接口看起來還是很復(fù)雜的鸦致,總結(jié)一下我的心得:
* ?寫語法
在使用自然語言語義API之前,首先得寫語法涣楷,仔細(xì)閱讀語法文檔分唾,這個(gè)很重要。當(dāng)然你也可以登錄進(jìn)去总棵,看看平臺(tái)內(nèi)置的語法是否符合你的要求鳍寂,如果只是為了測(cè)試,完全可以先導(dǎo)入一個(gè)內(nèi)置的模塊試試情龄。點(diǎn)擊下圖中的“進(jìn)入NLI系統(tǒng)”迄汛。
進(jìn)入NLI系統(tǒng)之后,點(diǎn)擊“導(dǎo)入”按鈕骤视,既可以看到內(nèi)置模塊鞍爱,選中添加即可,如下圖所示专酗。每個(gè)模塊的作用可以在NLI 自然語言語義互動(dòng)系統(tǒng) / 內(nèi)置模塊列表看到詳細(xì)描述睹逃。
下圖中是我的NLI系統(tǒng),里面有我自己寫的快遞模塊"expressage"和添加了內(nèi)置模塊"music".
2...創(chuàng)建應(yīng)用,配置模塊
寫好語法并發(fā)布之后后沉填,就可以創(chuàng)建自己的應(yīng)用了疗隶,并在應(yīng)用里添加模塊即可。我在配置模塊的過程中翼闹,發(fā)現(xiàn)OLAMI有內(nèi)置的模塊可以使用斑鼻,于是我創(chuàng)建了兩個(gè)應(yīng)用,一個(gè)叫查詢工具猎荠,用來專門查詢快遞坚弱;另一個(gè)叫工具,選了內(nèi)置的模塊关摇。
為什么我沒有將這些應(yīng)用放在一起呢荒叶?因?yàn)槲业目爝f模塊語法中有一個(gè)會(huì)抓整個(gè)句子,導(dǎo)致內(nèi)置模塊無法正常工作输虱。
你如果想驗(yàn)證自己的功能是否可用些楣,可以點(diǎn)“測(cè)試”按鈕測(cè)試一下看看。
快遞應(yīng)用配置:
其他查詢應(yīng)用配置(這個(gè)語法完全不用自己寫悼瓮,還有對(duì)應(yīng)的輸出結(jié)果戈毒,很好用):
應(yīng)用創(chuàng)建好之后,你就可以查看OLAMI分配給你的Key信息横堡,這可是訪問API接口的必備信息。
3. ?訪問API
如果你在你的應(yīng)用中測(cè)試結(jié)果很滿意冠桃,也就是你要捕獲的句子都支持命贴,那么就可以嘗試調(diào)用API了。然后分析API的結(jié)果食听,做出對(duì)應(yīng)的回應(yīng)胸蛛。
比如我的快遞查詢APP的語法通過modifier支持的四種功能,如下表所示:
modifier含義
modifier
含義
例句
query輸入的句子只是說要查快遞樱报,沒有提供快遞公司名稱和運(yùn)單號(hào)我要查快遞
查一下快
幫我查查快遞唄
query_num輸入的句子中提供了運(yùn)單號(hào)12112311111
查一下運(yùn)單號(hào)是123423的快遞
query_name輸入的句子中提供了快遞公司名稱我想查圓通快
看一下申通快遞
query_name_num輸入的句子中提供了運(yùn)單編號(hào)和快遞公司名稱查申通快遞1122333
我的語法中僅涉及了兩個(gè)關(guān)鍵信息葬项,即兩個(gè)slot,“expnumber”抓取快遞單號(hào),'expname'用來抓取快遞公司的名稱。
因此當(dāng)OLAMI 的API接口返回語法信息之后迹蛤,我只需要根據(jù)modifier的值就可以做出對(duì)應(yīng)的操作民珍,而使用slot的值去快遞鳥的API接口查詢快遞信息。
我的快遞APP功能邏輯如下:
* 如果僅提供運(yùn)單號(hào)盗飒,則先用運(yùn)單號(hào)查詢快遞公司編號(hào)嚷量,如果快遞公司編號(hào)有一個(gè),則直接用運(yùn)單號(hào)和公司編號(hào)查物流信息逆趣。
如果有多個(gè)蝶溶,則請(qǐng)用戶選擇快遞公司。
* 如果提供運(yùn)單號(hào)和快遞公司宣渗,則直接調(diào)用運(yùn)單號(hào)+快遞code接口查詢抖所。
* 如果僅提供快遞公司名稱梨州,則記錄并查詢對(duì)應(yīng)快遞公司code,并請(qǐng)用戶提供運(yùn)單編號(hào)。
其他的查詢功能田轧,因?yàn)橛玫氖莾?nèi)置模塊摊唇,直接就有回復(fù),不需要我再去調(diào)用其他接口涯鲁,直接顯示即可巷查,很有意思。
----------代碼下載:-------------