阿里云七天云开发校园合伙人创造营 Day 3

2024-02-03 18:59

本文主要是介绍阿里云七天云开发校园合伙人创造营 Day 3,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

云开发7天训练营学习计划

在这里插入图片描述

阿里云云开发平台校园合伙人招募 主要提供了 云开发平台 进行 Web 开发的体验,包括以下内容:

  • 认识 Serverless 云开发 (8.3) :学习云开发平台的基本概念和操作、团队协同、应用的开发、部署

  • 云函数 (8.4) :函数的基础概念,架构,调用方式、静态文件的托管方式

  • 开发Web接口 (8.5):学习使用函数开发 Web 接口、多个函数的同时开发,资源复用

  • 服务端渲染 (8.6):学习使用函数接入传统 koa 中间件,构建 Web 应用

  • 数据库调用 (8.7):学习接入数据库,调用数据存储

  • 多媒体托管和支付 (8.10):学习函数的文件多媒体托管和支持能力

  • 一体化方案开发实战 (8.11):学习和前端 ( react / vue ) 代码一起开发的一体化方案

完结撒花 🎉 ,点击上面的链接可以回顾这七天的内容哦~

Day 3: 使用 Midway Serverless 开发函数接口

关于 Midway Serverless 的相关介绍,请参考 Day2 的文章

每日任务

今日任务为使用 Midway Serverless 创建一个函数,通过浏览器访问函数接口,返回 Midway Serverless 加上名字

在这里插入图片描述

1. 登入云开发平台创建应用

登入云开发平台,进入到应用列表,点击 创建新应用,新建一个 WEB 场景的 Midway Serverless 一体化解决方案 (For NodeJS10)

创建好后,进入 开发部署

在这里插入图片描述

2. 开发调试

进入 IDE 后,先在终端执行:

npm i --registry=https://registry.npm.taobao.org

安装 npm 依赖,因为依赖包很多,这里用了淘宝的镜像源,安装会更快。

此时我们需要自定义这个函数,打开函数文件 index.ts,位置在 src/apis/config/index.ts

在这里插入图片描述

修改代码:

import { Provide, Func } from '@midwayjs/decorator'
@Provide()
export class IndexService {@Func('index.handler')async handler() {return {message: 'Hello Midway Serverless MicroLOONG', //修改这里}}
}

同时我们可以看到项目目录中有很多 tsx 文件,说明这是一个 Midway Serverless 和 React 一体化的项目

可以尝试执行 npm run dev 运行项目。

在这里插入图片描述

启动时会自动发一个请求到函数端拿数据,渲染到页面。点开上图所示的链接即可访问到该页面,在本地运行的话需要访问 locathost:3000

在这里插入图片描述

按 F12 打开开发者人员工具,点进网络,也可查看到 index 这个函数及其返回的内容。

本示例也是一个 Midway Serverless 项目,可以参考 Day2 的文章,使用 Midway 函数开发命令行工具,执行 f invoke -f index 调用该函数

任务拓展

创建一个会复读的钉钉群自定义机器人。

首先在钉钉开放平台登录开发者后台,按提示创建企业。

进入 应用开发,创建机器人。

在这里插入图片描述

进入机器人的管理页面,点击 版本管理与发布,用手机钉钉扫描 调试 的二维码进调试群,并上线机器人。

在这里插入图片描述

使用 PC 版钉钉进入群,在右上角 群设置,进入 智能群助手 可以看到刚刚创建的机器人。

其实可以直接在现有的任何群创建机器人,部分群需要成为群主或管理员才能添加机器人,不过这种方式不能实现 @机器人 触发回话

在机器人设置里,开启消息推送,复制 Webhook 备用,在下方 安全设置 中需要设置其中一项,比如设置自定义关键词,之后可以提供关键词触发机器人对话。

在这里插入图片描述
返回 IDE 修改函数文件 index.ts 代码:

import { Provide, Func, Inject } from '@midwayjs/decorator'
import axios from 'axios';  //导入axios包
@Provide()
export class IndexService {@Inject()                 //加入Inject注解ctx;                      //函数执行上下文@Func('index.handler')async handler() {return {message: 'Hello Midway Serverless MicroLOONG',}}@Func('ding.handler')     //增加ding函数async ding() {const hook = '';      //此处填写Webhookconst body = this.ctx.request.body;await axios.post(hook, {msgtype: 'markdown',markdown: {title: 'test',text: '复读:' + body.text.content, //引号内的内容可以为刚刚填写的关键词}});}  
}

由于增加多了一个 ding 函数,这里修改函数定义文件 f.ymlfunctions 下定义这个 ding 函数。

functions:ding:handler: ding.handlerevents:- apigw:path: /api/ding

执行 npm run dev 运行项目,点击链接,在链接后面加上 /api/ding 就能访问到该函数。

将完整带有 /api/ding 的链接复制到钉钉开放平台上,具体位置为机器人管理的 开发管理

这里的 服务器出口IP 可以到 IP 查询网站上获取该链接的 IP 地址。

在这里插入图片描述

至此,回到钉钉群发送 @机器人的名字 + 消息,可以看到机器人回话并返回发送的消息。

在这里插入图片描述
可能出现的问题:

  1. 终端可能会报错,不过不用理会(content 变量是发送消息的内容):
TypeError: Cannot read property 'content' of undefinedat IndexService.ding (/home/admin/workspace/codeup.aliyun.com/5f17df43d248146039337cf0/repo_2020-08-06_2020080600072285/.faas_debug_tmp/dist/index.js:30:41)at FaaSStarter.invokeHandler (/home/admin/workspace/codeup.aliyun.com/5f17df43d248146039337cf0/repo_2020-08-06_2020080600072285/node_modules/@midwayjs/faas/dist/starter.js:135:42)
  1. 如果机器人不回话,请检查钉钉开放平台-开发管理-消息接收地址有没有填错,版本管理与发布里的 调试和上线 有没有点击,检查函数文件 index.ts 的代码和 Webhook,确保机器人设置的底部已经生成了 POST 地址和 TOKEN。

在这里插入图片描述

  1. 保持项目运行,机器人才能一直在线,如有需要可以将项目部署到线上环境。

总结

钉钉群机器人之所以能回话,主要是函数和 Webhook 的作用。

在这里插入图片描述

Webhook 是一个 API 概念,类似触发器。当事件发生时,源网站可以发起一个 HTTP 请求到接口配置的 URL。配置之后,用户可以通过在一个站点触发事件,之后再调用另一个站点的行为。触发的事件可以是"push 代码到远程仓库",或者"post 一个评论到博客"等等。

利用 Webhook,还可以在钉钉群添加 GitHub 机器人,机器人可以发送代码提交、工单变更、Pull Request 和评论的通知。当然还有更多其它的用途。

对创造营后续内容感兴趣的朋友们记得 关注我 哦~

这篇关于阿里云七天云开发校园合伙人创造营 Day 3的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/675087

相关文章

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示