Serverless 云应用访问钉钉开放平台 | 学习笔记

本文涉及的产品
函数计算FC,每月15万CU 3个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 简介:快速学习Serverless 云应用访问钉钉开放平台

开发者学堂课程【钉钉应用云开发实战营:Serverless 云应用访问钉钉开放平台】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/909/detail/14403


Serverless 云应用访问钉钉开放平台

目录

1.如何访问开放平台

2.如何调用服务端 API

3.服务端 SDK 下载


一. 如何访问开放平台

首先创建钉钉会议室预定。

image.png

强调组织必须选为演示团队。

image.png

点击会议室预定

image.png

image.png

然后进行配置

进入应用开发:

image.png一个云应用,部署在云端

钉钉开放平台处于钉钉开放主页状态。在自己的应用访问钉钉的开发平台。

这样网络应该相通。则部署在阿里云上的云应用。网络环境需要有出口网关。

钉钉开放平台本不属于公网状态。则需要有一个先前的条件。部署此应用需要访问公网的能力。访问公网的能力,目前的函数计算。会有一个孤网状态。去访问公网的能力。

例如服务型的应用。

image.png

通过 SAE 部署:

image.png运输于用户专属网内部专有网络,没有访问公网的能力。

如果访问自己的数据库,在 vpc 内部买的 RPS ,访问自己公网上的数据库。

Java 代码介绍

包括服务层,控制层等,

前端代码处。

这是一个编译出来的。它的原代码为 project

下载出来,修订前端代码

编译出来的代码

现在进行部署

操作进议:A 网关分组超过限额。

需安释故 api 分组出来。有3种解

方案:

1、您可以停止未使用的应用;

2、您可以移步

https: //rosnext.console.aliyun.com/cn-shanghai/stacks 把废弃的名称删除。

3、或者移步到

https://apigateway.consolewaliyun.com/#/ cn-shanghai/groups/listH除过期的 api 分组;

4、请确保平台吊顶选择了正确的组织!

切换团队进行:再次部署操作!

[2021-04-2819:54:28]应用:会议宝预定

TEST环境「基础服务准备任务]资源栈没有变化,无需重新部署

[2021-34-28 19:54:19]应用:会议室预定

[基础服务沮备任务] ROS 偏差检测完或!

[2821-84-2819:54:23]应用:会谈室预定

[基础服务准备任务]执行成功!

[2021-84-28 19:54:24]应用:会议室预定

开始执行[ API 网关编排任务]

[2221-04-28 19:54;24]应用:会议空预定

[ API 网关编排任务]开始 ROS 梓差检测..-

[2021-04-28 19:54;24]应用:会议室预定

