微信小程序最近比较热门,再加上自然语义理解也越来越被人关注,于是我想赶赶潮流,做一个小程序试试。想来想去快递查询应该是一种比较普遍的需求。

如果你也在通过自然语言接口做点什么,希望我的这篇博客能帮到你。我建了一个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代码下载

微信小程序+OLAMI(欧拉蜜)自然语言API接口制作智能查询工具--快递、聊天、日历等的更多相关文章

  1. 微信小程序入门教程(一)API接口数据记录

    今天测试用小程序调用API接口,发现有些数据打印都是对象,怎么全部打印详细点来 小程序代码: httpsearch: function (name, offset, type, cb) { wx.re ...

  2. 微信小程序的下拉刷新

    微信小程序的下拉刷新:在page的js文件中有监听用户下拉刷新的处理函数onPullDownRefresh:function(){} //js文件中自带的处理函数,在onUnload下面,注意不要重复 ...

  3. 微信小程序禁止下拉_解决小程序下拉出现空白的情况

    微信小程序禁止下拉 在微信小程序中,用力往下拉动,页面顶部会出现一段空白的地方. 产品的需求不太允许这么做,会影响用户体验,查看文档发现可以使用enablePullDownRefresh这属性来实现, ...

  4. 微信小程序实现上拉和下拉加载更多

    在上一篇文章中,我们知道了使用 scroll-view 可以实现上拉加载更多,但是由于 scroll-view 的限制,它无法实现下拉加载更多,这篇文章我们使用 view 组件来实现 上拉和下拉加载更 ...

  5. 微信小程序入门与实战 常用组件API开发技巧项目实战*全

    第1章 什么是微信小程序? 第2章 小程序环境搭建与开发工具介绍 第3章 从一个简单的“欢迎“页面开始小程序之旅 第4章 第二个页面:新闻阅读列表 第5章 小程序的模板化与模块化 第6章 构建新闻详情 ...

  6. 微信小程序-自定义下拉刷新

    最近给别个公司做技术支持,要实现微信小程序上拉刷新与下拉加载更多 微信给出的接口不怎么友好,最终想实现效果类似QQ手机版 ,一共3种下拉刷新状态变化,文字+图片+背景颜色 最终实现后的效果(这里提示有 ...

  7. 微信小程序-页面下拉

    微信小程序当滑动到最顶部和最底部时,继续下拉,会将整个页面拉下去或者拉上去,本来以为是客户端自有的特性,就没去管他,直到我的禅道出现了这个记录... 其实这个问题是可以解决的,只需要在你不想出现在此情 ...

  8. 微信小程序开发—快速掌握组件及API的方法

    微信小程序框架为开发者提供了一系列的组件和API接口. 组件主要完成小程序的视图部分,例如文字.图片显示.API主要完成逻辑功能,例如网络请求.数据存储.音视频播放控制,以及微信开放的微信登录.微信支 ...

  9. 微信小程序开发—快速掌握组件及API的方法---转载

    微信小程序框架为开发者提供了一系列的组件和API接口. 组件主要完成小程序的视图部分,例如文字.图片显示.API主要完成逻辑功能,例如网络请求.数据存储.音视频播放控制,以及微信开放的微信登录.微信支 ...

随机推荐

  1. 关于php内存释放问题 内存溢出问题(二)

    今天抽了一上午时间,来看了看之前解决过内存问题的代码,相对来说,我对自己代码的优化程序非常不满意,一次性导入四万条数据就使代码变得如此繁琐,我想这不是根本的解决方法.通过网上检索,对问题有进一步的分析 ...

  2. C#实现谷歌翻译API

    由于谷歌翻译官方API是付费版本,本着免费和开源的精神,分享一下用C#实现谷歌翻译API的代码.这个代码非常简单,主要分两块:通过WebRequest的方式请求内容:获取Get方式的请求参数(难点在于 ...

  3. NodeMCU入门(5):Docker Image 构建固件,开启SmartConfig

    准备工作 1.NodeMCU模块 2.ESP8266Flasher.exe 3.EspTouch.apk 3.docker toolbox(win7系统) 或 docker(win10以上),本教程是 ...

  4. CentOS7安装使用Docker

    安装 Docker 官方为了简化安装流程,提供了一套安装脚本,CentOS 系统上可以使用这套脚本安装: curl -sSL https://get.docker.com/ | sh 执行这个命令后, ...

  5. ActiveMQ 学习第二弹

    经历了昨天的初识 ActiveMQ,正好今天下班有点事耽搁了还没法回家,那就再学习会 ActiveMQ 吧!现在官网的文档没啥好看的了,毕竟是入门学习,太深奥的东西也理解不了.然后看官网上有推荐书籍& ...

  6. 关于控制下拉框只读的js控制

    文本框有readonly属性,直接设置:下拉框没有readonly属性,也不能通过其他属性进行只读的设置,下拉框只有disabled属性,但是这个属性设成true之后,值就获取不到了: 我在网上搜了一 ...

  7. C++构造函数(二)

    本篇是介绍C++的构造函数的第二篇(共二篇),属于读书笔记,对C++进行一个系统的复习. 复制构造函数 复制构造函数是构造函数的一种,也被称为拷贝构造函数,他只有一个参数,参数类型是本类的引用.默认构 ...

  8. 实现Runnable接口和继承Thread类之间的区别

    在Java语言中,我们都知道,有两种创建线程的方式,一中是使用Runnable接口,另一种是使用Thread类. public class DemoRunnable implements Runnab ...

  9. C++将一个数组内容赋给另一个数组

    有两种方式: 一.进行数组遍历,依次赋值 ] = { , , , , }; ] ={ }; ;i<sizeof(arr1)/sizeof(int);i++) arr2[i] = arr1[i] ...

  10. Navicat连接报错:cannot load OCI DLL,126

    32位系统下报错:cannot load OCI DLL,126 解决方法:navicat 菜单中 -工具->选项->OCI 选择oracle安装目录下bin里面的oci.dll 在win ...