天猫精灵语音自动化查询ECS服务器内存剩余-基于Python实现

简介: 最近比较忙,又不太擅长开发,但是想着社区的活动还是要参加一下的哈哈哈哈哈哈,俺略懂一些python,于是选用python作为后端FaaS的语言进行简单的脚本编写

开发能力我还是太弱了,但是平常接触python会多一点,包括一些自动化运维之类的开发。我这里就编写一个简单的python后端脚本,通过paramiko模块ssh功能,实现天猫精灵通过语音召唤还有内存吗”,自动化去查询我在阿里云上的ECS服务器内存剩余。

后续有时间,我可能会丰富一下功能,加入一些常用的运维查询功能。


天猫精灵技能应用平台提供了从语音交互模型定义、语义解析理解能力,到技能开发、测试、部署的一整套开发工具和便捷的可视化操作工作台,帮助开发者高效地将各类技能应用快速接入到天猫精灵音箱以及精灵生态硬件终端。

目前平台支持以下几种应用类型的接入:

  • 语音技能
  • 灵活定义语音交互方式,开发业务逻辑代码、创建屏显页面来响应任意的用户语音请求。
  • 小程序
  • 支持将支付宝小程序快速迁移到天猫精灵设备,同时也可利用内容模板小程序快速完成内容变现。
  • 安卓Android APP应用
  • 支持快速接入安卓生态应用,与天猫精灵带屏端设备无缝打通,同时支持语音交互能力。
  • H5网页小游戏
  • 无需开发,支持现成H5网页小游戏的快速接入,同时支持语音唤起。



一、创建语言技能

选择自定义技能

 

 

image.png

 

填写基本的信息,输入调用词,通过喊这个调用词实现唤出

选择FAAS

image.png

 

进入技能后,选择后端服务,选择服务部署,选择阿里云云原生开发

image.png

 

 

选择关联阿里云账户

 

image.png

 

授权访问

image.png

 

完成后选择Python开发语言,选择空白模板

image.png

 

完成后端的服务部署

image.png

 

二、配置语音交互模型

我这里实现比较简单,后端没有从前端json获取参数,交互就随意配置了

配置意图,简单写个名称

image.png

可以配置一些固定问答

 

image.png

 

三、后端代码开发

进入代码编辑,前往webide

image.png

进入给的默认模板index

image.png

 

大概看一下给的模板代码

 

import logging
import json
import base64
#导入模块
def handler(event, context):
    request = json.loads(event)
    logger = logging.getLogger()
    body = base64.b64decode(request['body']).decode()
    data = json.loads(body) 
    logger.info(data)
#定义了获取json数据,存放在body
#响应数据库,回复内容在reply里面
    response = {
        "isBase64Encoded": "false",
        "statusCode": "200",
        "headers": {"content-type": "application/json"},
        "body": {
            "returnCode": "0",
            "returnErrorSolution": "",
            "returnMessage": "",
            "returnValue": {
                "reply": "欢迎使用",
                "resultType": "RESULT",
                "executeCode": "SUCCESS",
                "msgInfo": ""
            }
        }
    }

 

我们可以做个简单测试,看一下前端传参数json大概有什么,在reply这里将数据包的内容body显示。这样后续可以针对json包提取数据做其他功能

image.png

 

测试一下,可以看到json结构

image.png

 

 

 

PS:我后来发现原来在fc的日志里也可以看到,当然可以在日志里看了,为什么我一开始没想到呜呜QAQ

image.png

 

修改我们代码,我们通过paramiko模块实现SSH功能,在收到唤醒的请求后,直接运行ssh登录到服务器并执行查询内存的shell命令

# @by : Taoreset
import logging
import json
import base64
import paramiko   #导入paramiko模块
def handler(event, context):
    request = json.loads(event)
    logger = logging.getLogger()
    body = base64.b64decode(request['body']).decode()
    data = json.loads(body)
    logger.info(data)
   #在收到唤醒的请求后,直接进入ecs_mem_free()函数
    replydata = ecs_mem_free()
    response = {
        "isBase64Encoded": "false",
        "statusCode": "200",
        "headers": {"content-type": "application/json"},
        "body": {
            "returnCode": "0",
            "returnErrorSolution": "",
            "returnMessage": "",
            "returnValue": {
               "reply": replydata,   #返回结果
                "resultType": "RESULT",
                "executeCode": "SUCCESS",
                "msgInfo": ""
            }
        }
    }
    return response
