wechaty / puppet-whatsapp

Wechaty Puppet for Whatsapp
https://npmjs.com/package/wechaty-puppet-whatsapp
Apache License 2.0
24 stars 17 forks source link

关于 WhatsApp 动态 #368

Open su-chang opened 2 years ago

su-chang commented 2 years ago

关于 whatsapp 动态

双方必须互在对方通讯录中才可以看到对方动态,否则无法查看动态。

动态支持的种类:

可以针对动态进行回复(回复的形式:文字,表情,图片,视频)

若动态被查阅后,会有对应的ack变动(仅针对初次被查看),且目前无法统计到观看人数和具体成员。

如何区分动态和消息

可以根据 isStatus 字段结合 to 字段来判断当前消息是否为动态消息。

"to": "status@broadcast",
"isStatus": true,

数据结构

{
  "_data": {
    "id": {
      "fromMe": true,
      "remote": "status@broadcast",
      "id": "3AE6D3A6CE1DB154C942",
      "participant": "8613126768525@c.us",
      "_serialized": "true_status@broadcast_3AE6D3A6CE1DB154C942_8613126768525@c.us"
    },
    "body": "这是一条动态消息",
    "type": "chat",
    "t": 1653377488,
    "notifyName": "苏畅",
    "from": "8613126768525@c.us",
    "to": "status@broadcast",
    "author": "8613126768525@c.us",
    "self": "in",
    "ack": 1,
    "isNewMsg": true,
    "star": false,
    "recvFresh": true,
    "isFromTemplate": false,
    "thumbnail": "",
    "broadcast": false,
    "mentionedJidList": [],
    "isVcardOverMmsDocument": false,
    "backgroundColor": 4287391886,
    "font": 0,
    "isForwarded": false,
    "hasReaction": false,
    "productHeaderImageRejected": false,
    "lastPlaybackProgress": 0,
    "isDynamicReplyButtonsMsg": false,
    "isMdHistoryMsg": false,
    "requiresDirectConnection": false,
    "pttForwardedFeaturesEnabled": true,
    "isEphemeral": false,
    "isStatusV3": true,
    "links": []
  },
  "id": {
    "fromMe": true,
    "remote": "status@broadcast",
    "id": "3AE6D3A6CE1DB154C942",
    "participant": "8613126768525@c.us",
    "_serialized": "true_status@broadcast_3AE6D3A6CE1DB154C942_8613126768525@c.us"
  },
  "ack": 1,
  "hasMedia": false,
  "body": "这是一条动态消息",
  "type": "chat",
  "timestamp": 1653377488,
  "from": "8613126768525@c.us",
  "to": "status@broadcast",
  "author": "8613126768525@c.us",
  "deviceType": "ios",
  "isForwarded": false,
  "forwardingScore": 0,
  "isStatus": true,
  "isStarred": false,
  "broadcast": false,
  "fromMe": true,
  "hasQuotedMsg": false,
  "vCards": [],
  "mentionedIds": [],
  "isGif": false,
  "isEphemeral": false,
  "links": []
}
{
  "_data": {
    "id": {
      "fromMe": true,
      "remote": "status@broadcast",
      "id": "3A39AF5761502FE6273A",
      "participant": "8613126768525@c.us",
      "_serialized": "true_status@broadcast_3A39AF5761502FE6273A_8613126768525@c.us"
    },
    "body": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDABEMDQ8NCxEPDg8TEhEUGSocGRcXGTQlJx8qPTZBQDw2OzpETGJTREhcSTo7VXRWXGVobW5tQlJ4gHdqf2JrbWn/2wBDARITExkWGTIcHDJpRjtGaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWn/wgARCABgADYDASIAAhEBAxEB/8QAGwAAAgMBAQEAAAAAAAAAAAAABAUAAwYCAQf/xAAYAQADAQEAAAAAAAAAAAAAAAAAAQMCBP/aAAwDAQACEAMQAAAAz2qx/wBFTwW8zr1p2nbo2sPPYkRsss6lZnlgqKzOHt5FRCoBmeZIsbZHJX+8MOSOXmmWwaZFt0cap31N1cNOCut4GhMy6RzU3H12DNkvRz6EzKG2m8iOBYh0tPJ0Zw24Kh53x1SHk8gf/8QAHhEAAgICAgMAAAAAAAAAAAAAAAECERAhAxIgMUH/2gAIAQIBAT8ATGR94Uqk/CMabPpssU6m0yLt4olubOMtFo7bbFK8/wD/xAAbEQEAAQUBAAAAAAAAAAAAAAABEAACERIhIP/aAAgBAwEBPwBIYeh4Xh41zaNJibR1MFXxirnU7WmSf//EADoQAAEDAgMEBggDCQAAAAAAAAECAxEABAUSIRMxQVEGYXGBocEUIzJCcpGx4RU00SIkJTNDUlNjgv/aAAgBAQABPwDCHj+IsLOiVnZK793jFO2kpKY3iKbbLTqQd6Dr3GujC4wot/4nnE+M+dFWs10sXlwK4H9ykpo1hqS406lJ1CSpPUREeNWqRd2LFyB/NbCvmKxOx2V2uE6FRPnXR1WX0xvmtDg/6SP0oySIy5ePOulx/gxn3nUxRGgq2bDOCl1tAzSUZyd8ncK6HPB/CVMKIKmFxA5K1HiSO6sbtrVoek3bgbbSOe88qucdftrxf4cpCWihKZyzMa8d280rpDiy992ofCkDyp6/u7pOW4uHHEgzClSK0yCSN9W9qpWGgBUJW5nAJ04jzFYAp3CUOhWzWt5UJSlQI04msdxB++vnLlSi42k5Up90AcYqzaVchWxTnyxPfQw+4PuAdp+1OYS65Gd0IHIUMGRk0hzr4/Wnn9lZM2hRAfKghR7v1pOIOtrOVawYykjfHKre7aWUtZFSrTWsKY2b9whuYOUjxrZu6gk60bdfKtkrKE7orE1rYbtHQIyvEiR1Ip2Nu5G7MfrVl+ab+KsMWU3r0cW0/U0VnU8ZFLdKhA0oEqBnnV7bru0WzKCZ2xHYIH6dVXacl4+nk4oeNWuly18QrDj+/OD/AFj6miamkHSsFRtUOhX9PKUzwmZj5VfYS49iL7zexSypZIk0uxFvbbUrSVz7KU6RzmsLTtMRKZiWvOhaKUoDONeqjh5BjaD5ULBcwlYPdXR9xxaXVKBylCSNNJ1o6p+dXn5NXZ5isNdDWJJXv9UfqKbvczqBlGpApS/Wx1Uog6ZsvXWFwxaOpkqCFcB1Cm3FOOQ3cunOo5UFkaTwpvD/AElos3IWQfeACSPGl271pit222A4LdJJlYH7OhHaaaxFeZKtkNCD7X2pWOSvN6OodixQxtsrldu4RG4EUzcuJZWhtJUpbh4cgKfZvBcLW004BmkQmi9epMLLgPIprD7dTt88+FShbKs0nVJ4D5CmvYHZRo1h4DNsVXCSEvKkDjlj7U29buISrKUZlQMpnTvrEwUXC22vW5T7QIEj7VZPTiTeRxZzSMu4bjTZEEDgSKJomv/+AAMA/9k=",
    "type": "image",
    "t": 1653379386,
    "notifyName": "苏畅",
    "from": "8613126768525@c.us",
    "to": "status@broadcast",
    "author": "8613126768525@c.us",
    "self": "in",
    "ack": 1,
    "isNewMsg": true,
    "star": false,
    "recvFresh": true,
    "interactiveAnnotations": [],
    "deprecatedMms3Url": "https://mmg.whatsapp.net/d/f/ApqewmrW6sxBI0assipX7JieuyJ3Li_GNN9ZkRmZshaE.enc",
    "directPath": "/v/t62.7118-24/34621241_715083526580060_6368983793212164355_n.enc?ccb=11-4&oh=01_AVzAxQey8OEA4IpGP0JNO25a30S-dRk9NWi0GGvxU5qkfw&oe=62B3AE31",
    "mimetype": "image/jpeg",
    "filehash": "LtE7EtNVjHpryDbkMvNmsmBpM+kSr3V3arcl3NwU9gc=",
    "encFilehash": "CyOtdJ3Yd0Bon+x46BcWFYnJyiE4k8JKvoVEoIV7qHQ=",
    "size": 93559,
    "mediaKey": "CaMbCiY2liS7q5pPV0/GPc4ee6lYJShwIsoYK/AjeRc=",
    "mediaKeyTimestamp": 1653379378,
    "isViewOnce": false,
    "width": 608,
    "height": 1080,
    "staticUrl": "",
    "scanLengths": [7200, 34092, 19338, 32927],
    "scansSidecar": {},
    "isFromTemplate": false,
    "broadcast": false,
    "mentionedJidList": [],
    "isVcardOverMmsDocument": false,
    "isForwarded": false,
    "hasReaction": false,
    "productHeaderImageRejected": false,
    "lastPlaybackProgress": 0,
    "isDynamicReplyButtonsMsg": false,
    "isMdHistoryMsg": false,
    "requiresDirectConnection": false,
    "pttForwardedFeaturesEnabled": true,
    "isEphemeral": false,
    "isStatusV3": true,
    "links": []
  },
  "mediaKey": "CaMbCiY2liS7q5pPV0/GPc4ee6lYJShwIsoYK/AjeRc=",
  "id": {
    "fromMe": true,
    "remote": "status@broadcast",
    "id": "3A39AF5761502FE6273A",
    "participant": "8613126768525@c.us",
    "_serialized": "true_status@broadcast_3A39AF5761502FE6273A_8613126768525@c.us"
  },
  "ack": 1,
  "hasMedia": true,
  "body": "",
  "type": "image",
  "timestamp": 1653379386,
  "from": "8613126768525@c.us",
  "to": "status@broadcast",
  "author": "8613126768525@c.us",
  "deviceType": "ios",
  "isForwarded": false,
  "forwardingScore": 0,
  "isStatus": true,
  "isStarred": false,
  "broadcast": false,
  "fromMe": true,
  "hasQuotedMsg": false,
  "vCards": [],
  "mentionedIds": [],
  "isGif": false,
  "isEphemeral": false,
  "links": []
}
{
  "_data": {
    "id": {
      "fromMe": true,
      "remote": "status@broadcast",
      "id": "3A56A5C434DC260F7960",
      "participant": "8613126768525@c.us",
      "_serialized": "true_status@broadcast_3A56A5C434DC260F7960_8613126768525@c.us"
    },
    "body": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDABEMDQ8NCxEPDg8TEhEUGSocGRcXGTQlJx8qPTZBQDw2OzpETGJTREhcSTo7VXRWXGVobW5tQlJ4gHdqf2JrbWn/2wBDARITExkWGTIcHDJpRjtGaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWn/wgARCABgAC0DASIAAhEBAxEB/8QAGgABAAMBAQEAAAAAAAAAAAAAAAECAwUEBv/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAD7Hbl9GtAZzcYzzPeujS6YXWPF6+T0ZfQkkJGGkqlAlAAAAhSSzKxNqWX/xAAWEQADAAAAAAAAAAAAAAAAAAAQETD/2gAIAQIBAT8ALv8A/8QAGxEAAgIDAQAAAAAAAAAAAAAAAREAEAIhMDH/2gAIAQMBAT8As4ke04yeZT1P/8QALxAAAgEDAwICCAcAAAAAAAAAAQIDABESBDFREyEFYRAUICIyQYGhBiNAUnGRwf/aAAgBAQABPwA9RpCEnUAH4cQSKFwBc3PPpdZC91kCrxjc/wB1ErrGolcSON2C43+lT6yeKeYRaK5W+LlW77d+w2qB2khR3XFmFyLbey8chYlZLC9BHAF2ueawbn71g3P3rBufvSggd6k/EGnj8T9TMbYiTpmTIdm22o6uzMDpdR2Nr4jv33qI9SNXKsmQvi24rEUkkbu6K12j+IcUuLqGU3B+dN4XoW13rjQKZwcr3Nr822vRVG3VTWRrI1l5CsvIU3iqDxRtMdE+GWBlPzPNuKgkvIyNp3hAJ95iLGx/2sRWIrEViKOnhM/WMS9T91EKd1U/Ssj5VkayNZH9HcXtfvx7CSI4JR1YA2Nje3o6f5vU8rU1gQxNgKd43t72x4NF1f3Q3f8Ag0kMcaMqIqht7C1zSrioHFf//gADAP/Z",
    "type": "video",
    "t": 1653394769,
    "notifyName": "苏畅",
    "from": "8613126768525@c.us",
    "to": "status@broadcast",
    "author": "8613126768525@c.us",
    "self": "in",
    "ack": 1,
    "isNewMsg": true,
    "star": false,
    "recvFresh": true,
    "caption": "我发的视频动态",
    "interactiveAnnotations": [],
    "deprecatedMms3Url": "https://mmg.whatsapp.net/d/f/Aiw_trp7HDul1ah_1fzyyWX-5asC270tjcnoKV0pinfI.enc",
    "directPath": "/v/t62.7161-24/17609980_1133776517478548_8959354155713027572_n.enc?ccb=11-4&oh=01_AVx9gn4G_0FPofSbhqo-5ppc7W0jqBiCBqysoO-chlnX1w&oe=62B39F91",
    "mimetype": "video/mp4",
    "duration": "18",
    "filehash": "DXgrZwEKqGCTxXwI8lHKCsUA6MCztYhAsCIeU/BlTK8=",
    "encFilehash": "MED6CWuG7lNLYPI/w1MHHfpbkBaXioZ442nXlYiO4nw=",
    "size": 2413418,
    "streamingSidecar": {},
    "mediaKey": "18MMiL/ifVtsvJ5j5Ropi5YMn1ua8Z+Ws3F09L6jHkc=",
    "mediaKeyTimestamp": 1653394762,
    "isViewOnce": false,
    "width": 400,
    "height": 848,
    "staticUrl": "",
    "isFromTemplate": false,
    "broadcast": false,
    "mentionedJidList": [],
    "isVcardOverMmsDocument": false,
    "isForwarded": false,
    "hasReaction": false,
    "productHeaderImageRejected": false,
    "lastPlaybackProgress": 0,
    "isDynamicReplyButtonsMsg": false,
    "isMdHistoryMsg": false,
    "requiresDirectConnection": false,
    "pttForwardedFeaturesEnabled": true,
    "isEphemeral": false,
    "isStatusV3": true,
    "links": []
  },
  "mediaKey": "18MMiL/ifVtsvJ5j5Ropi5YMn1ua8Z+Ws3F09L6jHkc=",
  "id": {
    "fromMe": true,
    "remote": "status@broadcast",
    "id": "3A56A5C434DC260F7960",
    "participant": "8613126768525@c.us",
    "_serialized": "true_status@broadcast_3A56A5C434DC260F7960_8613126768525@c.us"
  },
  "ack": 1,
  "hasMedia": true,
  "body": "我发的视频动态",
  "type": "video",
  "timestamp": 1653394769,
  "from": "8613126768525@c.us",
  "to": "status@broadcast",
  "author": "8613126768525@c.us",
  "deviceType": "ios",
  "isForwarded": false,
  "forwardingScore": 0,
  "isStatus": true,
  "isStarred": false,
  "broadcast": false,
  "fromMe": true,
  "hasQuotedMsg": false,
  "duration": "18",
  "vCards": [],
  "mentionedIds": [],
  "isGif": false,
  "isEphemeral": false,
  "links": []
}

