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