写点什么

百度开放云骑士之夜:“基于百度开放云的营销插件平台”的作品简析

  • 2013-07-11
  • 本文字数:1816 字

    阅读完需:约 6 分钟

在 6 号的百度开放云骑士之夜的活动中,有幸在 36 小时的编码之后获得了比赛的一等奖,这里写下自己在整个比赛中的感受以及作品的技术选型方案。

创意背景

营销总是商业活动中一个重要的环节,而微博、微信的广泛普及能够让商家的营销活动以更低的成本获取更好的效果,虽然微信和微博都开放了他们的API,但是并不是每一个商家都有自己的技术力量来做实现,因此项目的思路是基于百度开放云(BAE)的计算能力结合这些社交平台的API,让营销的活动更加简单。商家只需要在平台之上,通过一些简单的配置即可将一个完善的营销CMS 跑起来。

技术选型

36 个小时的时间有限,所以实现中以微信的 API 为主。对于微信,我认为他是一个 I/O 的系统,项目期望能够在 I(输入)环节之前加入 Trigger,在 O(输出)之前加入 Response,即一个完整的流程应该是:用户输入信息,触发相应的应答机制。

每一个的触发和回复都将是一个具体的环节,由一组插件负责进行。那么,在此之上可以将接口开放,让一般的开发者能够也利用这个平台提交自己的插件,进而形成一个插件市场。

对于这样的一个平台,他需要具有如下的能力:

  1. 开发的插件架构
  2. 动态的路由配置
  3. 上下文相关的用户命令
  4. 强大的 API 负载能力

比赛时使用 Python 语言,框架选取的 Flask,由于 Flask 框架简单、可靠、轻量级,适合做为 API 的调用;服务器端的需求是在短时间内选择一个简单、可靠、可扩展的平台来支持程序的运行,所以当时就直接上手了 BAE,原因如下:

  1. 现场有工程师支持;在比赛的现场有百度开放云的工程师做支持,方便在遇到问题的时候快速解决;
  2. 简单易用:BAE 支持 Python 的环境,程序经过少许的改动就能直接运行;
  3. 动态扩展:不用担心系统的扩展需求,这一步的实现可以交由 BAE 来实现。

应用流程

