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帖子有不同的扩展。有哪个事件被触发的标识符吗?有几种方法可以解决您提出的问题
webhook.event
URI并匹配类型字符串可能是最快的,然后路由到特定的通知事件类型处理程序webhook.body
是否具有所需的属性来使用[NotificationType.body架构()的duck类型以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
)