阿里云七天云开发校园合伙人创造营 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

相关文章

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

基于Java开发一个极简版敏感词检测工具

《基于Java开发一个极简版敏感词检测工具》这篇文章主要为大家详细介绍了如何基于Java开发一个极简版敏感词检测工具,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录你是否还在为敏感词检测头疼一、极简版Java敏感词检测工具的3大核心优势1.1 优势1:DFA算法驱动,效率提升10

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

Java 与 LibreOffice 集成开发指南(环境搭建及代码示例)

《Java与LibreOffice集成开发指南(环境搭建及代码示例)》本文介绍Java与LibreOffice的集成方法,涵盖环境配置、API调用、文档转换、UNO桥接及REST接口等技术,提供... 目录1. 引言2. 环境搭建2.1 安装 LibreOffice2.2 配置 Java 开发环境2.3 配

Python38个游戏开发库整理汇总

《Python38个游戏开发库整理汇总》文章介绍了多种Python游戏开发库,涵盖2D/3D游戏开发、多人游戏框架及视觉小说引擎,适合不同需求的开发者入门,强调跨平台支持与易用性,并鼓励读者交流反馈以... 目录PyGameCocos2dPySoyPyOgrepygletPanda3DBlenderFife

使用Python开发一个Ditto剪贴板数据导出工具

《使用Python开发一个Ditto剪贴板数据导出工具》在日常工作中,我们经常需要处理大量的剪贴板数据,下面将介绍如何使用Python的wxPython库开发一个图形化工具,实现从Ditto数据库中读... 目录前言运行结果项目需求分析技术选型核心功能实现1. Ditto数据库结构分析2. 数据库自动定位3

Django开发时如何避免频繁发送短信验证码(python图文代码)

《Django开发时如何避免频繁发送短信验证码(python图文代码)》Django开发时,为防止频繁发送验证码,后端需用Redis限制请求频率,结合管道技术提升效率,通过生产者消费者模式解耦业务逻辑... 目录避免频繁发送 验证码1. www.chinasem.cn避免频繁发送 验证码逻辑分析2. 避免频繁