前置条件
您需要先在区块链实例中安装云服务集成, 并开通函数计算集成功能。
下载云服务集成示例代码。
本地安装Node.js v8 环境(>=8.17.0)。
安装函数计算工具funcraft, funcraft介绍及安装方式。
链上事件触发钉钉通知
本示例为您展示如何利用阿里云区块链云服务集成功能,将链上的事件推送至钉钉;当区块链上发生事件时,您在钉钉群中能够看到相应的通知。
事件流: Blockchain Node —> Cloud Service Intergration —> Function Compute —> Dingtalk
创建钉钉群,并添加自定义机器人。
进入钉钉群设置->智能群助手->添加机器,选择“自定义”。
这里以签名为例,安全设置选择加签。可以根据实际情况选择其他方式,可以参考钉钉群机器人。
进入
event2dingtalk/fc目录,修改以下内容。按照注释修改 index.js 中的配置参数,填入钉钉回调地址、推送签名密钥。
修改 template.yml 中的函数计算服务名称和函数名称,默认服务名为”octopus”,函数名为”Event2Dingtalk”。更多配置方式可以参考 funcraft文档。
使用
fun deploy将函数部署到函数计算。在控制台创建云服务集成函数计算触发器,更多可以参考配置函数计算触发器:
配置触发器的事件类型为 Contract。
根据帮助,填写函数计算实例的相关信息,更多可以参考配置函数计算触发器。
按照发起示例交易的步骤,在通道上发起示例交易。
当审批流创建、结束时,钉钉机器人会在群中发送消息。
链上事件触发短信通知
进入目录
blockchain2sms/fc, 修改以下内容:按照注释修改 index.js 中的配置参数,填入具有调用短信服务权限的Access Key和 Access Key Secret。
根据您短信服务的配置,修改短信签名(SignName)、模版CODE(TemplateCode)和模版参数(TemplateParam)。
修改 template.yml 中的函数计算服务名称和函数名称,默认服务名为”octopus”,函数名为”BlockChain2SMS”。更多配置方式可以参考 funcraft文档。
使用
fun deploy将函数部署到函数计算。在控制台创建云服务集成函数计算触发器。
配置触发器的事件类型为Contract。
根据帮助,填写函数计算实例的相关信息,更多可以参考配置函数计算触发器。
按照发起示例交易的步骤,在通道上发起示例交易。
当审批流满足条件结束时,您会收到短信通知。我们也可以在短信服务控制台看到如下发送记录。
发起示例交易
进入
blockchain2sms目录,按照注释修改 main.js 中的配置参数,填入REST API地址、Refresh Token、通道名和智能合约名称。更多信息请参考文档使用REST API。执行
npm install安装依赖包,通过node main.js发起示例交易。
成功示例输出
Data pushed to blockchain with transaction 701c7006f26aed8457273a00bbfcc8cea4d75eac958996e07837036ea7e2fdac
{ id: '701c7006f26aed8457273a00bbfcc8cea4d75eac958996e07837036ea7e2fdac',
status: '200',
events:
[ { type: 'Contract',
platform: 'Fabric',
instance_id: 'csi-e2ehmfqasth-bcw7tzao2dzeo',
network: '',
id: '',
name: 'event-create-task',
content: 'eyJuY...TAz' }
Data pushed to blockchain with transaction 60a06a189415db587b49cbf91b46467bce1ea16490b19f6dfc8d520aa31240bc
{ id: '60a06a189415db587b49cbf91b46467bce1ea16490b19f6dfc8d520aa31240bc',
status: '200',
events:
[ { type: 'Contract',
platform: 'Fabric',
instance_id: 'csi-e2ehmfqasth-bcw7tzao2dzeo',
network: '',
id: '',
name: 'event-task-finished',
content: 'eyJuY...p7In0=' } ],
data: 'eyJu...In0=' }
Data pushed to blockchain with transaction 7810e0496a1c91a16102736b00a6f26da0baa42874a907fff26bff1b7eb3bf27
{ id: '7810e0496a1c91a16102736b00a6f26da0baa42874a907fff26bff1b7eb3bf27',
status: '200',
events: [],
data: 'eyJu...nIn0=' }