[ API 网关编排任务】 Detect stack drift when it is in (CREATE。FATLED) is not supported .外部系统错误玛

:NotSupported 外部系统错误消息:Detect stack drift when it is in (CREATE,FAILED) is not supported.,将忽略该错误!

[2021-04-28 19:54:25]应用:会议室预定 

将删除资源栈: wbgw_2021042800885218 ..-

[2821-54-2819:54:29]应用:会议室预定

资源楼: wbgw_2心2164288680521E 剧除成功!

[2021-04-2819:54:33]应用:会议室预定旳开始执行[ VPC 网络煌排任务]

[2021-84-26 19:54:33]应用:会议室预定

[ API 网关编排任务1执行配功!

[2021-34-2日19:54:33]应用:会议室预定

初始化 APIGateway 或功。

二级域名为 http://843459c1e1d04c9785a5e239880a88ec-

cn-shanghai.alicloudapi.co

[2021-04-28 19:54:33]应用:会议室预定

开始执行[ VPC 网络编排任务]

再次进行覆盖!

[2021- 04-28 19:55:421 应用:会议室预定

城名:

https ://test1yj fbm809 17syo0o03h. workbenchapi.com绑定到 API 网关 =级域名

http://843459c1e1d04c9785a5e239880a88ec-cn-shanghai.alicloudapi.com 成功!

请使用

https://test 1yj fbm80917syqoo83h.workbenchapi.com 进行测试验证(还需要

进行 QNAME 解析, 且域名生效有延迟,如果无法访问请耐心等待)

[2021-04- -2日19:55:42] 应用:会议室预定

TEST 环境的域名 test1yj fbm8B0917syqo o03h . workbenchapl.com CNAME 到 API 网关的二级域名

843459c1e1d04c9785a 5e239880a8ec-cn-shanghai. alicloudapi.com 尚未生效, 请稍等片刻!当命令行工具 dig/ns lookup/ping 等指令发现正确的解析记录后, 即可直接通过

城名正常访问该应用了。

[2021-84-28 19:55:42] 应用: 会议室预定云开发应用[ TEST ]环境部属成功! 

继续观看页面:进行访问。

image.png

Api 需要加白名单,服务端公网在此配置。

函数计算没有固定 IP 地址,拥有访问公网能力。

image.png进入超级管理员:

image.png

进入——跳转页面——读取参数——授权——启动应用信息

response = client. execute( request, accesstoken)

accesstoken :具有时效性,防止他人任意窃取。通过调用钉钉公共 api 获取。 

//从持久化存储中读取

string accessToken = getF romCache ( admin ? "adminToken" :” access Token", "access_ token"):

if (accessToken != null) {

return ServiceResult ,

success( accessToken);

DefaultDingTalkClient cllent = new Def aultDingTalkClient (admin ? UrlConstant.URl ADMIN GET TOKEN : URL GET TOKEN):

if (adnin) (

apissoGettokenRequest request = new 0apiSsoGet tokenRequest();

//企业Id

request . setCorpid(appConfig. getCorpId());

//秘钢ssosecret

//这里必须填写专属的SS0sec ret.

request. setCorpsecret (appConfig. getSsoSeret());

request. sethttpMethod("GET");

0apiSsoGettokenResponse response = null:

try {

response = client . execute( request);

}  catch (AplException e) {

Log . error("getAccessToken failed", e);

return ServiceResult. failure(e . getErrCode(), e. getErrMsg()

每种方法请求参数是不一样的。

通过授权码换取用户基本信息。可以知道用户身份。应用随而建立登陆台。根据用户操作进行保存。


二.如何调用服务端 API

首先开发部署,新建应用配置。如下图:

开始部署..- 

发送部吾任务完成...

[2021-04-28 19:48:;23]应用:会议室预定―云应用[ TEST ]环境开始部署

[2021-04-28 19:48:30]应用:会议预室定您可以在 Flow 查看详细日志 

https://flow.aliyun . com/pipelines/1312632/current?channel=wo rkbench

[2021-34-2B 19:48:23]应用:会议室预定   开始执行[项目构建任务]

[2021-04-2B 19:48:34]应用:会议室预定   java镜像构建-申请运行环境(日5}执行成功

[2021-04-2B 19:48:38]应用:会议室预定   java镜像构建-克隆代码(2s)执行成功

[2021-04-2B 19:48:38]应用:会议室预定   java镜像构建-清理工作区[2s)执行成功

……… 

可能出现以下问题:

操作运议: API 网关分组超过限额,需宝释故 api 分组出来。有3种解决方案:

1、您可以停止未选用的应用;

2.您可以移步

https: / /rosnext.console. aliyun.com/cn-shanghai/stacks 把废弃的名称形如 wbd *******************的资源线删除;

3. 或者移步到

https://apigateway.con5ole,aliyun.com/#/ cn-shanghai/groups/list删除过期的 api 分组;

4、请确保平台吊顶选择了正确的组织!


三.如何调用服务端 API

请求方式:接口使用的 HTTP 方法和请求协议。所有接口都使用HTTPS协议。

请求地址∶接口的请求地址。钉钉服务端接口的访问域名为―https: /oapi.dingtalk.com。请求参数使用"&"分隔。请求地址中的大写单词是需要替换的变量值。

请求包体/参数说明︰提供请求参数示例及说明,参数说明包括字段含义、取值范围,开发者在设计数据结构时,应参考该定义范围。返回结果/参数说明:提供返回参数示例及说明。

注意:

所有接口在调用失败时都会返回 errcode 和 errmsg 。开发奢可根据 errcode 和 errmsg 排查问题。

请不要仅根据 errmsg 判断调用是否成功。当请求返回结果中返回了 errcode 且不为0时可判断为请求失败。errmsg 是对 errcode 的说明,供开发者参考排查问题。

我们对接口的返回字段做了简化处理,如果字段的值为空或者 null,将不返回该字段。

接口调用流程

如下图所示,在调用钉钉服务媚接口前,您需要完成以下准备工作:

1.添加接口调用权限。应用创建后默认只开放登录和消息通知接口的调用权限,您需要根据开发需要,添加对应的接口使用权限。详细

信息请参考添加接口调用权限。

2.获取应用的 access_foken 。access_token 相当于是身份凭证。调用接口时,通过 access_token 来鉴权调用者身份。

企业内部应用请参考获取 access_token

第三方企业应用请参考获取第三方应用凭证

image.png

调用方式

钉钉开放平台提供了 API Explorer 和 SDK 方便开发者调用服务端APl。

●API Explorer: .

API Explorer是可视化在线 API 调用工具,可实时查看 API 请求和返回结果

访问地址: https://open-dev.dingtalk .com/apiExploer#/?

devType=org&a pi= dingtalkoapigettoken.

●SDK:

钉钉开放平台提供了 Java. PHP. Python、 .NET SDK 供开发者使用。单击服务端SDK下载。


四.服务端 SDK 下载

SDK 请求示例

”下面是使用 SDK 调用 API 的请求示例:

●Java

DingTalkClient client = new DefaultDingTalkclient( "https://oapi. dingtalk. com/usex/get");

oapiUserGetRequegt req = new oaplUserGetRequest( ) ;

req. setUserid("userid1");

点击纠错

req. setHttpMethod( "GET");

oapluserGetResponse rsp = client .execute (reg,accessToken) ;

●PHP

include "TopSdk . php" ;

// DingTalkConstant: :$METHOD_ GET 要与下面调用接口ur1要求的保持一致

$c - new DingTalkClient (DingTa lkConstant : :$CALL_ TYPE_ OAPI, DingTalkConstant : : SMETHOD_ GET.

DingTalkConstant : :$F0RMAT_ JSON);

$req = new oapiUserGetRequest( );

$req- >setUserid ("userid1" );

$resp=$c->execute($req,$accesToken, " https:/ /oapi .dingtalk . com/user/get" );

var_ _dump (Sresp)

●Python .

import dingtalk .api

request = dingtalk. api. OapiGettokenRequest( "https://oapi.dingtalk .com/user/get")

request. userid- "userid1"

sresp- se->exeeute($req, saeeessToken, https:/ /oapi .dingtalk. con/user/get" );

var_ dimp($resp)

”Fythgr!

import dingtalk .api

点击纠错

request = dingtalk. api .

oapiGettokenRequest[ "httpst//oapi.dingtalk。com/umer/geL"I

request. userid= "user⊥d1,

response = requeat.getkesponse()

irint (respons6) 

●.NET

IDingTalkclient client = new Defaul tDingTalkc1 ient ( "https; //oapi .cdingtalk . com/user/get");

oapiuserGetRequeat req = nev oapiUaerGetRequest( );

reg.userid - "ueeridI";

Teq. SetattpMethod("GET");

oapiUaerGetReaponse rsp = client. Execute(reqr acceseToken)

请求示例说明:

1.定义 Client 对象,设置接口地址 UR 。一般情况, 无需拼接 URL 后面的参数,比如 access token ; 需要注意部分Post 接口,需要在 URi 后拼接除 acce5s_ 51oken 外的个别参数。

2:构造 Request 对象,接口对应的 requestx 对象,一般 规则是 Oapi+接口 Path 驼峰形式+Request ,如/user/get接口,请求对象是 QanillcorGerPecuact 。

3、调用 Request 的方法设置参数,注意参数 HttpMethod ,默认是 POST . 如果是 GET 类型接口,需要这样设置requests etHttpMethod!"GET").

4.调用 clienL.execute 执行,其中 asess stoken 同样可以使用 SOK 获取到。同时,/gettoken, /sns/gettoken, iservice/get suite. token 筹狱取 token 的接口在调用execute时。元需再传 token 参数。

5.执行后得到 Response 对象,是与 Request 对应的,然后可获取执行结果。

SDK 下载

环境依赖

●Java SDK 需要依赖 Java SE/EE 1.5及以上

●.NET SDK 需要依赖. NET Framework 2.0及以上(不支持 Windows Phone 平台)

下载地址:

●Java 版本:点击下载

●PHP 版本:点击下载

●Python 版本:点击下载

●Python3 版本: 点击下载

●.NET 版本:点击下载

●.NETCore版本: 点击下载

文档格式约定

每个接口文档会按照如下格式提供信息: .

请求方式: GET/POST (HTTPS}

请求地址:

https t//oapi . dingtalk . com/ gettoken?appkey-APP KEY6appsecret-APP SECRET

请求包体:

参数说明:

返回结果:

示例

●请求方式:接口使用的 HTTP 方法和请求协议。所有接口都使用 HTTPS 协议。

●请求地址:接口的请求地址。钉钉服务端接口的访问域名为 https ://0api . dingtalk.com 。请求参数使用“&”分隔。请求地址中的大写单词是需要替换的变量值。

●请求包体/参数说明:提供请求参数示例及说明,参数说明包括字段含义、取值范围,开发者在设计数据结构时,应参考该定义范围。

●返回结果/参数说明:提供返回参数示例及说明。

相关文章
|
2月前
|
人工智能 自然语言处理 Serverless
阿里云函数计算 x NVIDIA 加速企业 AI 应用落地
阿里云函数计算与 NVIDIA TensorRT/TensorRT-LLM 展开合作,通过结合阿里云的无缝计算体验和 NVIDIA 的高性能推理库,开发者能够以更低的成本、更高的效率完成复杂的 AI 任务,加速技术落地和应用创新。
130 13
|
2月前
|
人工智能 数据可视化 API
10 分钟构建 AI 客服并应用到网站、钉钉或微信中测试评
10 分钟构建 AI 客服并应用到网站、钉钉或微信中测试评
90 2
|
3月前
|
机器学习/深度学习 机器人 Serverless
FaaS 的应用场景
FaaS 的应用场景
|
3月前
|
Serverless API 异构计算
函数计算产品使用问题之修改SD模版应用的运行环境
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
3月前
|
运维 Serverless 网络安全
函数计算产品使用问题之通过仓库导入应用时无法配置域名外网访问,该如何排查
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
3天前
|
运维 监控 Serverless
Serverless架构在图像处理等计算密集型应用中展现了显著的优势
Serverless架构在图像处理等计算密集型应用中展现了显著的优势
11 1
|
14天前
|
存储 消息中间件 人工智能
ApsaraMQ Serverless 能力再升级,事件驱动架构赋能 AI 应用
本文整理自2024年云栖大会阿里云智能集团高级技术专家金吉祥的演讲《ApsaraMQ Serverless 能力再升级,事件驱动架构赋能 AI 应用》。
|
14天前
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
41 3
|
15天前
|
运维 Serverless 数据处理
Serverless架构在图像处理等计算密集型应用中展现了显著的优势
Serverless架构在图像处理等计算密集型应用中展现出显著优势,包括加速研发交付、降低成本、零运维成本、高效资源利用、自动扩展、实时数据处理及快速原型开发,为高并发、动态需求场景提供高效解决方案。
30 1
|
20天前
|
运维 Serverless 数据处理
Serverless架构在图像处理等计算密集型应用中展现出显著优势
【10月更文挑战第6天】Serverless架构在图像处理等计算密集型应用中展现出显著优势,包括加速研发交付、成本效益、零运维成本、高效资源利用、自动扩展能力、实时数据处理及快速原型开发,为高并发、动态需求场景提供高效、灵活的解决方案。
39 4

热门文章

最新文章

相关产品

  • 函数计算