我正在尝试构建一个聊天应用程序,只要用户的 Microsoft 状态发生变化,它就会改变它的在线状态。setPresence
当用户使用api在我的聊天应用程序上更改他的状态时,我也会做相反的事情。
所以我尝试订阅用户的存在。我收到了更改通知,它具有以下结构:
{
"value": [
{
"id": "lsgTZMr9KwAAA",
"subscriptionId":"{subscription_guid}",
"subscriptionExpirationDateTime":"2016-03-19T22:11:09.952Z",
"clientState":"secretClientValue",
"changeType":"created",
"resource":"users/{user_guid}@{tenant_guid}/messages/{long_id_string}",
"tenantId": "84bd8158-6d4d-4958-8b9f-9d6445542f95",
"resourceData":
{
"Availability":"Busy,
"Activity":"InACall"
"id":"{long_id_string}"
}
}
]
}
此更改通知包含用户可用性和活动,但未指定哪个应用触发了此状态更改。这将导致以下循环:
我的应用程序更改团队存在 -> 团队向我发送 webhook -> 我的应用程序更改团队存在,因为 webhook -> 团队向我发送了 webhook 等等。
如果两个应用程序具有相同的存在,一个简单的解决方法是不改变团队存在。但是我的应用程序没有针对团队中的每个存在值的一对一映射。因此,它可能会设置为我的应用程序的多个状态。所以当 away webhook 到达时,我不知道 away 是针对哪个状态发送的。此外,在我的应用程序中快速连续更改状态时,它不允许我准确验证两个应用程序状态是否同步。
是否有可能避免更改通知 webhook 中的此类循环?