示意图

image

su-chang commented 2 years ago

关于动态的回复

以引用消息的形式发送至对方。

bot无法回复自己发送的动态。

bot对他人动态的回复

{
  "_data": {
    "id": {
      "fromMe": true,
      "remote": "8613811254048@c.us",
      "id": "3A850D96A64F3C6DB2C8",
      "_serialized": "true_8613811254048@c.us_3A850D96A64F3C6DB2C8"
    },
    "body": "别烦别烦",
    "type": "chat",
    "t": 1653392634,
    "notifyName": "苏畅",
    "from": "8613126768525@c.us",
    "to": "8613811254048@c.us",
    "self": "in",
    "ack": 1,
    "isNewMsg": true,
    "star": false,
    "recvFresh": true,
    "isFromTemplate": false,
    "thumbnail": "",
    "broadcast": false,
    "quotedMsg": {
      "type": "chat",
      "body": "好烦呀",
      "thumbnail": "",
      "backgroundColor": 4287539263,
      "font": 0
    },
    "quotedStanzaID": "3A28CDB9BA235693F364",
    "quotedRemoteJid": "status@broadcast",
    "quotedParticipant": "8613811254048@c.us",
    "mentionedJidList": [],
    "isVcardOverMmsDocument": false,
    "hasReaction": false,
    "ephemeralOutOfSync": false,
    "productHeaderImageRejected": false,
    "lastPlaybackProgress": 0,
    "isDynamicReplyButtonsMsg": false,
    "isMdHistoryMsg": false,
    "requiresDirectConnection": false,
    "pttForwardedFeaturesEnabled": true,
    "isEphemeral": false,
    "isStatusV3": false,
    "links": []
  },
  "id": {
    "fromMe": true,
    "remote": "8613811254048@c.us",
    "id": "3A850D96A64F3C6DB2C8",
    "_serialized": "true_8613811254048@c.us_3A850D96A64F3C6DB2C8"
  },
  "ack": 1,
  "hasMedia": false,
  "body": "别烦别烦",
  "type": "chat",
  "timestamp": 1653392634,
  "from": "8613126768525@c.us",
  "to": "8613811254048@c.us",
  "deviceType": "ios",
  "forwardingScore": 0,
  "isStatus": false,
  "isStarred": false,
  "broadcast": false,
  "fromMe": true,
  "hasQuotedMsg": true,
  "vCards": [],
  "mentionedIds": [],
  "isGif": false,
  "isEphemeral": false,
  "links": []
}

