设备元数据

作为转销商,您可以将元数据(例如电话号码或采购订单号)与每台设备相关联。您可以通过调用 API 或上传 CSV 文件 在零触摸门户中关联元数据。表 1 显示了哪些人可以关联和查看元数据:

表 1. 元数据权限

任务 转销商 客户
通过调用 API 关联元数据
通过将 CSV 文件上传到零触摸门户来关联元数据
在 API 调用结果中查看设备元数据
在零触摸门户中查看设备元数据

分配元数据

如需将元数据与每台设备相关联,请调用 partners.devices.metadata 方法。您可以使用下表 2 中的键为 Android 设备添加电话号码和订单号:

表 2. Android 设备的元数据键

数据 值类型 示例
电话号码 phonenumber 字符串 +1 (800) 555-0100
订单号 ordernumber 字符串 GOOG#123/ABC-123456

这两个元数据值都是自由格式的字符串,因此您可以使用对您的组织有意义的格式。

对于 ChromeOS 设备,您可以使用下表 3 中的键:

表 3. ChromeOS 设备的元数据键

数据 值类型 示例
订单号 ordernumber 字符串 GOOG#123/ABC-123456
资产 ID annotatedassetid 字符串 CORP-001234
位置 annotatedlocation 字符串 纽约
分配的用户 annotateduser 字符串 John Doe

如需在创建设备时分配元数据,请在调用 claimAsync时添加元数据。以下示例展示了如何为现有设备 TARGET_DEVICE_ID 设置电话号码和订单号:

Java

// Allowed metadata dictionary keys.
private static String METADATA_KEY_PHONE_NUMBER = "phonenumber";
private static String METADATA_KEY_ORDER_NUMBER = "ordernumber";

// ...
// Create the metadata record with the values.
DeviceMetadata metadata = new DeviceMetadata();
Map<String,String> entries = new HashMap<String, String>();
entries.put(METADATA_KEY_ORDER_NUMBER, "GOOG123/ABC-#123456");
entries.put(METADATA_KEY_PHONE_NUMBER, "+1 (800) 555-0100");
metadata.setEntries(entries);

// Set the metadata values on the target device.
UpdateDeviceMetadataRequest body = new UpdateDeviceMetadataRequest();
body.setDeviceMetadata(metadata);

DeviceMetadata response = service
        .partners()
        .devices()
        .metadata(PARTNER_ID, targetDeviceId, body)
        .execute();

.NET

// Allowed metadata dictionary keys.
private static string MetadataKeyPhoneNumber = "phonenumber";
private static string MetadataKeyOrderNumber = "ordernumber";

// ...
// Create the metadata record with the values.
DeviceMetadata metadata = new DeviceMetadata
{
    Entries = new Dictionary<string, string> {
        {MetadataKeyOrderNumber, "GOOG123/ABC-#123456"},
        {MetadataKeyPhoneNumber, "+1 (800) 555-0100"}
    }
};

// Set the metadata values on the target device.
UpdateDeviceMetadataRequest body = new UpdateDeviceMetadataRequest
{
    DeviceMetadata = metadata
};
var request = service.Partners.Devices.Metadata(body, PartnerId, targetDeviceId);
var results = request.Execute();

Python

# Allowed metadata dictionary keys.
METADATA_KEY_ENTRIES = "entries";
METADATA_KEY_PHONE_NUMBER = "phonenumber";
METADATA_KEY_ORDER_NUMBER = "ordernumber";

# ...
# Create the record with values.
new_metadata = {METADATA_KEY_ENTRIES:{ \
    METADATA_KEY_PHONE_NUMBER:'+1 (800) 555-0100', \
    METADATA_KEY_ORDER_NUMBER:'GOOG123/ABC-#123456'}}

# Set the metadata values on the target device.
response = service.partners().devices().metadata(
    metadataOwnerId=PARTNER_ID,
    deviceId=target_device_id,
    body={'deviceMetadata':new_metadata}).execute()

您的元数据实参会替换同一键的现有元数据值。

删除元数据

您可以从设备中删除元数据。对于要删除的元数据值,请传递空字符串。以下示例展示了如何删除电话号码:

Java

// Create the metadata record with the values.
DeviceMetadata metadata = new DeviceMetadata();
Map<String,String> entries = new HashMap<String, String>();
entries.put(METADATA_KEY_PHONE_NUMBER, "");
metadata.setEntries(entries);

// Call partners().devices().metadata() to remove the phone metadata from the device...

.NET

// Create the metadata record with empty values.
DeviceMetadata metadata = new DeviceMetadata
{
    Entries = new Dictionary<string, string> {
        {MetadataKeyPhoneNumber, ""}
    }
};

// Call Partners.Devices.Metadata to remove the phone metadata from the device...

Python

# Create the metadata record with empty values.
metadata_to_remove = {METADATA_KEY_ENTRIES: {METADATA_KEY_PHONE_NUMBER:''}}

# Call partners().devices().metadata() to remove the phone number
# metadata from the device...