服务端 Webhook

CFC Webhook

对于比较简单的 Opencard 应用,开发者也可以通过百度智能云 CFC 功能中的 open-card-webhook 模板函数实现 Webhook 后端。开发者基本不需要有任何开发能力,即可完成卡片接入。下面对 CFC 接入方式进行简单的介绍。

什么是 CFC

百度智能云的函数计算 CFC (Cloud Function Compute) 产品,提供基于事件触发、全托管的云端计算能力。

CFC 适合的场景

适合使用 CFC Webhook 而不是开发者自己开发 Webhook 的场景为:

  • 开发者没有人力/服务器去开发和维护一个自有的 Webhook 服务;
  • 开发者对接的 OpenCard 卡片 Webhook 实现比较简单,从intentdata只是简单的 Key Value 映射,不需要复杂的后端系统;
  • 开发者覆盖的 intent 数据量不大,不超过一千条; 在这种场景下,开发者可以通过 CFC 中现成的模板函数实现 OpenCard 所需的 Webhook 功能。不需要自己运维任何 Web 服务器,不需要自己开发 JWE 加解密的功能,只需要配置必要的物料(见下文),即可提供标准的 OpenCard Webhook 服务以接入开放平台。

注意:CFC 只是一种托管的 Webhook 实现,即使开发者初期使用 CFC,后续也可以随时迁移到自有服务器上。

完成一个CFC的webhook服务功能需要如下步骤:

1.登录百度云智能云平台

点击 立即购买,可以看产品定价文档,绝大部分的用户都将在免费的服务范畴内:

百度智能云页面

2. 创建函数

  • 选择: 从模板创建函数

  • 蓝图搜索关键词: opencard

  • 选择 open-card-webhook-python:函数模板选择

  • 函数配置:按照要求填写函数名(用于标识自己创建的函数)

  • 下一步:触发器配置

  • 配置项如下:

    • 触发器:HTTP触发器
    • URL路径:更具自己的情况填写 例如 “/opencard/webhook”
    • HTTP方法:选择POST
    • 身份验证:不验证
    • 提交 生成CFC

3. 进入代码编辑页

提交成功

代码编辑页里,如果没有特殊的需求,您只需要修改用户自定义的配置项部分:即 psk_tabledata

psk_table:

注意:请务必将 PSK 改为自己正在使用的 PSK,不要使用默认的 PSK,否则存在数据泄露风险。一般来说,psk_table 只维护两个 PSK 即可,当前正在使用的 kid 和 PSK,以及上一次使用的 kid 和 PSK。

  1. {
    "0":"MTExMTExMTExMTExMTExMQ", // kid = "0" 时候的psk,
    "1":"ATExMTExMTExMTExMTExMQ", // kid = "1" 时候的psk
    }

data:

  1. {
    "mobile": { // 当 surface 为 mobile 时,需要返回的数据,需要符合对应卡片的 Schema
    "toolname_证件照拍摄": { // 序列化后的 intent,序列化方法见下方
    "jump_url": "/page/abc",
    "name": "我的识图",
    "description": "这是我们的描述",
    "button_text": "点击识图",
    "image": "https://example.com/1.png"
    },
    "toolname_证件照": {
    "jump_url": "/page/abc",
    "name": "我的识图-1",
    "description": "这是我们的描述-2",
    "button_text": "点击识图",
    "image": "https://example.com/2.png"
    }
    },
    "wise_h5": { // 当 surface 为 web_h5 时,需要返回的数据(可为空)
    "toolname_证件照拍摄": {
    "jump_url": "/page/123",
    "name": "我的识图",
    "description": "这是我们的描述",
    "button_text": "点击识图",
    "image": "https://example.com/1.png"
    }
    }
    }

上述数据中key的生成规则:

toolname_证件照拍摄 是根据 intent JSON 串中的 key 按字母序升序排序,然后用下划线连接 k1_v1_k2_v2。

  • 举例 1: intent = {“a”:”hello”,”b”:”word”} 最终key生产a_hello_b_word
  • 举例 2: intent 中包含空 跳过 例如 intent = {“a”:”hello”,”b”:””,”c”:”word”} 最终key = a_hello_c_word

4. 获取 CFC Webhook HTTP URL

webhoook地址

在触发器菜单即可获取 CFC Webhook 的 HTTP URL。由于 Opencard 仅支持 HTTP 协议,还需要将 URL 中的 Scheme 从 https:// 修改为 http://。然后将 HTTP URL 提交到开放平台的 Webhook URL 配置中即可。