当前位置: 首页 > news >正文

使用Python做一个微信机器人

项目功能介绍

现在我们用小程序做一个模拟的应用,智能聊天机器人。发送文字它可以回复一段话,或一张图片,是不是有点小酷!

下面是小程序开发的一个智能聊天机器人的应用界面:

当然,这种智能回复的算法和数据库我们自己肯定是没有的,所以我们借助于gewe框架的开放API接口来完成我们的功能。

gewe框架接口:开发前必读 - GeWe开放平台

智能聊天机器人的开发步骤

1、整体框架

很简单,两个页面。两个tab,并修改window标题栏和tabBar的颜色等属性就好。这个全部在app.json中完成。

2、form表单的使用

表单,将组件内的用户输入的<switch/> <input/> <checkbox/> <slider/> <radio/> <picker/> 提交。

属性名 类型 说明report-submit Boolean 是否返回formId用于发送模板消息bindsubmit EventHandle 携带form中的数据触发submit事件,event.detail = {value : {‘name’: ‘value’} , formId: ”}bindreset EventHandle 表单重置时会触发reset事件当点击 表单中 formType 为 submit 的 <button/> 组件时,会将表单组件中的 value 值进行提交,需要在表单组件中加上 name 来作为 key。

表单提交的要点:

在form内的表单组件必须有name属性。

在form内的button的 formType 属性为 submit 。

form的属性bindsubmit即为数据提交事件绑定的响应函数。

4、wx.request接口的使用

wx.request发起的是 HTTPS 请求。一个微信小程序,同时只能有5个网络请求连接。

在开发调试模式开发工具没有做安全检查,因此是可以请求http的。

wx.request({
url: 'test.php', //仅为示例,并非真实的接口地址

data: {
x: '' ,y: ''},header: {
'content-type': 'application/json'},method: 'GET',success: function(res) {
console.log(res.data)}})

了解http的对这个接口参数应该不陌生,首先url为接口地址,data为请求的参数,header为请求的头,header中不能设置header 中不能设置 Referer。method为请求的方法,包括:OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT

5、scroll-view组件的使用

scroll-view为可滚动视图容器。这个主要用于聊天界面在有新的消息时需要自动滚动到最新聊天的位置。它的属性还是比较多的,参看文档:开发前必读 - GeWe开放平台

属性名 类型 默认值 说明

scroll-x Boolean false

scroll-y Boolean false 允许纵向滚动

upper-threshold Number 50 距顶部/左边多远时(单位px),触发 scrolltoupper 事件

lower-threshold Number 50 距底部/右边多远时(单位px),触发 scrolltolower 事件

scroll-top Number 设置竖向滚动条位置

scroll-left Number 设置横向滚动条位置

scroll-into-view String 值应为某子元素id,则滚动到该元素,元素顶部对齐滚动区域顶部

bindscrolltoupper EventHandle 滚动到顶部/左边,会触发 scrolltoupper 事件

bindscrolltolower EventHandle 滚动到底部/右边,会触发 scrolltolower 事件

bindscroll EventHandle 滚动时触发,event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}

这里我们主要用到scroll-y(允许纵向滚动)和scroll-top(设置竖向滚动条位置)属性,以完成聊天内容的自动下翻。

6、两个坑

a、更新数据同时更新scrollTop,无法达到效果

需要先更新数据,然后更新scrollTop

要这样写才可以更新聊天页面内容并将滚动条置于正确的位置

this.setData({content:newContent});this.setData({scrollTop:newScrollTop});

而不能写为下面这样

this.setData({
content:newContent,scrollTop:newScrollTop});

b、textarea的value属性绑定逻辑层的data数据段

在逻辑层调用setData({text:”“}),textarea中数据并不会被清空。这个问题还没找出解决方案,等研究出方法再更新。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • android 音频播放器,(二)SoundPool简介
  • 面试经典 222. 完全二叉树的节点个数
  • 身份证OCR识别接口如何对接?(二)
  • 《Linux运维总结:基于Ubuntu 22.04+x86_64架构CPU部署etcd 3.5.15二进制分布式集群》
  • 样式与特效(2)——新闻列表
  • java之方法引用 —— ::
  • c语言第七天笔记
  • IPython的魔法:深入探索%%pastebin命令的奥秘
  • Python切片的用法
  • STM32DMA数据传输
  • Golang之OpenGL(一)
  • 平舌、翘舌音学习: z、c、s--zh、ch、sh
  • 使用 MinIO、Langchain 和 Ray Data 构建分布式嵌入式子系统
  • electron-builder打包vue2项目问题合集
  • Java | Leetcode Java题解之第316题去除重复字母
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • es6要点
  • ES学习笔记(12)--Symbol
  • JS+CSS实现数字滚动
  • ReactNativeweexDeviceOne对比
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • Vue官网教程学习过程中值得记录的一些事情
  • vue中实现单选
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 阿里云购买磁盘后挂载
  • 大快搜索数据爬虫技术实例安装教学篇
  • 多线程 start 和 run 方法到底有什么区别?
  • 多线程事务回滚
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 前端临床手札——文件上传
  • 前端面试总结(at, md)
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 源码安装memcached和php memcache扩展
  • 在Docker Swarm上部署Apache Storm:第1部分
  • HanLP分词命名实体提取详解
  • 关于Android全面屏虚拟导航栏的适配总结
  • # 服务治理中间件详解:Spring Cloud与Dubbo
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (11)MATLAB PCA+SVM 人脸识别
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (C语言)fgets与fputs函数详解
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (备忘)Java Map 遍历
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)ssm高校实验室 毕业设计 800008
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (七)理解angular中的module和injector,即依赖注入
  • (三) diretfbrc详解
  • (十) 初识 Docker file
  • (十八)SpringBoot之发送QQ邮件
  • (原創) 如何將struct塞進vector? (C/C++) (STL)