#定义一个执行SSH查询内存命令的函数
def ecs_mem_free():
    cmd = 'cat /proc/meminfo |grep -w "MemFree" | tr -cd "[0-9]"'  ##执行的shell命令
    user = '用户名'
    passwd = '密码'
    host = '服务器地址'
    ssh = paramiko.SSHClient()
   ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(host,'22',user,passwd)
    stdin, stdout, stderr = ssh.exec_command(cmd)
    res,err = stdout.read(),stderr.read()
    result = res if res else err
    ans = "您的ECS内存还有: "+result.decode()+' KB'
    ssh.close()
    return ans

 

 

由于paramiko不在平台的内置模块里,我们需要手动在终端执行打包下载paramiko模块依赖

python -m pip install --upgrade pip
pip install -t . paramiko

image.png

 

所有修改完成了,需要在git里提交一下,修改保存到codeup代码仓库

image.png

 

最后部署,部署到预发环境进行测试

image.png

 

 

四、测试

最后效果,当然,剩余内存在动态变更

image.png

直接输入唤醒词,返回ECS上的查询结果。也可以定义一些固定的数据,进行预设的问答

image.png

 

后续可以将开发完成的技能进行发布,我这里功能太简单了,纯属体验,就不发布啦

image.png

就玩玩儿,图一乐

相关实践学习
基于ECS搭建FTP服务
本教程介绍如何在Linux实例上安装并配置vsftpd,在被动模式下,使用本地用户访问FTP服务器的配置方法。。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
安全 JavaScript 开发者
Python 自动化办公神器|一键转换所有文档为 PDF
本文介绍一个自动化批量将 Word、Excel、PPT、TXT、HTML 及图片转换为 PDF 的 Python 脚本。支持多格式识别、错误处理与日志记录,适用于文档归档、报告整理等场景,大幅提升办公效率。仅限 Windows 平台,需安装 Office 及相关依赖。
373 0
|
9月前
|
存储 弹性计算 缓存
阿里云服务器ECS经济型、通用算力、计算型、通用和内存型选购指南及使用场景分析
本文详细解析阿里云ECS服务器的经济型、通用算力型、计算型、通用型和内存型实例的区别及适用场景,涵盖性能特点、配置比例与实际应用,助你根据业务需求精准选型,提升资源利用率并降低成本。
569 3
|
8月前
|
Web App开发 存储 前端开发
Python+Selenium自动化爬取携程动态加载游记
Python+Selenium自动化爬取携程动态加载游记
|
5月前
|
存储 数据采集 监控
Python定时爬取新闻网站头条:从零到一的自动化实践
在信息爆炸时代,本文教你用Python定时爬取腾讯新闻头条,实现自动化监控。涵盖请求、解析、存储、去重、代理及异常通知,助你构建高效新闻采集系统,适用于金融、电商、媒体等场景。(238字)
899 2
|
11月前
|
机器学习/深度学习 数据采集 API
Python自动化解决滑块验证码的最佳实践
Python自动化解决滑块验证码的最佳实践
|
6月前
|
存储 大数据 Unix
Python生成器 vs 迭代器:从内存到代码的深度解析
在Python中,处理大数据或无限序列时,迭代器与生成器可避免内存溢出。迭代器通过`__iter__`和`__next__`手动实现,控制灵活;生成器用`yield`自动实现,代码简洁、内存高效。生成器适合大文件读取、惰性计算等场景,是性能优化的关键工具。
345 2
|
7月前
|
传感器 数据采集 监控
Python生成器与迭代器:从内存优化到协程调度的深度实践
简介:本文深入解析Python迭代器与生成器的原理及应用,涵盖内存优化技巧、底层协议实现、生成器通信机制及异步编程场景。通过实例讲解如何高效处理大文件、构建数据流水线,并对比不同迭代方式的性能特点,助你编写低内存、高效率的Python代码。
300 0
|
8月前
|
数据采集 人工智能 API
推荐一款Python开源的AI自动化工具:Browser Use
Browser Use 是一款基于 Python 的开源 AI 自动化工具,融合大型语言模型与浏览器自动化技术,支持网页导航、数据抓取、智能决策等操作,适用于测试、爬虫、信息提取等多种场景。
1082 4
推荐一款Python开源的AI自动化工具:Browser Use
|
6月前
|
数据采集 监控 Shell
无需Python:Shell脚本如何成为你的自动化爬虫引擎?
Shell脚本利用curl/wget发起请求,结合文本处理工具构建轻量级爬虫,支持并行加速、定时任务、增量抓取及分布式部署。通过随机UA、异常重试等优化提升稳定性,适用于日志监控、价格追踪等场景。相比Python,具备启动快、资源占用低的优势,适合嵌入式或老旧服务器环境,复杂任务可结合Python实现混合编程。

推荐镜像

更多