微信小程式+OLAMI(歐拉蜜)自然語言API介面製作智能查詢工具--快遞、聊天、日曆等

来源:http://www.cnblogs.com/huangmeimao/archive/2017/07/12/7157809.html
-Advertisement-
Play Games

微信小程式最近比較熱門,再加上自然語義理解也越來越被人關註,於是我想趕趕潮流,做一個小程式試試。想來想去快遞查詢應該是一種比較普遍的需求。 如果你也在通過自然語言介面做點什麼,希望我的這篇博客能幫到你。我建了一個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含義
modifier

含義

例句
query 輸入的句子只是說要查快遞,沒有提供快遞公司名稱和運單號 我要查快遞
查一下快
幫我查查快遞唄
query_num 輸入的句子中提供了運單號 12112311111
查一下運單號是123423的快遞
query_name 輸入的句子中提供了快遞公司名稱 我想查圓通快
看一下申通快遞
query_name_num 輸入的句子中提供了運單編號和快遞公司名稱 查申通快遞1122333

 

我的語法中僅涉及了兩個關鍵信息,即兩個slot,“expnumber”抓取快遞單號,'expname'用來抓取快遞公司的名稱。

 

因此當OLAMI 的API介面返回語法信息之後,我只需要根據modifier的值就可以做出對應的操作,而使用slot的值去快遞鳥的API介面查詢快遞信息。

我的快遞APP功能邏輯如下:

* 如果僅提供運單號,則先用運單號查詢快遞公司編號,如果快遞公司編號有一個,則直接用運單號和公司編號查物流信息。

  如果有多個,則請用戶選擇快遞公司。

* 如果提供運單號和快遞公司,則直接調用運單號+快遞code介面查詢。

* 如果僅提供快遞公司名稱,則記錄並查詢對應快遞公司code,並請用戶提供運單編號。

 

其他的查詢功能,因為用的是內置模塊,直接就有回覆,不需要我再去調用其他介面,直接顯示即可,很有意思。

 

----------代碼下載:-------------

GitHub代碼下載

CSDN代碼下載

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 面試問到這個··答不出來就是沒有架構能力···這裡學習一下···面試的時候直接讓我說出26種設計模式··當時就懵逼了··我記得好像之前看的時候是23種的 還有3個是啥的··· 這裡先列出簡單的三種,工廠、抽象工廠、單例,後續在更新 工廠模式:缺點是每增加一個類型就得增加一個工具類和對象工廠類(反射可 ...
  • 擴展運算符 let zzz=[2,4,6]; console.log(zzz);//[2, 4, 6] console.log(...zzz);//2 4 6 let a=[1,2,3]; let b=[...a,4,5,6]; console.log(b);//1,2,3,4,5,6 let [a ...
  • 具體代碼如下 ...
  • 作為一名菜鳥的我,每天學點的感覺還是不錯的。今天學習閉包的過程中看到作用域與作用域鏈這兩個概念,我覺得作為一名有追求的小白,有必要詳細瞭解下。 變數的作用域 就js變數而言,有全局變數和局部變數。這裡我覺得這個按字面意思理解就行了.......下麵舉個例子 這邊有2個很有意思的地方 1.當變數不用v ...
  • if語句 三元運算符 表達式1 ? 表達式2 : 表達式3是對if……else語句的一種簡化寫法 switch語句 switch (expression) { case 常量1: 語句; break; case 常量2: 語句; break; case 常量3: 語句; break; … case ...
  • 判斷點擊的是那個tab頁 jsp: js: ...
  • 前言:終於我的大一生活結束了,迎來了愉快的暑假,大家都開始了各自的忙碌。一直忙著一些項目的事情,終於決定今天要更新一篇博客了,對上一階段的學習做簡單的總結。 這次我主要總結一下用Css繪製各種形狀的技巧,同時要結合before、after偽元素和定位做出一些效果。 Triangle Up(向上的三角 ...
  • 一、校驗數字的表達式 1 數字:^[0-9]*$ 2 n位的數字:^\d{n}$ 3 至少n位的數字:^\d{n,}$ 4 m-n位的數字:^\d{m,n}$ 5 零和非零開頭的數字:^(0|[1-9][0-9]*)$ 6 非零開頭的最多帶兩位小數的數字:^([1-9][0-9]*)+(.[0-9] ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...