-
Notifications
You must be signed in to change notification settings - Fork 27
我的第一个OctoMation 应用APP开发
完整地介绍一个应用开发的整个过程。打开右侧导航栏,阅读效果更好->_->
在你正式编写一款OctoMation应用APP之前,请你想好以下几个问题:
- 我的应用对接的是何种产品?
- 应用具备哪些动作?
- 应用动作有没有查询、写入和通知的特征?
- 应用是否需要API KEY、密码等信息?
- 应用输出的格式是什么?
- 下游产品会用到本应用的哪些输出结果?
- 应用会不会出错,如何告诉系统?
- ……
接下来,我们以编写一款IPinfo.io的IP地址地理信息(Geolocation)查询应用为例,介绍如何快速完成你的第一个OctoMation应用APP开发。
IPinfo——值得信赖的 IP 地址数据源。 IPinfo 于 2013 年由前 Facebook 工程师本-道林(Ben Dowling)创立,它以成为目前最可靠、最准确、最深入的 IP 地址数据源而自豪。IPinfo处理数 TB 的数据,生成定制的 IP 地理定位、公司、运营商和 IP 类型数据集。
我们将编写一款应用APP,支持在OctoMation中编排该应用以实现查询IP地理信息,预期的效果是这样的:
让我们正式开始吧!假设OctoMation的地址是https://192.168.0.1/
,在你成功登录后使用浏览器访问:https://192.168.0.1/dev
即可直接进入图形化应用开发工具的界面。
首先需要我们填写该应用有关的基本信息、应用版本、主文件(此处自定义为:ipinfo.py
)和Logo图片等。
要使用IPinfo网站查询的API必须提供一个身份认证的Token,所以我们在资源配置处增加一个token字段。
请注意,该字段属于敏感信息,我们选择其类型为password
,且必须填写
。
每一个应用有一个或者多个动作,接下来我们将创建一个查询IP地理信息的动作:ip_geolocation
。
该动作有一个必填的入参:ip
和多个出参:ip
、国家
、区域
、城市
、坐标
、组织
、邮编
、时区
等。
点击预览配置文件(config.json
),可以查看工具自动生成的配置文件。您也可以按需编辑配置文件。
点击应用APP开发界面右上角的按钮【生成主文件】,开发工具将自动生成主文件ipinfo.py
系统初始生成的主文件很简单,需要你根据实际需求,用详细的Python代码实现具体逻辑。
此处是根据IPinfo官方网站API接口编写的应用查询动作逻辑,代码如下:
# -*- coding: utf-8 -*-
import requests
import json
def get_ip_geolocation(params, assets, context_info):
"""查询IP地址的地理位置"""
# API Token
token = assets["token"]
# IP地址(支持IPv4、IPv6)
ip = "8.8.8.8" if "ip" not in params.keys() or params["ip"] == "" else params["ip"]
# 返回值
json_ret = {"code": 200, "msg": "","data": {"ip": "", "city": "", "region": "", "country": "", "loc": "", "org": "", "timezone": "", "postal": ""}}
'''添加函数实现
'''
url = f"https://ipinfo.io/{ip}?dataset=geolocation&token={token}"
try:
response = requests.get(url)
if response.status_code == 200:
json_info = response.json()
if 'ip' in json_info.keys():
json_ret['data']['ip'] = json_info['ip']
if 'city' in json_info.keys():
json_ret['data']['city'] = json_info['city']
if 'region' in json_info.keys():
json_ret['data']['region'] = json_info['region']
if 'country' in json_info.keys():
json_ret['data']['country'] = json_info['country']
if 'loc' in json_info.keys():
json_ret['data']['loc'] = json_info['loc']
if 'org' in json_info.keys():
json_ret['data']['org'] = json_info['org']
if 'postal' in json_info.keys():
json_ret['data']['postal'] = json_info['postal']
if 'timezone' in json_info.keys():
json_ret['data']['postal'] = json_info['timezone']
except Exception as e:
json_ret['msg'] = str(e)
return json_ret
完成代码编写后,点击右侧【测试】按钮,可以快速测试应用是否可以在系统中运行。
测试通过后,点击按钮【下载应用】,即可获得应用APP的zip包:shakespeare-action-python-IPinfo.zip
。
访问应用APP管理界面https://192.168.0.1/apps
,点击【上传应用】按钮,选择文件shakespeare-action-python-IPinfo.zip
上传。
在应用列表中找到IPinfo,点击该应用,为其创建一个资源(对应的API Token)。
用户也可以根据需要编辑、删除该资源,或配置多个不同的资源。
大功告成,现在你可以在作战室或者剧本中使用自己开发的应用了!
因为你,刚刚上传了新的应用APP,浏览器缓存可能没有更新,建议此时刷新一下作战室和剧本编排界面,再开始下面的工作。
在作战室输入框左下角,点击【闪电符号】,执行应用动作。搜索IPinfo即可找到。
点击应用动作【查询IP地址的地理位置】,输入IP参数,点击【执行】。
应用执行完成后,在作战室中可以查看执行的结果。
如果你的APP没有经过渲染,那么你看到的很可能是下面的原始数据。
在剧本编排过程中,也可以选择IPinfo应用参与事件响应。
🎉🎉🎉恭喜你!终于完成了自己的第一个OctoMation 应用APP开发!
Tips:
- 我需要Star!💗💗💗
- 欢迎参与社区讨论和贡献,不限于:Wiki编写、Issue提交、社区Discussion、应用APP和剧本开发、场景拓展、转发宣传😄
- 商用或企业版请联系👉雾帜智能官网或者致电400 1166 232
-
QuickBook快速上手🚀
-
完整手册
-
其它