微信小(xiao)程(cheng)序最近比(bi)較(jiao)熱門,再(zai)加上自然(ran)語義理解(jie)也越來越被人(ren)關(guan)注(zhu),于是我想趕(gan)趕(gan)潮流,做(zuo)(zuo)一個小(xiao)程(cheng)序試(shi)(shi)試(shi)(shi)。想來想去快遞查詢應該(gai)是一種比(bi)較(jiao)普遍的需求。 如果你也在通過自然(ran)語言接口做(zuo)(zuo)點什么,希望我的這篇博客能幫到你 ...
微(wei)信最近(jin)比(bi)較熱門,再加(jia)上自然語義理解(jie)也越(yue)來越(yue)被人關(guan)注,于是我想趕(gan)趕(gan)潮流,做一(yi)(yi)個(ge)小程序試試。想來想去快遞(di)查詢應該是一(yi)(yi)種比(bi)較普遍的需(xu)求。
如(ru)果你也(ye)在通過自然語言接口做點什么(me),希望我(wo)的這篇博客能幫到你。感興趣(qu)的朋友可以加(jia)入(ru)互通有無。或者你也(ye)可以直接下載(zai)代碼試一試。
----------代碼下載:-------------
----------------功能(neng)介紹: 我(wo)的(de)小(xiao)程序名字叫(jiao)“智能(neng)生活寶”------------------------
1. 通過自(zi)然語言對話查詢
現(xian)在(zai)在(zai)微信里(li),如(ru)果你參加一個什(shen)么(me)活動,一般都是在(zai)輸入(ru)框里(li)寫上關鍵字或者數字,這樣才能獲取(qu)你所需要的(de)服務。而通過自然語言接口,可以(yi)讓(rang)用戶像跟人對(dui)(dui)話一樣和(he)你的(de)小(xiao)程序對(dui)(dui)話。比(bi)如(ru):
我要查(cha)快(kuai)遞(di),幫我查(cha)一下快(kuai)遞(di),查(cha)快(kuai)遞(di)122343,甚至直接(jie)輸入快(kuai)遞(di)運單號,小程(cheng)序就能做出(chu)相(xiang)應的回應。
2. 多(duo)功能查詢
目前支持快遞(di)查(cha)詢(xun),聊天(tian),日歷(li)查(cha)詢(xun),菜譜查(cha)詢(xun),講(jiang)笑話,講(jiang)故(gu)事(shi),計算(suan),算(suan)24點功能。
原本我(wo)只是(shi)準備支持快遞查詢功能,后來發現OLAMI開(kai)放平臺(tai)有許(xu)多內置(zhi)的模(mo)塊,于是(shi)也順便添(tian)加了一下(xia)。
----------------功能展示:------------------------------------------------------------------------
1. 快(kuai)遞查詢(xun)頁面(mian)如下圖所(suo)示(shi),只要在下方的輸(shu)入(ru)框(kuang)中輸(shu)入(ru)查詢(xun)句子,就(jiu)會(hui)在text控件中返回(hui)結果。
也可(ke)以點擊“例句(ju)”按(an)鈕和“更換例句(ju)”按(an)鈕體驗一下。
2. 點擊例句后的(de)效果(guo)圖,觸摸(mo)例句就會(hui)在text控件中(zhong)看到效果(guo)。
3. 輸入語句: “查詢中通(tong)快遞765325527325”
4. 點擊(ji)更換(huan)例句(ju)(ju)按(an)鈕可以更換(huan)例句(ju)(ju)
5. 其他(ta)模(mo)塊體驗(yan)
點(dian)擊左下(xia)角的切換按(an)鈕(niu),會發(fa)現右(you)下(xia)角的查快遞變成了(le)“聊(liao)天”
。
6. 點擊“例句(ju)(ju)”按鈕,這時候(hou)例句(ju)(ju)里就是其他模塊(kuai)的例句(ju)(ju)了(le)。
7. 同(tong)樣可以通(tong)過“更(geng)換例(li)句(ju)”按(an)鈕進行例(li)句(ju)更(geng)換
8. 查日期
9. 講笑話
10. 查菜譜
----------------開發步驟----------------------------------------
1. 微信(xin)小程序相關
首先要申請一個微信小(xiao)程(cheng)序公眾號(hao),注意不是微信公眾號(hao),然后(hou)仔細閱讀小(xiao)程(cheng)序的(de)(de)(de)框架和功能(neng)(neng)介紹。有(you)些JS的(de)(de)(de)功能(neng)(neng)小(xiao)程(cheng)序里是不能(neng)(neng)用的(de)(de)(de)。我之(zhi)前(qian)也沒(mei)有(you)做過JS,但上起(qi)手來感覺還是很快的(de)(de)(de),幾乎沒(mei)有(you)太多(duo)(duo)阻礙。網(wang)上有(you)很多(duo)(duo)教程(cheng),我就不多(duo)(duo)說了。
網址(zhi):
2. 快遞查(cha)詢的API接口
注意尋找合適的(de)API接(jie)口時,要選用(yong)支持https的(de)訪(fang)問(wen)接(jie)口,微(wei)信(xin)小程序目前僅支持https的(de)訪(fang)問(wen)。
我選用的(de)是里面(mian)的(de)即(ji)使查詢API,因(yin)為免費嘛,呵呵。而且每天(tian)可以訪問3000次,足(zu)夠了。你(ni)需要自己注冊,獲取自己的(de)API key和商戶ID。
注意:注冊之后(hou),需要在自己的(de)(de)賬號(hao)界面申(shen)(shen)請(qing)對應的(de)(de)API接口才能(neng)使用,免(mian)費的(de)(de)也要申(shen)(shen)請(qing)。如(ru)下圖所示:
3. 歐(ou)拉(la)蜜(OLAMI)人工智能開發平(ping)臺
這個非常重要(yao),決定了(le)你能支持多少種(zhong)模塊,多少種(zhong)句(ju)子。畢竟這種(zhong)接口看起來還是很復雜的,總結一下我的心(xin)得:
* 寫(xie)語法
在使用之前(qian),首先得寫語法,仔細閱讀,這個(ge)很重要。當然(ran)你也(ye)可以登錄進(jin)(jin)去,看看平臺內置的(de)語法是否符合你的(de)要求,如果只是為(wei)了測試,完全可以先導入一個(ge)內置的(de)模塊試試。點擊下圖中的(de)“進(jin)(jin)入NLI系統”。
進入NLI系統(tong)之(zhi)后,點擊“導入”按鈕,既可以看到(dao)(dao)內置(zhi)模(mo)塊,選中添加即可,如下圖所(suo)示(shi)。每個(ge)模(mo)塊的作用可以在看到(dao)(dao)詳細描述。
下圖中(zhong)是我的NLI系統,里面有我自己寫的快遞模塊"expressage"和添加了內置模塊"music".
2...創建應(ying)用,配置(zhi)模塊
寫好語法并發布(bu)之后后,就可(ke)以創建(jian)自己的(de)應(ying)(ying)用了(le),并在(zai)應(ying)(ying)用里添加模(mo)塊(kuai)即可(ke)。我在(zai)配置(zhi)模(mo)塊(kuai)的(de)過程(cheng)中(zhong),發現(xian)OLAMI有內置(zhi)的(de)模(mo)塊(kuai)可(ke)以使用,于(yu)是我創建(jian)了(le)兩個(ge)應(ying)(ying)用,一(yi)個(ge)叫(jiao)(jiao)查(cha)詢工具,用來(lai)專門查(cha)詢快遞;另一(yi)個(ge)叫(jiao)(jiao)工具,選了(le)內置(zhi)的(de)模(mo)塊(kuai)。
為什么我沒有將這(zhe)些應用放在一起呢?因為我的快遞模(mo)塊語法中有一個(ge)會抓(zhua)整個(ge)句子,導致內(nei)置模(mo)塊無法正(zheng)常工作。
你如(ru)果想驗證自己的功能是否可用,可以點“測試”按鈕測試一下看看。
快(kuai)遞應(ying)用配置(zhi):
其(qi)他查(cha)詢應(ying)用(yong)配(pei)置(這個語法完全不用(yong)自己寫,還有對應(ying)的輸(shu)出(chu)結果,很好(hao)用(yong)):
應用創建好之(zhi)后(hou),你就可以查看OLAMI分配(pei)給你的(de)Key信息,這(zhe)可是(shi)訪問API接口(kou)的(de)必(bi)備信息。
3. 訪問API
如果你在(zai)你的(de)應用(yong)中測試(shi)結果很滿意,也就(jiu)(jiu)是你要捕獲的(de)句子都支持,那么就(jiu)(jiu)可(ke)以嘗試(shi)調用(yong)API了。然后分(fen)析API的(de)結果,做(zuo)出對應的(de)回應。
比如我的快(kuai)遞查詢APP的語法通過modifier支持的四種功能(neng),如下(xia)表所示:
| modifier |
含義 |
例句 |
| query | 輸入的句子只是說要查快遞,沒有提供快遞公司名稱和運單號 |
我要查快遞 查一下快 幫我查查快遞唄 |
| query_num | 輸入的句子中提供了運單號 |
12112311111 查一下運單號是123423的快遞 |
| query_name | 輸入的句子中提供了快遞公司名稱 |
我想查圓通快 看一下申通快遞 |
| query_name_num | 輸入的句子中提供了運單編號和快遞公司名稱 | 查申通快遞1122333 |
我(wo)的語法(fa)中僅涉及了兩(liang)個(ge)(ge)關鍵信息,即兩(liang)個(ge)(ge)slot,“expnumber”抓取快遞(di)單號,'expname'用來抓取快遞(di)公司的名稱。
因此(ci)當OLAMI 的(de)(de)API接(jie)口返回語(yu)法信息之后,我(wo)只需(xu)要根據modifier的(de)(de)值(zhi)就可以(yi)做出對應的(de)(de)操(cao)作,而使用slot的(de)(de)值(zhi)去(qu)快遞(di)鳥的(de)(de)API接(jie)口查詢快遞(di)信息。
我的快(kuai)遞(di)APP功能邏輯如下:
* 如果僅(jin)提供運(yun)單號,則(ze)先用(yong)(yong)運(yun)單號查(cha)詢快(kuai)遞公司編號,如果快(kuai)遞公司編號有一個,則(ze)直接用(yong)(yong)運(yun)單號和公司編號查(cha)物流信息。
如果有多個(ge),則請用戶選擇快(kuai)遞(di)公司。
* 如果提供運單號(hao)和(he)快遞(di)公司,則(ze)直(zhi)接調用運單號(hao)+快遞(di)code接口查詢。
* 如果僅提(ti)供快遞公(gong)司(si)名稱(cheng),則記錄并查詢對應快遞公(gong)司(si)code,并請用戶提(ti)供運(yun)單編(bian)號。
其他的(de)查詢功能,因(yin)為(wei)用的(de)是內置模塊,直接(jie)就有回復(fu),不需(xu)要我再去調用其他接(jie)口,直接(jie)顯示(shi)即可,很有意思(si)。
----------代碼下載(zai):-------------