微信小程序最近比較熱門,再加上自然語義理解也越來越被人關注,于是我想趕趕潮流,做一個小程序試試。想來想去快遞查詢應該是一種比較普遍的需求。
如果你也在通過自然語言接口做點什么,希望我的這篇博客能幫到你。感興趣的朋友可以加入互通有無?;蛘吣阋部梢灾苯酉螺d代碼試一試。
----------代碼下載:-------------
----------------功能介紹: 我的小程序名字叫“智能生活寶”------------------------
1. 通過自然語言對話查詢
現(xiàn)在在微信里,如果你參加一個什么活動,一般都是在輸入框里寫上關鍵字或者數(shù)字,這樣才能獲取你所需要的服務。而通過自然語言接口,可以讓用戶像跟人對話一樣和你的小程序?qū)υ?。比如?/p>
我要查快遞,幫我查一下快遞,查快遞122343,甚至直接輸入快遞運單號,小程序就能做出相應的回應。
2. 多功能查詢
目前支持快遞查詢,聊天,日歷查詢,菜譜查詢,講笑話,講故事,計算,算24點功能。
原本我只是準備支持快遞查詢功能,后來發(fā)現(xiàn)OLAMI開放平臺有許多內(nèi)置的模塊,于是也順便添加了一下。
----------------功能展示:------------------------------------------------------------------------
1. 快遞查詢頁面如下圖所示,只要在下方的輸入框中輸入查詢句子,就會在text控件中返回結果。
也可以點擊“例句”按鈕和“更換例句”按鈕體驗一下。
2. 點擊例句后的效果圖,觸摸例句就會在text控件中看到效果。
3. 輸入語句: “查詢中通快遞765325527325”
4. 點擊更換例句按鈕可以更換例句
5. 其他模塊體驗
點擊左下角的切換按鈕,會發(fā)現(xiàn)右下角的查快遞變成了“聊天”
。
6. 點擊“例句”按鈕,這時候例句里就是其他模塊的例句了。
7. 同樣可以通過“更換例句”按鈕進行例句更換
8. 查日期
9. 講笑話
10. 查菜譜
----------------開發(fā)步驟----------------------------------------
1. 微信小程序相關
首先要申請一個微信小程序公眾號,注意不是微信公眾號,然后仔細閱讀小程序的框架和功能介紹。有些JS的功能小程序里是不能用的。我之前也沒有做過JS,但上起手來感覺還是很快的,幾乎沒有太多阻礙。網(wǎng)上有很多教程,我就不多說了。
網(wǎng)址: 微信小程序開發(fā)文檔
2. 快遞查詢的API接口
注意尋找合適的API接口時,要選用支持https的訪問接口,微信小程序目前僅支持https的訪問。
我選用的是快遞鳥快遞API里面的即使查詢API,因為免費嘛,呵呵。而且每天可以訪問3000次,足夠了。你需要自己注冊,獲取自己的API key和商戶ID。
注意:注冊之后,需要在自己的賬號界面申請對應的API接口才能使用,免費的也要申請。如下圖所示:
3. 歐拉蜜(OLAMI)人工智能開發(fā)平臺
這個非常重要,決定了你能支持多少種模塊,多少種句子。畢竟這種接口看起來還是很復雜的,總結一下我的心得:
* 寫語法
在使用自然語言語義API之前,首先得寫語法,仔細閱讀語法文檔,這個很重要。當然你也可以登錄進去,看看平臺內(nèi)置的語法是否符合你的要求,如果只是為了測試,完全可以先導入一個內(nèi)置的模塊試試。點擊下圖中的“進入NLI系統(tǒng)”。
進入NLI系統(tǒng)之后,點擊“導入”按鈕,既可以看到內(nèi)置模塊,選中添加即可,如下圖所示。每個模塊的作用可以在NLI 自然語言語義互動系統(tǒng) / 內(nèi)置模塊列表看到詳細描述。
下圖中是我的NLI系統(tǒng),里面有我自己寫的快遞模塊"expressage"和添加了內(nèi)置模塊"music".
2...創(chuàng)建應用,配置模塊
寫好語法并發(fā)布之后后,就可以創(chuàng)建自己的應用了,并在應用里添加模塊即可。我在配置模塊的過程中,發(fā)現(xiàn)OLAMI有內(nèi)置的模塊可以使用,于是我創(chuàng)建了兩個應用,一個叫查詢工具,用來專門查詢快遞;另一個叫工具,選了內(nèi)置的模塊。
為什么我沒有將這些應用放在一起呢?因為我的快遞模塊語法中有一個會抓整個句子,導致內(nèi)置模塊無法正常工作。
你如果想驗證自己的功能是否可用,可以點“測試”按鈕測試一下看看。
快遞應用配置:
其他查詢應用配置(這個語法完全不用自己寫,還有對應的輸出結果,很好用):
應用創(chuàng)建好之后,你就可以查看OLAMI分配給你的Key信息,這可是訪問API接口的必備信息。
3. 訪問API
如果你在你的應用中測試結果很滿意,也就是你要捕獲的句子都支持,那么就可以嘗試調(diào)用API了。然后分析API的結果,做出對應的回應。
比如我的快遞查詢APP的語法通過modifier支持的四種功能,如下表所示:
modifier |
含義 |
例句 |
query | 輸入的句子只是說要查快遞,沒有提供快遞公司名稱和運單號 |
我要查快遞 查一下快 幫我查查快遞唄 |
query_num | 輸入的句子中提供了運單號 |
12112311111 查一下運單號是123423的快遞 |
query_name | 輸入的句子中提供了快遞公司名稱 |
我想查圓通快 看一下申通快遞 |
query_name_num | 輸入的句子中提供了運單編號和快遞公司名稱 | 查申通快遞1122333 |
我的語法中僅涉及了兩個關鍵信息,即兩個slot,“expnumber”抓取快遞單號,'expname'用來抓取快遞公司的名稱。
因此當OLAMI 的API接口返回語法信息之后,我只需要根據(jù)modifier的值就可以做出對應的操作,而使用slot的值去快遞鳥的API接口查詢快遞信息。
我的快遞APP功能邏輯如下:
* 如果僅提供運單號,則先用運單號查詢快遞公司編號,如果快遞公司編號有一個,則直接用運單號和公司編號查物流信息。
如果有多個,則請用戶選擇快遞公司。
* 如果提供運單號和快遞公司,則直接調(diào)用運單號+快遞code接口查詢。
* 如果僅提供快遞公司名稱,則記錄并查詢對應快遞公司code,并請用戶提供運單編號。
其他的查詢功能,因為用的是內(nèi)置模塊,直接就有回復,不需要我再去調(diào)用其他接口,直接顯示即可,很有意思。
----------代碼下載:-------------