微信小程序最近比較熱門,再加上自然語義理解也越來越被人關(guān)注,于是我想趕趕潮流,做一個(gè)小程序試試。想來想去快遞查詢應(yīng)該是一種比較普遍的需求。
如果你也在通過自然語言接口做點(diǎn)什么,希望我的這篇博客能幫到你。感興趣的朋友可以加入互通有無?;蛘吣阋部梢灾苯酉螺d代碼試一試。
----------代碼下載:-------------
----------------功能介紹: 我的小程序名字叫“智能生活寶”------------------------
1. 通過自然語言對(duì)話查詢
現(xiàn)在在微信里,如果你參加一個(gè)什么活動(dòng),一般都是在輸入框里寫上關(guān)鍵字或者數(shù)字,這樣才能獲取你所需要的服務(wù)。而通過自然語言接口,可以讓用戶像跟人對(duì)話一樣和你的小程序?qū)υ?。比如?/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 |
含義 |
例句 |
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)用其他接口,直接顯示即可,很有意思。
----------代碼下載:-------------
工作日 8:30-12:00 14:30-18:00
周六及部分節(jié)假日提供值班服務(wù)