他人对bot的动态回复

{
  "_data": {
    "id": {
      "fromMe": false,
      "remote": "8613811254048@c.us",
      "id": "3A4B7256DDE94DB2A7EA",
      "_serialized": "false_8613811254048@c.us_3A4B7256DDE94DB2A7EA"
    },
    "body": "这是啥",
    "type": "chat",
    "t": 1653392783,
    "notifyName": "测试9号",
    "from": "8613811254048@c.us",
    "to": "8613126768525@c.us",
    "self": "in",
    "ack": 1,
    "isNewMsg": true,
    "star": false,
    "recvFresh": true,
    "isFromTemplate": false,
    "thumbnail": "",
    "broadcast": false,
    "quotedMsg": {
      "type": "chat",
      "body": "新的动态",
      "thumbnail": "",
      "backgroundColor": 4285997368,
      "font": 2
    },
    "quotedStanzaID": "3A86D6CAAC444BAB2719",
    "quotedRemoteJid": "status@broadcast",
    "quotedParticipant": "8613126768525@c.us",
    "mentionedJidList": [],
    "isVcardOverMmsDocument": false,
    "hasReaction": false,
    "ephemeralOutOfSync": false,
    "productHeaderImageRejected": false,
    "lastPlaybackProgress": 0,
    "isDynamicReplyButtonsMsg": false,
    "isMdHistoryMsg": false,
    "requiresDirectConnection": false,
    "pttForwardedFeaturesEnabled": true,
    "isEphemeral": false,
    "isStatusV3": false,
    "links": []
  },
  "id": {
    "fromMe": false,
    "remote": "8613811254048@c.us",
    "id": "3A4B7256DDE94DB2A7EA",
    "_serialized": "false_8613811254048@c.us_3A4B7256DDE94DB2A7EA"
  },
  "ack": 1,
  "hasMedia": false,
  "body": "这是啥",
  "type": "chat",
  "timestamp": 1653392783,
  "from": "8613811254048@c.us",
  "to": "8613126768525@c.us",
  "deviceType": "ios",
  "forwardingScore": 0,
  "isStatus": false,
  "isStarred": false,
  "broadcast": false,
  "fromMe": false,
  "hasQuotedMsg": true,
  "vCards": [],
  "mentionedIds": [],
  "isGif": false,
  "isEphemeral": false,
  "links": []
}
su-chang commented 2 years ago