在系统启动以后,会通过app.add_url_rule的方式自动加载所有公司的 API 端(以 http://base_url/v1/access_token 的方式暴露)。base_url 将会作为微信的服务器端的接入口,用户把系统中产生的 base_url 和 access_token 填入微信的后台中。

当一个请求过来之后,系统会在插件市场中自动寻找对应的插件,一般一个插件应该包含如下的几个内容:

  1. match 函数:用来相应请求,如果属于插件的处理范围之内则返回 True,否则返回 False;
  2. response 函数:系统会把用户的信息和上下文参数发送给这个函数,按照微信的格式进行回复;
  3. 两个函数的前端展示 / 设置代码

目前完成的的插件包括:

  1. 触发:位置匹配、文本正则、用户订阅、用户退订、用户发来音频
  2. 回复:API 查询、返回所有支持命令、后退、邮件通知、回复音乐、回复文本

用户可以通过界面创建简单的界面创建命令,命令是支持上下文以及嵌套的,例如,在比赛时,通过百度地图的 API 插件设置位置匹配:

由于插件方式都是统一的接口,用户可以通过满足接口的方式来实现自己的插件,后期可以把插件上传到系统端则形成市场,并且每一条用户的回复都会对应一个具体的命令,系统会记录对应的上下文等资源,这样的好处是第三方的插件提交上来以后能够实现按照“调用次数收费分成”的方式。

注意

需要明确的是 PaaS 平台由于自身的特性,所以不能完全兼容本地的开发环境,因此需要根据 BAE 平台的特点对代码进行修改,其中包括:

  1. 依赖的导入

在 BAE Python 的环境中,已经包含了一些常见的依赖,例如:BeautifulSoup、Jinja2、pytz 等,但是有一些项目需要,而在预装中没有的模块需要按照如下的方式来导入:

  1. 本地开发环境安装 virtualenv
  2. 使用 pip 安装需要的依赖
  3. 将 ENV 目录下的依赖路径复制到项目下
  1. 线上线下环境区分

通过'SERVER_SOFTWARE' not in os.environ:来区分线上和线下环境区分;
3. 测试

在用户上传之后,BAE 会在平台端对系统中改动的代码自动跑一遍 lint 的测试,主要是对于系统禁用的函数、功能、以及语法的检查,这个过程和代码的大小成正比,失败时只会在 console 端显示错误日志。
4. 本地写入

为了支持应用的分布式扩展,BAE 禁止应用对本地文件系统的写操作。创建临时文件,可通过 bae.core.const.APP_TMPDIR 获取临时目录的路径,也可以通过 NFS 来支持对于网络文件系统的支持,能够实现本地文件的写入。
5. 设置 url 映射 由于 BAE 在路由层面的特性,需要我们自己来设置 app.conf 对应的映射关系,例如:

复制代码
handlers:
- url : /static/(.)
script : /static/$1
- url : /.
script: index.py

在 36 个小时的代码之后完成了项目的原型,最大的感受还是:通过开放的标准、完善的平台,个人的团队也能够做出一些有意思的事情!

2013-07-11 03:46985
用户头像

发布了 89 篇内容, 共 32.3 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
发现更多内容

全能pdf编辑工具 PDF Expert 中文激活最新版

mac大玩家j

PDF Mac软件 pdf编辑器 pdf工具

用友助力中核集团新华发电斩获“IDC未来企业大奖”

用友BIP

企业数智化

INFINI Easysearch 与华为鲲鹏完成产品兼容互认证

极限实验室

华为鲲鹏 easysearch 极限科技 华为鲲鹏认证

After Effects 2023 for Mac(AE视频特效制作软件) v23.6完美激活版

mac

AE2023 苹果mac Windows软件 视频特效软件 After Effects 2023

Parallels Desktop 19 for Mac(PD19虚拟机)一键激活版

iMac小白

Sketch 57 for mac(矢量绘图软件) v57.1中文激活版

mac

Sketch 苹果mac Windows软件 矢量绘图软件

AE 3D粒子系统插件推荐 Trapcode Particular激活最新版

胖墩儿不胖y

Mac插件 粒子插件 粒子插件ae

分享一套生产管理MES系统的源代码,可以直接拿来搞钱的好项目

万界星空科技

开源 开源代码 MES系统 生产管理系统 开源mes

Pixea 5 for Mac(看图软件)

展初云

Mac 看图软件 Pixea Plus for Mac

VMware InstallBuilder Enterprise for Mac(跨平台安装程序的开发工具)v23.11激活版

iMac小白

VMware Fusion Pro 13 for Mac(VM虚拟机)v13.5.0激活版

iMac小白

GraphicConverter 12 for mac v12.0.8中文激活版

iMac小白

有”亿“点强,抖音的服务器带宽是如何应对亿人同时刷屏的?

Finovy Cloud

云计算 CDN 短视频 抖音 短视频制作

Retrobatch 2 for mac(图像批量设计工具)

展初云

集成测试的实践与思考

老张

软件测试 集成测试 质量保障

电机制造业mes,mes生产管理系统,免费电机mes

万界星空科技

电机 mes 制造业生产管理系统 直流电机 云mes

用友助力浙江省国贸供应链企业数智化管理水平提升!

用友BIP

企业数智化

一键部署,高效私有化大模型

百度开发者中心

大模型 #人工智能 LLM

EAM与IOT融合,用友BIP资产云助力设备智慧运维!

用友BIP

资产管理

4天肝出一个数据应用,可能吗?| StartDT Hackathon

奇点云

操作系统 数据应用 奇点云

事项法会计:业财融合落地的基石

用友BIP

业财融合

ICP通识导读:了解未来区块链

TinTinLand

#区块链# Dfinity

Linux RN6752 驱动编写

EquatorCoco

Linux 运维

借助ETL快速查询金蝶云星空表单信息

RestCloud

ETL 金蝶云

WebSocket 是什么原理?为什么可以实现持久连接?

EquatorCoco

Web 网络协议 websocket 通信协议

用友iuap智能中台助力中国矿产“数智员工”成功上岗

用友BIP

数智员工

Flutter App混淆加固、保护与优化原理

如何使用Selenuim浏览器自动化框架实现自动登录社交媒体账号和自动发布文章

爱写字的阿城

自动化 selenium

LLM大模型AI能力助力企业数字化智能化转型

百度开发者中心

#人工智能 LLM

低成本大模型解决方案

百度开发者中心

gpu #人工智能 LLM

结合RNN与Transformer的强大模型

百度开发者中心

大模型 #人工智能

百度开放云骑士之夜:“基于百度开放云的营销插件平台”的作品简析_Python_水羽哲_InfoQ精选文章