通过outlook.com联系人的microsoft graph api获取多个手机号码

时间:2017-12-29 16:38:16

标签: microsoft-graph

我试图通过

将我的outlook.com帐户中的所有联系人数据读入我的应用程序
https://graph.microsoft.com/beta/me/contacts?$top=10000
乍一看,这似乎运作良好,但后来我注意到了这一点:
对于具有多个移动电话号码的联系人,Microsoft仅发送第一个移动电话号码。

v1.0 api版本的图表中,第二个手机号码根本没有字段,但在beta api中,每个contact都有phones属性,这是一个集合phone resource type的对象。因此,应该可以获得多个手机号码。

这是API中的错误还是我做错了什么?是否有不同的API,它提供所有联系人数据?

编辑:

根据评论的要求:我的意思是多个手机号码: outlook.com with multiple mobile phones

1 个答案:

答案 0 :(得分:2)

看起来Graph不支持多个手机号码。在v1.0 API中,每个联系人都有一个mobilePhone字符串属性(不是数组)。在beta Graph API中,当您尝试向联系人添加多个移动电话号码时,会出现以下错误:

PATCH https://graph.microsoft.com/beta/me/contacts/{contact-id}
{
    "phones": [
        { "number": "1234567891", type: "home"},
        { "number": "9876543210", type: "mobile"},
        { "number": "4564564562", type: "mobile"}, // second mobile number
     ]
}


// Response

{
    "error": {
        "code": "ErrorInvalidProperty",
        "message": "The multi-value property Phones has too many entries of the following type: of type: contacts:PhoneNumber:MobilePhone. The maximum number allowed is 1.",
        "innerError": {
            "request-id": "578d85ba-e467-47a4-8cc1-5671fde4a83f",
            "date": "2017-12-29T20:07:46"
        }
    }
}

但是,当联系人有不同类型的号码时,您可以在一次通话中获取所有联系人的所有电话号码 - 家庭,移动等。我刚刚使用outlook.com帐户对此进行了测试,这里是设置多个API的API调用联系人的电话号码,并在一次API通话中获取所有电话号码。

我找到了一个随机联系人进行测试,复制了他们的ID并向PATCH提出https://graph.microsoft.com/beta/me/contacts/[contact-id]请求。

补丁体:

{
  "phones": [
     { "number": "1234567891", type: "home"},
     { "number": "9876543210", type: "mobile"},
   ]
}

为了确认手机实际上已更新,我向GET https://graph.microsoft.com/beta/me/contacts/[contact-id]/phones发送了一个请求,并在JSON响应中返回了两个电话号码。

由于联系人上没有电话属性,因此向v1.0端点发送此相同请求将不起作用。但是,您仍然可以在v1.0中获取此数据,因为它只是分割在多个字段中。

enter image description here

GET https://graph.microsoft.com/beta/me/contacts?$select=phones发送请求似乎会向所有用户返回电话。

enter image description here

beta API可能会发生变化,因此我们不建议构建依赖于此端点的生产应用程序。请密切注意public changelog何时移至v1.0。

如果您希望在图谱API中看到对多部手机的支持,请在我们的UserVoice上发帖。