关于动态的撤回

新接收到的消息

{
  "_data": {
    "id": {
      "fromMe": true,
      "remote": "status@broadcast",
      "id": "3AFC180F08EBFF68DBFD",
      "participant": "8613126768525@c.us",
      "_serialized": "true_status@broadcast_3AFC180F08EBFF68DBFD_8613126768525@c.us"
    },
    "type": "revoked",
    "subtype": "sender",
    "t": 1653377488,
    "notifyName": "",
    "from": "8613126768525@c.us",
    "to": "status@broadcast",
    "author": "8613126768525@c.us",
    "self": "in",
    "ack": 1,
    "isNewMsg": true,
    "star": false,
    "recvFresh": true,
    "isFromTemplate": false,
    "broadcast": false,
    "isVcardOverMmsDocument": false,
    "revokeSender": "8613126768525@c.us",
    "backgroundColor": 4287391886,
    "font": 0,
    "isForwarded": false,
    "hasReaction": false,
    "productHeaderImageRejected": false,
    "lastPlaybackProgress": 0,
    "isDynamicReplyButtonsMsg": false,
    "isMdHistoryMsg": false,
    "requiresDirectConnection": false,
    "pttForwardedFeaturesEnabled": true,
    "isEphemeral": false,
    "isStatusV3": true,
    "links": []
  },
  "id": {
    "fromMe": true,
    "remote": "status@broadcast",
    "id": "3AFC180F08EBFF68DBFD",
    "participant": "8613126768525@c.us",
    "_serialized": "true_status@broadcast_3AFC180F08EBFF68DBFD_8613126768525@c.us"
  },
  "ack": 1,
  "hasMedia": false,
  "body": "",
  "type": "revoked",
  "timestamp": 1653377488,
  "from": "8613126768525@c.us",
  "to": "status@broadcast",
  "author": "8613126768525@c.us",
  "deviceType": "ios",
  "isForwarded": false,
  "forwardingScore": 0,
  "isStatus": true,
  "isStarred": false,
  "broadcast": false,
  "fromMe": true,
  "hasQuotedMsg": false,
  "vCards": [],
  "mentionedIds": [],
  "isGif": false,
  "isEphemeral": false,
  "links": []
}

