文档首页/ 云客服/ API参考/ Adapter类接口参考/ 接口说明/ 数据访问接口/ facebook渠道/ 接收并处理facebook发送的上行消息接口
更新时间:2025-11-13 GMT+08:00

接收并处理facebook发送的上行消息接口

接口功能

接受并处理facebook发送的上行消息。

使用说明

  • 前提条件

    已通过鉴权,和ccmessaging对接成功。

  • 详见官方文档:https://developers.facebook.com/

接口鉴权

获取请求头X-Hub-Signature-XX 里面的鉴权字符串,将request里面的参数与渠道配置里的secretKey加密进行对比,相同鉴权通过。
        String algorithm = channelConfig.getAlgorithm();
        String signature = "";
        if (AlgorithmEnum.SHA256.getValue().equals(algorithm)) {
            String signatureHeader = request.getHeader("X-Hub-Signature-256");
            // 校验signatureHeaderSha256
            if (StringUtils.isTrimEmpty(signatureHeader)) {
                log.error("sha256 Signature from facebook is empty");
                return false;
            }
            signature = StringUtils.substringAfter(signatureHeader, "sha256=");
        } else {
            String signatureHeader = request.getHeader();
            // 校验signatureHeader
            if (StringUtils.isTrimEmpty(signatureHeader)) {
                log.error("sha1 Signature from facebook is empty");
                return false;
            }
            signature = StringUtils.substringAfter(signatureHeader, "sha1=");
        }
        String hash;
        try {
            hash = getSignatureByAlgorithm(payloadContent, secretKey, channelConfig.getAlgorithm());
        } catch (Exception e) {
            log.error("Fail to get the signature, and the exception is {}", e.getMessage());
            return false;
        }
        return StringUtils.equals(hash, signature);

sha1加密算法存在安全风险,请谨慎使用。

接口原型

表1 接口原型说明

请求方法

POST

请求URL

https://ip:port/social/on/facebook/{channelId}

其中,ip:port为对外暴露的nslb的ip和port,

channelId为渠道id

请求参数

表2 请求Headers参数说明

参数名称

选取原则

参数类型

说明

Content-Type

必选

String

固定填 application/json; charset=UTF-8。

X-Hub-Signature-XX

必选

String

facebook鉴权信息

表3 请求Body中request参数说明

参数名称

选取原则

参数类型

说明

object

必选

String

请求对象结构体

entry

必选

JSONArray

entry中包含事件数据,详情见表4

表4 entry参数说明

参数名称

选取原则

参数类型

说明

id

必选

String

page主页编号

time

必选

long

请求时间

messaging

必选

JSONArray

messaging webhook事件,详情见表5

表5 messaging参数说明

参数名称

选取原则

参数类型

说明

message

必选

JSONObject

事件内容,详见表6

sender

必选

JSONObject

发送者id,格式: {"id":"5465176836886605"}

timestamp

必选

Long

消息发送时间

recipient

必选

JSONObject

格式:{"id":"107416531546370"}

表6 message参数说明

参数名称

选取原则

参数类型

默认值

说明

mid

必选

String

消息id,messageId

text

必选

String

消息内容

响应参数

当调用本接口响应成功,无响应内容;

当调用本接口响应失败,响应错误状态码和错误描述。

接口示例

  • 请求示例
    POST /social/on/facebook/202108135240338790
    
    host : 10.10.10.2:28090
    connection : Keep-Alive
    x-forwarded-for : 10.10.10.3, 10.10.10.4
    x-real-ip : 10.10.10.5
    content-length : 314
    remote-host : 10.10.10.6
    accept : */*
    accept-encoding : deflate, gzip
    user-agent : facebookexternalua
    content-type : application/json
    x-hub-signature-256 : sha256=599c****************3bc
    facebook-api-version : v8.0
    
    {
    	"object" : "page",
    	"entry" : [{
    			"id" : "107416531546370",
    			"time" : 1629191082254,
    			"messaging" : [{
    					"sender" : {
    						"id" : "5465176836886605"
    					},
    					"recipient" : {
    						"id" : "107416531546370"
    					},
    					"timestamp" : 1629191082001,
    					"message" : {
    						"mid" : "m_5ugOgGm2v5x36EyvvInnNOwvV5bGYdVdhgz8VK0mdjnLC3qm8PfaQZdWwAsLOg8hiDIqmpkcYQtllLH_tDzl7A",
    						"text" : "jianlian"
    					}
    				}
    			]
    		}
    	]
    }