链上事件触发外部操作

前置条件

  1. 您需要先在区块链实例中安装云服务集成, 并开通函数计算集成功能。

  2. 下载云服务集成示例代码

  3. 本地安装Node.js v8 环境(>=8.17.0)。

  4. 安装函数计算工具funcraft, funcraft介绍及安装方式

链上事件触发钉钉通知

本示例为您展示如何利用阿里云区块链云服务集成功能,将链上的事件推送至钉钉;当区块链上发生事件时,您在钉钉群中能够看到相应的通知。

事件流: Blockchain Node —> Cloud Service Intergration —> Function Compute —> Dingtalk

  1. 创建钉钉群,并添加自定义机器人。

    1. 进入钉钉群设置->智能群助手->添加机器,选择“自定义”。

    2. 这里以签名为例,安全设置选择加签。可以根据实际情况选择其他方式,可以参考钉钉群机器人

  2. 进入 event2dingtalk/fc 目录,修改以下内容。

    1. 按照注释修改 index.js 中的配置参数,填入钉钉回调地址、推送签名密钥。

    2. 修改 template.yml 中的函数计算服务名称和函数名称,默认服务名为”octopus”,函数名为”Event2Dingtalk”。更多配置方式可以参考 funcraft文档

  3. 使用 fun deploy 将函数部署到函数计算。

  4. 在控制台创建云服务集成函数计算触发器,更多可以参考配置函数计算触发器

    1. 配置触发器的事件类型为 Contract。

    2. 根据帮助,填写函数计算实例的相关信息,更多可以参考配置函数计算触发器

  5. 按照发起示例交易的步骤,在通道上发起示例交易。

  6. 当审批流创建、结束时,钉钉机器人会在群中发送消息。

链上事件触发短信通知

  1. 进入目录 blockchain2sms/fc, 修改以下内容:

    1. 按照注释修改 index.js 中的配置参数,填入具有调用短信服务权限的Access Key和 Access Key Secret。

    2. 根据您短信服务的配置,修改短信签名(SignName)、模版CODE(TemplateCode)和模版参数(TemplateParam)。

    3. 修改 template.yml 中的函数计算服务名称和函数名称,默认服务名为”octopus”,函数名为”BlockChain2SMS”。更多配置方式可以参考 funcraft文档

  2. 使用 fun deploy 将函数部署到函数计算。

  3. 在控制台创建云服务集成函数计算触发器。

    1. 配置触发器的事件类型为Contract

    2. 根据帮助,填写函数计算实例的相关信息,更多可以参考配置函数计算触发器

  4. 按照发起示例交易的步骤,在通道上发起示例交易。

  5. 当审批流满足条件结束时,您会收到短信通知。我们也可以在短信服务控制台看到如下发送记录。

发起示例交易

  1. 按照文档部署链码将示例链码 taskmgr 部署到通道中。

  2. 进入 blockchain2sms 目录,按照注释修改 main.js 中的配置参数,填入REST API地址、Refresh Token、通道名和智能合约名称。更多信息请参考文档使用REST API

  3. 执行 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=' }