原消息

{
  "_data": {
    "id": {
      "fromMe": true,
      "remote": "status@broadcast",
      "id": "3AFC180F08EBFF68DBFD",
      "participant": "8613126768525@c.us",
      "_serialized": "true_status@broadcast_3AFC180F08EBFF68DBFD_8613126768525@c.us"
    },
    "body": "这是一条动态消息",
    "type": "chat",
    "t": 1653377488,
    "notifyName": "",
    "from": "8613126768525@c.us",
    "to": "status@broadcast",
    "author": "8613126768525@c.us",
    "self": "in",
    "ack": 1,
    "isNewMsg": true,
    "star": false,
    "recvFresh": true,
    "isFromTemplate": false,
    "thumbnail": "",
    "broadcast": false,
    "mentionedJidList": [],
    "isVcardOverMmsDocument": false,
    "backgroundColor": 4287391886,
    "font": 0,
    "isForwarded": false,
    "hasReaction": false,
    "productHeaderImageRejected": false,
    "lastPlaybackProgress": 0,
    "isDynamicReplyButtonsMsg": false,
    "isMdHistoryMsg": false,
    "requiresDirectConnection": false,
    "pttForwardedFeaturesEnabled": true,
    "isEphemeral": false,
    "isStatusV3": true,
    "links": []
  },
  "id": {
    "fromMe": true,
    "remote": "status@broadcast",
    "id": "3AFC180F08EBFF68DBFD",
    "participant": "8613126768525@c.us",
    "_serialized": "true_status@broadcast_3AFC180F08EBFF68DBFD_8613126768525@c.us"
  },
  "ack": 1,
  "hasMedia": false,
  "body": "这是一条动态消息",
  "type": "chat",
  "timestamp": 1653377488,
  "from": "8613126768525@c.us",
  "to": "status@broadcast",
  "author": "8613126768525@c.us",
  "deviceType": "ios",
  "isForwarded": false,
  "forwardingScore": 0,
  "isStatus": true,
  "isStarred": false,
  "broadcast": false,
  "fromMe": true,
  "hasQuotedMsg": false,
  "vCards": [],
  "mentionedIds": [],
  "isGif": false,
  "isEphemeral": false,
  "links": []
}