Php 在RingCentral webhook中,有没有一种方法可以区分不同的事件过滤器?

Php 在RingCentral webhook中,有没有一种方法可以区分不同的事件过滤器?,php,webhooks,ringcentral,Php,Webhooks,Ringcentral,比如说 如果我想两者都听的话 'eventFilters' => array( "/restapi/v1.0/account/~/extension/~/presence?detailedTelephonyState=true&aggregate=true", "/restapi/v1.0/account/~/extension/~/message-store/instant?type=SMS" 如果我想过滤和分析这

比如说

如果我想两者都听的话

'eventFilters' => array(
                "/restapi/v1.0/account/~/extension/~/presence?detailedTelephonyState=true&aggregate=true",
                "/restapi/v1.0/account/~/extension/~/message-store/instant?type=SMS"
如果我想过滤和分析这两个事件,是否应该对来自RingCentral的每个post请求进行切换

开关($eventid){
案例“/restapi/v1.0/account//extension//presence?detailedTelephonyState=true&aggregate=true”
//过程数据
打破
}

但是webhook帖子有不同的扩展。有哪个事件被触发的标识符吗?

有几种方法可以解决您提出的问题

  • 如前所述,如果您有一个订阅,在多个扩展上有多个eventFilters,则过滤传入的
    webhook.event
    URI并匹配类型字符串可能是最快的,然后路由到特定的通知事件类型处理程序
  • 您最多可以在帐户中创建20个推送通知(订阅),每个推送通知(订阅)最多可以容纳1000个EventFilter。您可以为希望监视的六(6)种唯一通知事件类型中的任何一种创建单独的webhook。这样做还可以让您在运行时为扩展提供支持
  • 如果只注册了一个包含多个通知事件类型的订阅,则可以通过检查
    webhook.body
    是否具有所需的属性来使用[NotificationType.body架构()的duck类型
  • PHP中的数字3(未经测试的代码)

    JavaScript中的第3位(未经测试的代码)


    以Ben的第一种方法为基础:

    如前所述,如果您有一个订阅,在多个扩展上有多个eventFilters,则过滤传入的
    webhook.event
    URI并匹配类型字符串可能是最快的,然后路由到特定的通知事件类型处理程序

    webhook有效负载将如下所示。
    事件
    属性将指示正在触发的事件类型,您的应用程序可以使用该类型来启动差异化处理。我在下面使用了一个空的
    正文
    ,但在实际的帖子中,它将填充特定于该事件类型的正文

    {
        "uuid":"12345678901234567890",
        "event":"/restapi/v1.0/glip/posts",
        "timestamp":"2018-05-01T16:39:41.693Z",
        "subscriptionId":"11112222-3333-4444-5555-666677778888",
        "ownerId":"11111111",
        "body":{}
    }
    
    在中,我开始构建一个返回事件类型的函数,给定事件字符串:

    ParseEventTypeForFilter(eventFilter string) (EventType, error) {
    
    以下是事件类型列表:

    const(
        AccountPresenceEvent EventType = iota
        ContactDirectoryEvent
        DetailedExtensionPresenceEvent
        DetailedExtensionPresenceWithSIPEvent
        ExtensionFavoritesEvent
        ExtensionFavoritesPresenceEvent
        ExtensionGrantListEvent
        ExtensionListEvent
        ExtensionInfoEvent
        ExtensionPresenceEvent
        ExtensionPresenceLineEvent
        GlipGroupsEvent
        GlipPostEvent
        GlipUnreadMessageCountEvent
        InboundMessageEvent
        IncomingCallEvent
        InstantMessageEvent
        MessageEvent
        MissedCallEvent
        RCVideoNotificationsEvent
        SubscriptionRenewalEvent
    )
    
    代码:

    {
        "uuid":"12345678901234567890",
        "event":"/restapi/v1.0/glip/posts",
        "timestamp":"2018-05-01T16:39:41.693Z",
        "subscriptionId":"11112222-3333-4444-5555-666677778888",
        "ownerId":"11111111",
        "body":{}
    }
    
    ParseEventTypeForFilter(eventFilter string) (EventType, error) {
    
    const(
        AccountPresenceEvent EventType = iota
        ContactDirectoryEvent
        DetailedExtensionPresenceEvent
        DetailedExtensionPresenceWithSIPEvent
        ExtensionFavoritesEvent
        ExtensionFavoritesPresenceEvent
        ExtensionGrantListEvent
        ExtensionListEvent
        ExtensionInfoEvent
        ExtensionPresenceEvent
        ExtensionPresenceLineEvent
        GlipGroupsEvent
        GlipPostEvent
        GlipUnreadMessageCountEvent
        InboundMessageEvent
        IncomingCallEvent
        InstantMessageEvent
        MessageEvent
        MissedCallEvent
        RCVideoNotificationsEvent
        SubscriptionRenewalEvent
    )